From 53545d0e04c45d622514bdf5feddaec405873ba5 Mon Sep 17 00:00:00 2001 From: Shane Harvey Date: Thu, 27 Feb 2025 14:53:14 -0800 Subject: [PATCH 1/2] PYTHON-5164 Fix mockupdb TestClusterTime --- test/mockupdb/test_cluster_time.py | 49 +++--------------------------- 1 file changed, 5 insertions(+), 44 deletions(-) diff --git a/test/mockupdb/test_cluster_time.py b/test/mockupdb/test_cluster_time.py index ea879b7ea3..544b4b5eb8 100644 --- a/test/mockupdb/test_cluster_time.py +++ b/test/mockupdb/test_cluster_time.py @@ -123,50 +123,11 @@ def test_monitor(self): client = self.simple_client(server.uri, heartbeatFrequencyMS=500) - request = server.receives("ismaster") - # No $clusterTime in first ismaster, only in subsequent ones - self.assertNotIn("$clusterTime", request) - request.ok(reply) - - # Next exchange: client returns first clusterTime, we send the second. - request = server.receives("ismaster") - self.assertIn("$clusterTime", request) - self.assertEqual(request["$clusterTime"]["clusterTime"], cluster_time) - cluster_time = Timestamp(cluster_time.time, cluster_time.inc + 1) - reply["$clusterTime"] = {"clusterTime": cluster_time} - request.reply(reply) - - # Third exchange: client returns second clusterTime. - request = server.receives("ismaster") - self.assertEqual(request["$clusterTime"]["clusterTime"], cluster_time) - - # Return command error with a new clusterTime. - cluster_time = Timestamp(cluster_time.time, cluster_time.inc + 1) - error = { - "ok": 0, - "code": 211, - "errmsg": "Cache Reader No keys found for HMAC ...", - "$clusterTime": {"clusterTime": cluster_time}, - } - request.reply(error) - - # PyMongo 3.11+ closes the monitoring connection on command errors. - - # Fourth exchange: the Monitor closes the connection and runs the - # handshake on a new connection. - request = server.receives("ismaster") - # No $clusterTime in first ismaster, only in subsequent ones - self.assertNotIn("$clusterTime", request) - - # Reply without $clusterTime. - reply.pop("$clusterTime") - request.reply(reply) - - # Fifth exchange: the Monitor attempt uses the clusterTime from - # the previous isMaster error. - request = server.receives("ismaster") - self.assertEqual(request["$clusterTime"]["clusterTime"], cluster_time) - request.reply(reply) + for _ in range(3): + request = server.receives("ismaster") + # No $clusterTime heartbeats or handshakes. + self.assertNotIn("$clusterTime", request) + request.ok(reply) client.close() def test_collection_bulk_error(self): From cf7fd9ae0fbdc6c1658b838542a7e33bd85f8042 Mon Sep 17 00:00:00 2001 From: Shane Harvey Date: Fri, 28 Feb 2025 14:17:54 -0800 Subject: [PATCH 2/2] PYTHON-5164 Fix grammar --- test/mockupdb/test_cluster_time.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/mockupdb/test_cluster_time.py b/test/mockupdb/test_cluster_time.py index 544b4b5eb8..42ca916971 100644 --- a/test/mockupdb/test_cluster_time.py +++ b/test/mockupdb/test_cluster_time.py @@ -125,7 +125,7 @@ def test_monitor(self): for _ in range(3): request = server.receives("ismaster") - # No $clusterTime heartbeats or handshakes. + # No $clusterTime in heartbeats or handshakes. self.assertNotIn("$clusterTime", request) request.ok(reply) client.close()