Issue #26309: Rewrite test in main thread and avoid race condition
This commit is contained in:
parent
3fe64d0c5c
commit
4bf427495f
|
@ -280,30 +280,6 @@ class SocketServerTest(unittest.TestCase):
|
||||||
socketserver.TCPServer((HOST, -1),
|
socketserver.TCPServer((HOST, -1),
|
||||||
socketserver.StreamRequestHandler)
|
socketserver.StreamRequestHandler)
|
||||||
|
|
||||||
def test_shutdown_request_called_if_verify_request_false(self):
|
|
||||||
# Issue #26309: BaseServer should call shutdown_request even if
|
|
||||||
# verify_request is False
|
|
||||||
shutdown_called = False
|
|
||||||
|
|
||||||
class MyServer(socketserver.TCPServer):
|
|
||||||
def verify_request(self, request, client_address):
|
|
||||||
return False
|
|
||||||
|
|
||||||
def shutdown_request(self, request):
|
|
||||||
nonlocal shutdown_called
|
|
||||||
shutdown_called = True
|
|
||||||
super().shutdown_request(request)
|
|
||||||
|
|
||||||
def connect_to_server(proto, addr):
|
|
||||||
s = socket.socket(proto, socket.SOCK_STREAM)
|
|
||||||
s.connect(addr)
|
|
||||||
s.close()
|
|
||||||
|
|
||||||
self.run_server(MyServer,
|
|
||||||
socketserver.StreamRequestHandler,
|
|
||||||
connect_to_server)
|
|
||||||
self.assertEqual(shutdown_called, True)
|
|
||||||
|
|
||||||
|
|
||||||
class MiscTestCase(unittest.TestCase):
|
class MiscTestCase(unittest.TestCase):
|
||||||
|
|
||||||
|
@ -317,6 +293,27 @@ class MiscTestCase(unittest.TestCase):
|
||||||
expected.append(name)
|
expected.append(name)
|
||||||
self.assertCountEqual(socketserver.__all__, expected)
|
self.assertCountEqual(socketserver.__all__, expected)
|
||||||
|
|
||||||
|
def test_shutdown_request_called_if_verify_request_false(self):
|
||||||
|
# Issue #26309: BaseServer should call shutdown_request even if
|
||||||
|
# verify_request is False
|
||||||
|
|
||||||
|
class MyServer(socketserver.TCPServer):
|
||||||
|
def verify_request(self, request, client_address):
|
||||||
|
return False
|
||||||
|
|
||||||
|
shutdown_called = 0
|
||||||
|
def shutdown_request(self, request):
|
||||||
|
self.shutdown_called += 1
|
||||||
|
socketserver.TCPServer.shutdown_request(self, request)
|
||||||
|
|
||||||
|
server = MyServer((HOST, 0), socketserver.StreamRequestHandler)
|
||||||
|
s = socket.socket(server.address_family, socket.SOCK_STREAM)
|
||||||
|
s.connect(server.server_address)
|
||||||
|
s.close()
|
||||||
|
server.handle_request()
|
||||||
|
self.assertEqual(server.shutdown_called, 1)
|
||||||
|
server.server_close()
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Loading…
Reference in New Issue