Skip to content

Commit 1c2651b

Browse files
authored
PYTHON-2357 Specify error label in retryable writes test (#494)
PYTHON-2356 Add errorLabelsContain/errorLabelsOmit support to retryable writes tests
1 parent b2fba41 commit 1c2651b

File tree

2 files changed

+12
-15
lines changed

2 files changed

+12
-15
lines changed

test/retryable_writes/insertOne-serverErrors.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -966,7 +966,10 @@
966966
],
967967
"writeConcernError": {
968968
"code": 91,
969-
"errmsg": "Replication is being shut down"
969+
"errmsg": "Replication is being shut down",
970+
"errorLabels": [
971+
"RetryableWriteError"
972+
]
970973
}
971974
}
972975
},

test/test_retryable_writes.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
from pymongo.write_concern import WriteConcern
3939

4040
from test import unittest, client_context, IntegrationTest, SkipTest, client_knobs
41-
from test.test_crud_v1 import check_result as crud_v1_check_result
4241
from test.utils import (rs_or_single_client,
4342
DeprecationFilter,
4443
OvertCommandListener,
@@ -62,20 +61,15 @@ def get_scenario_coll_name(self, scenario_def):
6261
return scenario_def.get('collection_name', 'test')
6362

6463
def run_test_ops(self, sessions, collection, test):
64+
# Transform retryable writes spec format into transactions.
65+
operation = test['operation']
6566
outcome = test['outcome']
66-
should_fail = outcome.get('error')
67-
result = None
68-
error = None
69-
try:
70-
result = self.run_operation(
71-
sessions, collection, test['operation'])
72-
except (ConnectionFailure, OperationFailure) as exc:
73-
error = exc
74-
if should_fail:
75-
self.assertIsNotNone(error, 'should have raised an error')
76-
else:
77-
self.assertIsNone(error)
78-
crud_v1_check_result(self, outcome['result'], result)
67+
if 'error' in outcome:
68+
operation['error'] = outcome['error']
69+
if 'result' in outcome:
70+
operation['result'] = outcome['result']
71+
test['operations'] = [operation]
72+
super(TestAllScenarios, self).run_test_ops(sessions, collection, test)
7973

8074

8175
def create_test(scenario_def, test, name):

0 commit comments

Comments
 (0)