Skip to content

Commit 70bb43b

Browse files
authored
PYTHON-4334 Fix test_heartbeat_start_ordering, ensure TCPServer starts before client (#1599)
1 parent 5a0c81c commit 70bb43b

File tree

1 file changed

+12
-9
lines changed

1 file changed

+12
-9
lines changed

test/test_discovery_and_monitoring.py

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import sys
2121
import threading
2222

23-
from pymongo.monitoring import ServerHeartbeatFailedEvent, ServerHeartbeatStartedEvent
24-
2523
sys.path[0:0] = [""]
2624

2725
from test import IntegrationTest, unittest
@@ -52,6 +50,7 @@
5250
)
5351
from pymongo.hello import Hello, HelloCompat
5452
from pymongo.helpers import _check_command_response, _check_write_command_response
53+
from pymongo.monitoring import ServerHeartbeatFailedEvent, ServerHeartbeatStartedEvent
5554
from pymongo.server_description import SERVER_TYPE, ServerDescription
5655
from pymongo.settings import TopologySettings
5756
from pymongo.topology import Topology, _ErrorContext
@@ -408,17 +407,21 @@ def handle(self):
408407
self.request.close()
409408

410409

411-
class TestHeartbeatStartOrdering(unittest.TestCase):
412-
def start_server(self, events):
413-
server = socketserver.TCPServer(("localhost", 9999), MockTCPHandler)
414-
server.events = events
415-
server.handle_request()
416-
server.server_close()
410+
class TCPServer(socketserver.TCPServer):
411+
allow_reuse_address = True
417412

413+
def handle_request_and_shutdown(self):
414+
self.handle_request()
415+
self.server_close()
416+
417+
418+
class TestHeartbeatStartOrdering(unittest.TestCase):
418419
def test_heartbeat_start_ordering(self):
419420
events = []
420421
listener = HeartbeatEventsListListener(events)
421-
server_thread = threading.Thread(target=self.start_server, args=(events,))
422+
server = TCPServer(("localhost", 9999), MockTCPHandler)
423+
server.events = events
424+
server_thread = threading.Thread(target=server.handle_request_and_shutdown)
422425
server_thread.start()
423426
_c = MongoClient(
424427
"mongodb://localhost:9999", serverSelectionTimeoutMS=500, event_listeners=(listener,)

0 commit comments

Comments
 (0)