Skip to content

Commit

Permalink
PYTHON-1714 Add c extension use to client metadata
Browse files Browse the repository at this point in the history
- Fix tests
  - Truncate long lines
  - Test c extension driver info
  • Loading branch information
aclark4life committed Sep 24, 2024
1 parent 35c7f49 commit ef37c3e
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 13 deletions.
31 changes: 24 additions & 7 deletions test/asynchronous/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -348,18 +348,23 @@ def _test_metadata(self, add_meta, *args, **kwargs):
metadata.update(add_meta)
client = self.simple_client(*args, **kwargs)
options = client.options
self.assertIn(metadata["driver"]["name"], options.pool_options.metadata["driver"]["name"])
self.assertIn(metadata["driver"]["name"],
options.pool_options.metadata["driver"]["name"])
if "application" in metadata.keys():
self.assertEqual(metadata["application"]["name"], options.pool_options.metadata["application"]["name"])
self.assertEqual(metadata["application"]["name"],
options.pool_options.metadata["application"]["name"])

self.assertLessEqual(
len(bson.encode(options.pool_options.metadata)),
_MAX_METADATA_SIZE,
)

async def test_metadata(self):
self._test_metadata({"driver": {"name": "async"}, "application": {"name": "foobar"}}, "mongodb://foo:27017/?appname=foobar&connect=false")
self._test_metadata({"driver": {"name": "async"}}, "foo", 27017, appname="foobar", connect=False)
self._test_metadata({"driver": {"name": "async"},
"application": {"name": "foobar"}},
"mongodb://foo:27017/?appname=foobar&connect=false")
self._test_metadata({"driver": {"name": "async"}}, "foo", 27017,
appname="foobar", connect=False)

# No error
self._test_metadata({}, appname="x" * 128)
Expand All @@ -380,12 +385,24 @@ async def test_metadata(self):
self._test_metadata({}, driver=("Foo", "1", "a"))

# Test appending to driver info.
self._test_metadata({"driver": {"name": "FooDriver", "version": "{}|1.2.3".format(_METADATA["driver"]["version"])}}, "foo", 27017, appname="foobar", driver=DriverInfo("FooDriver", "1.2.3", None), connect=False)
self._test_metadata({"platform": "{}|FooPlatform".format(_METADATA["platform"])}, "foo", 27017, appname="foobar", driver=DriverInfo("FooDriver", "1.2.3", "FooPlatform"), connect=False)
self._test_metadata({"driver":
{"name": "FooDriver",
"version": "{}|1.2.3".format(_METADATA["driver"]["version"])}},
"foo", 27017, appname="foobar",
driver=DriverInfo("FooDriver", "1.2.3", None),
connect=False)
self._test_metadata({"platform": "{}|FooPlatform".format(_METADATA["platform"])},
"foo", 27017, appname="foobar",
driver=DriverInfo("FooDriver","1.2.3", "FooPlatform"), connect=False)

# Test truncating driver info metadata.
self._test_metadata({}, driver=DriverInfo(name="s" * _MAX_METADATA_SIZE), connect=False)
self._test_metadata({}, driver=DriverInfo(name="s" * _MAX_METADATA_SIZE, version="s" * _MAX_METADATA_SIZE), connect=False)
self._test_metadata({}, driver=DriverInfo(name="s" * _MAX_METADATA_SIZE,
version="s" * _MAX_METADATA_SIZE), connect=False)

# Test C extension in driver info.
if pymongo.has_c():
self._test_metadata({"driver": {"name": "c"}})

@mock.patch.dict("os.environ", {ENV_VAR_K8S: "1"})
def test_container_metadata(self):
Expand Down
26 changes: 20 additions & 6 deletions test/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -341,16 +341,19 @@ def _test_metadata(self, add_meta, *args, **kwargs):
options = client.options
self.assertIn(metadata["driver"]["name"], options.pool_options.metadata["driver"]["name"])
if "application" in metadata.keys():
self.assertEqual(metadata["application"]["name"], options.pool_options.metadata["application"]["name"])
self.assertEqual(metadata["application"]["name"],
options.pool_options.metadata["application"]["name"])

self.assertLessEqual(
len(bson.encode(options.pool_options.metadata)),
_MAX_METADATA_SIZE,
)

def test_metadata(self):
self._test_metadata({"driver": {"name": "PyMongo"}, "application": {"name": "foobar"}}, "mongodb://foo:27017/?appname=foobar&connect=false")
self._test_metadata({"driver": {"name": "PyMongo"}}, "foo", 27017, appname="foobar", connect=False)
self._test_metadata({"driver": {"name": "PyMongo"}, "application": {"name": "foobar"}},
"mongodb://foo:27017/?appname=foobar&connect=false")
self._test_metadata({"driver": {"name": "PyMongo"}}, "foo", 27017, appname="foobar",
connect=False)

# No error
self._test_metadata({}, appname="x" * 128)
Expand All @@ -371,12 +374,23 @@ def test_metadata(self):
self._test_metadata({}, driver=("Foo", "1", "a"))

# Test appending to driver info.
self._test_metadata({"driver": {"name": "FooDriver", "version": "{}|1.2.3".format(_METADATA["driver"]["version"])}}, "foo", 27017, appname="foobar", driver=DriverInfo("FooDriver", "1.2.3", None), connect=False)
self._test_metadata({"platform": "{}|FooPlatform".format(_METADATA["platform"])}, "foo", 27017, appname="foobar", driver=DriverInfo("FooDriver", "1.2.3", "FooPlatform"), connect=False)
self._test_metadata({"driver":
{"name": "FooDriver",
"version": "{}|1.2.3".format(_METADATA["driver"]["version"])}},
"foo", 27017, appname="foobar",
driver=DriverInfo("FooDriver","1.2.3", None), connect=False)
self._test_metadata({"platform": "{}|FooPlatform".format(_METADATA["platform"])},
"foo", 27017, appname="foobar",
driver=DriverInfo("FooDriver", "1.2.3", "FooPlatform"),
connect=False)

# Test truncating driver info metadata.
self._test_metadata({}, driver=DriverInfo(name="s" * _MAX_METADATA_SIZE), connect=False)
self._test_metadata({}, driver=DriverInfo(name="s" * _MAX_METADATA_SIZE, version="s" * _MAX_METADATA_SIZE), connect=False)
self._test_metadata({}, driver=DriverInfo(name="s" * _MAX_METADATA_SIZE,
version="s" * _MAX_METADATA_SIZE), connect=False)
# Test C extension in driver info.
if pymongo.has_c():
self._test_metadata({"driver": {"name": "c"}})

@mock.patch.dict("os.environ", {ENV_VAR_K8S: "1"})
def test_container_metadata(self):
Expand Down

0 comments on commit ef37c3e

Please sign in to comment.