~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_http.py

  • Committer: Robert Collins
  • Date: 2009-08-27 22:17:35 UTC
  • mto: This revision was merged to the branch mainline in revision 4663.
  • Revision ID: robertc@robertcollins.net-20090827221735-dck1jb1uhktda57h
Refactor creation and shutdown of test servers to use a common helper,
reducing duplicated code, fixing a number of small race conditions where
servers may not get shut down and making tests that use such servers a
little easier to read.

Show diffs side-by-side

added added

removed removed

Lines of Context:
304
304
 
305
305
        server = http_server.HttpServer(BogusRequestHandler)
306
306
        try:
307
 
            self.assertRaises(httplib.UnknownProtocol,server.setUp)
 
307
            self.assertRaises(httplib.UnknownProtocol, server.setUp)
308
308
        except:
309
309
            server.tearDown()
310
310
            self.fail('HTTP Server creation did not raise UnknownProtocol')
312
312
    def test_force_invalid_protocol(self):
313
313
        server = http_server.HttpServer(protocol_version='HTTP/0.1')
314
314
        try:
315
 
            self.assertRaises(httplib.UnknownProtocol,server.setUp)
 
315
            self.assertRaises(httplib.UnknownProtocol, server.setUp)
316
316
        except:
317
317
            server.tearDown()
318
318
            self.fail('HTTP Server creation did not raise UnknownProtocol')
320
320
    def test_server_start_and_stop(self):
321
321
        server = http_server.HttpServer()
322
322
        server.setUp()
323
 
        self.assertTrue(server._http_running)
324
 
        server.tearDown()
 
323
        try:
 
324
            self.assertTrue(server._http_running)
 
325
        finally:
 
326
            server.tearDown()
325
327
        self.assertFalse(server._http_running)
326
328
 
327
329
    def test_create_http_server_one_zero(self):
330
332
            protocol_version = 'HTTP/1.0'
331
333
 
332
334
        server = http_server.HttpServer(RequestHandlerOneZero)
333
 
        server.setUp()
334
 
        self.addCleanup(server.tearDown)
 
335
        self.start_server(server)
335
336
        self.assertIsInstance(server._httpd, http_server.TestingHTTPServer)
336
337
 
337
338
    def test_create_http_server_one_one(self):
340
341
            protocol_version = 'HTTP/1.1'
341
342
 
342
343
        server = http_server.HttpServer(RequestHandlerOneOne)
343
 
        server.setUp()
344
 
        self.addCleanup(server.tearDown)
 
344
        self.start_server(server)
345
345
        self.assertIsInstance(server._httpd,
346
346
                              http_server.TestingThreadingHTTPServer)
347
347
 
352
352
 
353
353
        server = http_server.HttpServer(RequestHandlerOneZero,
354
354
                                        protocol_version='HTTP/1.1')
355
 
        server.setUp()
356
 
        self.addCleanup(server.tearDown)
 
355
        self.start_server(server)
357
356
        self.assertIsInstance(server._httpd,
358
357
                              http_server.TestingThreadingHTTPServer)
359
358
 
364
363
 
365
364
        server = http_server.HttpServer(RequestHandlerOneOne,
366
365
                                        protocol_version='HTTP/1.0')
367
 
        server.setUp()
368
 
        self.addCleanup(server.tearDown)
 
366
        self.start_server(server)
369
367
        self.assertIsInstance(server._httpd,
370
368
                              http_server.TestingHTTPServer)
371
369
 
431
429
    def test_http_impl_urls(self):
432
430
        """There are servers which ask for particular clients to connect"""
433
431
        server = self._server()
 
432
        server.setUp()
434
433
        try:
435
 
            server.setUp()
436
434
            url = server.get_url()
437
435
            self.assertTrue(url.startswith('%s://' % self._qualified_prefix))
438
436
        finally:
544
542
 
545
543
    def test_post_body_is_received(self):
546
544
        server = RecordingServer(expect_body_tail='end-of-body')
547
 
        server.setUp()
548
 
        self.addCleanup(server.tearDown)
 
545
        self.start_server(server)
549
546
        scheme = self._qualified_prefix
550
547
        url = '%s://%s:%s/' % (scheme, server.host, server.port)
551
548
        http_transport = self._transport(url)
780
777
 
781
778
    def test_send_receive_bytes(self):
782
779
        server = RecordingServer(expect_body_tail='c')
783
 
        server.setUp()
784
 
        self.addCleanup(server.tearDown)
 
780
        self.start_server(server)
785
781
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
786
782
        sock.connect((server.host, server.port))
787
783
        sock.sendall('abc')