PYTHON-4334 Fix test_heartbeat_start_ordering, ensure TCPServer starts before client (#1599)

This commit is contained in:
Shane Harvey 2024-04-16 16:18:10 -07:00 committed by GitHub
parent 5a0c81c00c
commit 70bb43b30b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -20,8 +20,6 @@ import socketserver
import sys
import threading
from pymongo.monitoring import ServerHeartbeatFailedEvent, ServerHeartbeatStartedEvent
sys.path[0:0] = [""]
from test import IntegrationTest, unittest
@ -52,6 +50,7 @@ from pymongo.errors import (
)
from pymongo.hello import Hello, HelloCompat
from pymongo.helpers import _check_command_response, _check_write_command_response
from pymongo.monitoring import ServerHeartbeatFailedEvent, ServerHeartbeatStartedEvent
from pymongo.server_description import SERVER_TYPE, ServerDescription
from pymongo.settings import TopologySettings
from pymongo.topology import Topology, _ErrorContext
@ -408,17 +407,21 @@ class MockTCPHandler(socketserver.BaseRequestHandler):
self.request.close()
class TestHeartbeatStartOrdering(unittest.TestCase):
def start_server(self, events):
server = socketserver.TCPServer(("localhost", 9999), MockTCPHandler)
server.events = events
server.handle_request()
server.server_close()
class TCPServer(socketserver.TCPServer):
allow_reuse_address = True
def handle_request_and_shutdown(self):
self.handle_request()
self.server_close()
class TestHeartbeatStartOrdering(unittest.TestCase):
def test_heartbeat_start_ordering(self):
events = []
listener = HeartbeatEventsListListener(events)
server_thread = threading.Thread(target=self.start_server, args=(events,))
server = TCPServer(("localhost", 9999), MockTCPHandler)
server.events = events
server_thread = threading.Thread(target=server.handle_request_and_shutdown)
server_thread.start()
_c = MongoClient(
"mongodb://localhost:9999", serverSelectionTimeoutMS=500, event_listeners=(listener,)