Skip to content

Commit 21c4eef

Browse files
committed
add another test
1 parent f9a097a commit 21c4eef

File tree

1 file changed

+75
-1
lines changed

1 file changed

+75
-1
lines changed

test/mockupdb/test_client_metadata.py

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def check_metadata_added(
8484
# make sure new metadata is being sent
8585
self.handshake_req = None
8686
client.admin.command("ping")
87-
# self.assertIsNotNone(self.handshake_req)
87+
assert self.handshake_req is not None
8888
new_metadata = _get_handshake_driver_info(self.handshake_req)
8989

9090
self.assertEqual(
@@ -154,6 +154,80 @@ def test_doesnt_update_established_connections(self):
154154

155155
client.close()
156156

157+
def test_append_metadata_multiple_times(self):
158+
client = MongoClient(
159+
"mongodb://" + self.server.address_string,
160+
maxIdleTimeMS=1,
161+
driver=DriverInfo("library", "1.2", "Library Platform"),
162+
)
163+
164+
# send initial metadata
165+
client.admin.command("ping")
166+
metadata = _get_handshake_driver_info(self.handshake_req)
167+
driver_metadata = metadata["driver"]
168+
name, version, platform = (
169+
driver_metadata["name"],
170+
driver_metadata["version"],
171+
metadata["platform"],
172+
)
173+
time.sleep(0.005)
174+
175+
# add data
176+
add_name, add_version, add_platform = "framework", "2.0", "Framework Platform"
177+
client._append_metadata(DriverInfo(add_name, add_version, add_platform))
178+
# make sure new metadata is being sent
179+
self.handshake_req = None
180+
client.admin.command("ping")
181+
assert self.handshake_req is not None
182+
new_metadata = _get_handshake_driver_info(self.handshake_req)
183+
184+
self.assertEqual(
185+
new_metadata["driver"]["name"], f"{name}|{add_name}" if add_name is not None else name
186+
)
187+
self.assertEqual(
188+
new_metadata["driver"]["version"],
189+
f"{version}|{add_version}" if add_version is not None else version,
190+
)
191+
self.assertEqual(
192+
new_metadata["platform"],
193+
f"{platform}|{add_platform}" if add_platform is not None else platform,
194+
)
195+
196+
metadata.pop("driver")
197+
metadata.pop("platform")
198+
new_metadata.pop("driver")
199+
new_metadata.pop("platform")
200+
self.assertEqual(metadata, new_metadata)
201+
time.sleep(0.005)
202+
203+
# add data again
204+
add_name2, add_version2, add_platform2 = "framework2", "3.0", "Framework Platform2"
205+
client._append_metadata(DriverInfo(add_name2, add_version2, add_platform2))
206+
# make sure new metadata is being sent
207+
self.handshake_req = None
208+
client.admin.command("ping")
209+
assert self.handshake_req is not None
210+
new_metadata2 = _get_handshake_driver_info(self.handshake_req)
211+
212+
self.assertEqual(
213+
new_metadata2["driver"]["name"],
214+
f"{name}|{add_name}|{add_name2}" if add_name2 is not None else name,
215+
)
216+
self.assertEqual(
217+
new_metadata2["driver"]["version"],
218+
f"{version}|{add_version}|{add_version2}" if add_version2 is not None else version,
219+
)
220+
self.assertEqual(
221+
new_metadata2["platform"],
222+
f"{platform}|{add_platform}|{add_platform2}" if add_platform2 is not None else platform,
223+
)
224+
225+
new_metadata2.pop("driver")
226+
new_metadata2.pop("platform")
227+
self.assertEqual(metadata, new_metadata2)
228+
229+
client.close()
230+
157231

158232
if __name__ == "__main__":
159233
unittest.main()

0 commit comments

Comments
 (0)