| 81 | |
| 82 | |
| 83 | class TestServerThread(threading.Thread): |
| 84 | def __init__(self, test_object, request_handler, tls=None): |
| 85 | threading.Thread.__init__(self) |
| 86 | self.request_handler = request_handler |
| 87 | self.test_object = test_object |
| 88 | self.tls = tls |
| 89 | |
| 90 | def run(self): |
| 91 | if self.tls: |
| 92 | certfile, keyfile, password = self.tls |
| 93 | self.server = create_https_server( |
| 94 | certfile, keyfile, password, |
| 95 | request_handler=self.request_handler, |
| 96 | ) |
| 97 | else: |
| 98 | self.server = HTTPServer(('localhost', 0), self.request_handler) |
| 99 | self.test_object.HOST, self.test_object.PORT = self.server.socket.getsockname() |
| 100 | self.test_object.server_started.set() |
| 101 | self.test_object = None |
| 102 | try: |
| 103 | self.server.serve_forever(0.05) |
| 104 | finally: |
| 105 | self.server.server_close() |
| 106 | |
| 107 | def stop(self): |
| 108 | self.server.shutdown() |
| 109 | self.join() |
| 110 | |
| 111 | |
| 112 | class BaseTestCase(unittest.TestCase): |