Merge branch 'master' of github.com:mongodb/mongo-python-driver

This commit is contained in:
Steven Silvester 2025-08-18 15:49:07 -05:00
commit 1754bbeb90
No known key found for this signature in database
GPG Key ID: B1BF5EC3A8B32F91
3 changed files with 57 additions and 18 deletions

View File

@ -386,8 +386,13 @@ class PoolOptions:
def _update_metadata(self, driver: DriverInfo) -> None:
"""Updates the client's metadata"""
if driver.name and driver.name.lower() in self.__metadata["driver"]["name"].lower().split(
"|"
):
return
metadata = copy.deepcopy(self.__metadata)
if driver.name:
metadata["driver"]["name"] = "{}|{}".format(
metadata["driver"]["name"],

View File

@ -107,15 +107,20 @@ class TestClientMetadataProse(AsyncIntegrationTest):
new_name, new_version, new_platform, new_metadata = await self.send_ping_and_get_metadata(
client, True
)
self.assertEqual(new_name, f"{name}|{add_name}" if add_name is not None else name)
self.assertEqual(
new_version,
f"{version}|{add_version}" if add_version is not None else version,
)
self.assertEqual(
new_platform,
f"{platform}|{add_platform}" if add_platform is not None else platform,
)
if add_name is not None and add_name.lower() in name.lower().split("|"):
self.assertEqual(name, new_name)
self.assertEqual(version, new_version)
self.assertEqual(platform, new_platform)
else:
self.assertEqual(new_name, f"{name}|{add_name}" if add_name is not None else name)
self.assertEqual(
new_version,
f"{version}|{add_version}" if add_version is not None else version,
)
self.assertEqual(
new_platform,
f"{platform}|{add_platform}" if add_platform is not None else platform,
)
metadata.pop("driver")
metadata.pop("platform")
@ -210,6 +215,18 @@ class TestClientMetadataProse(AsyncIntegrationTest):
self.assertIsNone(self.handshake_req)
self.assertEqual(listener.event_count(ConnectionClosedEvent), 0)
async def test_duplicate_driver_name_no_op(self):
client = await self.async_rs_or_single_client(
"mongodb://" + self.server.address_string,
maxIdleTimeMS=1,
)
client.append_metadata(DriverInfo("library", "1.2", "Library Platform"))
await self.check_metadata_added(client, "framework", None, None)
# wait for connection to become idle
await asyncio.sleep(0.005)
# add same metadata again
await self.check_metadata_added(client, "Framework", None, None)
if __name__ == "__main__":
unittest.main()

View File

@ -107,15 +107,20 @@ class TestClientMetadataProse(IntegrationTest):
new_name, new_version, new_platform, new_metadata = self.send_ping_and_get_metadata(
client, True
)
self.assertEqual(new_name, f"{name}|{add_name}" if add_name is not None else name)
self.assertEqual(
new_version,
f"{version}|{add_version}" if add_version is not None else version,
)
self.assertEqual(
new_platform,
f"{platform}|{add_platform}" if add_platform is not None else platform,
)
if add_name is not None and add_name.lower() in name.lower().split("|"):
self.assertEqual(name, new_name)
self.assertEqual(version, new_version)
self.assertEqual(platform, new_platform)
else:
self.assertEqual(new_name, f"{name}|{add_name}" if add_name is not None else name)
self.assertEqual(
new_version,
f"{version}|{add_version}" if add_version is not None else version,
)
self.assertEqual(
new_platform,
f"{platform}|{add_platform}" if add_platform is not None else platform,
)
metadata.pop("driver")
metadata.pop("platform")
@ -210,6 +215,18 @@ class TestClientMetadataProse(IntegrationTest):
self.assertIsNone(self.handshake_req)
self.assertEqual(listener.event_count(ConnectionClosedEvent), 0)
def test_duplicate_driver_name_no_op(self):
client = self.rs_or_single_client(
"mongodb://" + self.server.address_string,
maxIdleTimeMS=1,
)
client.append_metadata(DriverInfo("library", "1.2", "Library Platform"))
self.check_metadata_added(client, "framework", None, None)
# wait for connection to become idle
time.sleep(0.005)
# add same metadata again
self.check_metadata_added(client, "Framework", None, None)
if __name__ == "__main__":
unittest.main()