~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/http_server.py

  • Committer: John Arbash Meinel
  • Date: 2009-03-06 20:42:40 UTC
  • mto: This revision was merged to the branch mainline in revision 4088.
  • Revision ID: john@arbash-meinel.com-20090306204240-mzjavv31z3gu1x7i
Fix a small bug in setup.py when an extension fails to build

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
import errno
18
18
import httplib
318
318
        self.test_case_server = test_case_server
319
319
        self._home_dir = test_case_server._home_dir
320
320
 
321
 
    def stop_server(self):
 
321
    def tearDown(self):
322
322
         """Called to clean-up the server.
323
323
 
324
324
         Since the server may be (surely is, even) in a blocking listen, we
347
347
             # 'Socket is not connected' can also occur on OSX, with a
348
348
             # "regular" ENOTCONN (when something went wrong during test case
349
349
             # setup leading to self.setUp() *not* being called but
350
 
             # self.stop_server() still being called -- vila20081106
 
350
             # self.tearDown() still being called -- vila20081106
351
351
             if not len(e.args) or e.args[0] not in (errno.ENOTCONN, 10057):
352
352
                 raise
353
353
         # Let the server properly close the socket
382
382
        # lying around.
383
383
        self.daemon_threads = True
384
384
 
385
 
    def process_request_thread(self, request, client_address):
386
 
        SocketServer.ThreadingTCPServer.process_request_thread(
387
 
            self, request, client_address)
388
 
        # Under some circumstances (as in bug #383920), we need to force the
389
 
        # shutdown as python delays it until gc occur otherwise and the client
390
 
        # may hang.
391
 
        try:
392
 
            # The request process has been completed, the thread is about to
393
 
            # die, let's shutdown the socket if we can.
394
 
            request.shutdown(socket.SHUT_RDWR)
395
 
        except (socket.error, select.error), e:
396
 
            if e[0] in (errno.EBADF, errno.ENOTCONN):
397
 
                # Right, the socket is already down
398
 
                pass
399
 
            else:
400
 
                raise
401
 
 
402
385
 
403
386
class HttpServer(transport.Server):
404
387
    """A test server for http transports.
462
445
                raise httplib.UnknownProtocol(proto_vers)
463
446
            else:
464
447
                self._httpd = self.create_httpd(serv_cls, rhandler)
465
 
            self.host, self.port = self._httpd.socket.getsockname()
 
448
            host, self.port = self._httpd.socket.getsockname()
466
449
        return self._httpd
467
450
 
468
451
    def _http_start(self):
494
477
            except socket.timeout:
495
478
                pass
496
479
            except (socket.error, select.error), e:
497
 
                if (e[0] == errno.EBADF
498
 
                    or (sys.platform == 'win32' and e[0] == 10038)):
499
 
                    # Starting with python-2.6, handle_request may raise socket
500
 
                    # or select exceptions when the server is shut down (as we
501
 
                    # do).
502
 
                    # 10038 = WSAENOTSOCK
503
 
                    # http://msdn.microsoft.com/en-us/library/ms740668%28VS.85%29.aspx
504
 
                    pass
505
 
                else:
506
 
                    raise
 
480
               if e[0] == errno.EBADF:
 
481
                   # Starting with python-2.6, handle_request may raise socket
 
482
                   # or select exceptions when the server is shut down (as we
 
483
                   # do).
 
484
                   pass
 
485
               else:
 
486
                   raise
507
487
 
508
488
    def _get_remote_url(self, path):
509
489
        path_parts = path.split(os.path.sep)
521
501
        """Capture Server log output."""
522
502
        self.logs.append(format % args)
523
503
 
524
 
    def start_server(self, backing_transport_server=None):
525
 
        """See bzrlib.transport.Server.start_server.
 
504
    def setUp(self, backing_transport_server=None):
 
505
        """See bzrlib.transport.Server.setUp.
526
506
 
527
507
        :param backing_transport_server: The transport that requests over this
528
508
            protocol should be forwarded to. Note that this is currently not
557
537
        self._http_starting.release()
558
538
        self.logs = []
559
539
 
560
 
    def stop_server(self):
561
 
        self._httpd.stop_server()
 
540
    def tearDown(self):
 
541
        """See bzrlib.transport.Server.tearDown."""
 
542
        self._httpd.tearDown()
562
543
        self._http_running = False
563
544
        # We don't need to 'self._http_thread.join()' here since the thread is
564
545
        # a daemonic one and will be garbage collected anyway. Joining just