@@ -80,6 +80,7 @@ def run_test_ops(self, sessions, collection, test):
8080
8181def create_test (scenario_def , test , name ):
8282 @client_context .require_test_commands
83+ @client_context .require_no_mmap
8384 def run_scenario (self ):
8485 self .run_scenario (scenario_def , test )
8586
@@ -176,9 +177,41 @@ def tearDownClass(cls):
176177 super (IgnoreDeprecationsTest , cls ).tearDownClass ()
177178
178179
180+ class TestRetryableWritesMMAPv1 (IgnoreDeprecationsTest ):
181+
182+ @classmethod
183+ def setUpClass (cls ):
184+ super (TestRetryableWritesMMAPv1 , cls ).setUpClass ()
185+ # Speed up the tests by decreasing the heartbeat frequency.
186+ cls .knobs = client_knobs (heartbeat_frequency = 0.1 ,
187+ min_heartbeat_interval = 0.1 )
188+ cls .knobs .enable ()
189+ cls .client = rs_or_single_client (retryWrites = True )
190+ cls .db = cls .client .pymongo_test
191+
192+ @classmethod
193+ def tearDownClass (cls ):
194+ cls .knobs .disable ()
195+
196+ @client_context .require_version_min (3 , 5 )
197+ @client_context .require_no_standalone
198+ def test_actionable_error_message (self ):
199+ if client_context .storage_engine != 'mmapv1' :
200+ raise SkipTest ('This cluster is not running MMAPv1' )
201+
202+ expected_msg = ("This MongoDB deployment does not support retryable "
203+ "writes. Please add retryWrites=false to your "
204+ "connection string." )
205+ for method , args , kwargs in retryable_single_statement_ops (
206+ self .db .retryable_write_test ):
207+ with self .assertRaisesRegex (OperationFailure , expected_msg ):
208+ method (* args , ** kwargs )
209+
210+
179211class TestRetryableWrites (IgnoreDeprecationsTest ):
180212
181213 @classmethod
214+ @client_context .require_no_mmap
182215 def setUpClass (cls ):
183216 super (TestRetryableWrites , cls ).setUpClass ()
184217 # Speed up the tests by decreasing the heartbeat frequency.
@@ -429,6 +462,7 @@ def test_batch_splitting_retry_fails(self):
429462class TestRetryableWritesTxnNumber (IgnoreDeprecationsTest ):
430463 @client_context .require_version_min (3 , 6 )
431464 @client_context .require_replica_set
465+ @client_context .require_no_mmap
432466 def test_increment_transaction_id_without_sending_command (self ):
433467 """Test that the txnNumber field is properly incremented, even when
434468 the first attempt fails before sending the command.
0 commit comments