Skip to content

Commit 484058e

Browse files
authored
PYTHON-3160 Fix MMAPv1 tests (#914)
1 parent 3179eab commit 484058e

File tree

3 files changed

+24
-8
lines changed

3 files changed

+24
-8
lines changed

test/sessions/driver-sessions-dirty-session-errors.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -448,7 +448,6 @@
448448
"name": "insertOne",
449449
"object": "collection0",
450450
"arguments": {
451-
"session": "session0",
452451
"document": {
453452
"_id": 2
454453
}

test/test_session.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -183,12 +183,11 @@ def test_implicit_sessions_checkout(self):
183183
# "To confirm that implicit sessions only allocate their server session after a
184184
# successful connection checkout" test from Driver Sessions Spec.
185185
succeeded = False
186+
lsid_set = set()
186187
failures = 0
187188
for _ in range(5):
188189
listener = EventListener()
189-
client = rs_or_single_client(
190-
event_listeners=[listener], maxPoolSize=1, retryWrites=True
191-
)
190+
client = rs_or_single_client(event_listeners=[listener], maxPoolSize=1)
192191
cursor = client.db.test.find({})
193192
ops: List[Tuple[Callable, List[Any]]] = [
194193
(client.db.test.find_one, [{"_id": 1}]),
@@ -225,16 +224,15 @@ def thread_target(op, *args):
225224
thread.join()
226225
self.assertIsNone(thread.exc)
227226
client.close()
228-
lsid_set = set()
227+
lsid_set.clear()
229228
for i in listener.results["started"]:
230229
if i.command.get("lsid"):
231230
lsid_set.add(i.command.get("lsid")["id"])
232231
if len(lsid_set) == 1:
233232
succeeded = True
234233
else:
235234
failures += 1
236-
print(failures)
237-
self.assertTrue(succeeded)
235+
self.assertTrue(succeeded, lsid_set)
238236

239237
def test_pool_lifo(self):
240238
# "Pool is LIFO" test from Driver Sessions Spec.

test/unified_format.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -766,11 +766,30 @@ def setUp(self):
766766
def maybe_skip_test(self, spec):
767767
# add any special-casing for skipping tests here
768768
if client_context.storage_engine == "mmapv1":
769-
if "Dirty explicit session is discarded" in spec["description"]:
769+
if (
770+
"Dirty explicit session is discarded" in spec["description"]
771+
or "Dirty implicit session is discarded" in spec["description"]
772+
):
770773
raise unittest.SkipTest("MMAPv1 does not support retryWrites=True")
771774
elif "Client side error in command starting transaction" in spec["description"]:
772775
raise unittest.SkipTest("Implement PYTHON-1894")
773776

777+
# Some tests need to be skipped based on the operations they try to run.
778+
for op in spec["operations"]:
779+
name = op["name"]
780+
if name == "count":
781+
self.skipTest("PyMongo does not support count()")
782+
if name == "listIndexNames":
783+
self.skipTest("PyMongo does not support list_index_names()")
784+
if client_context.storage_engine == "mmapv1":
785+
if name == "createChangeStream":
786+
self.skipTest("MMAPv1 does not support change streams")
787+
if name == "withTransaction" or name == "startTransaction":
788+
self.skipTest("MMAPv1 does not support document-level locking")
789+
if not client_context.test_commands_enabled:
790+
if name == "failPoint" or name == "targetedFailPoint":
791+
self.skipTest("Test commands must be enabled to use fail points")
792+
774793
def process_error(self, exception, spec):
775794
is_error = spec.get("isError")
776795
is_client_error = spec.get("isClientError")

0 commit comments

Comments
 (0)