def run_scenario(self): # Load data. assert scenario_def['data'], "tests must have non-empty data" client_context.client.pymongo_test.test.drop() client_context.client.pymongo_test.test.insert_many( scenario_def['data']) # Set the failPoint self.set_fail_point(test['failPoint']) self.addCleanup( self.set_fail_point, { 'configureFailPoint': test['failPoint']['configureFailPoint'], 'mode': 'off' }) test_outcome = test['outcome'] should_fail = test_outcome.get('error') result = None error = None db = rs_or_single_client(**test['clientOptions']).pymongo_test # Close the client explicitly to avoid having too many threads open. self.addCleanup(db.client.close) try: result = run_operation(db.test, test) except (ConnectionFailure, OperationFailure) as exc: error = exc if should_fail: self.assertIsNotNone(error, 'should have raised an error') else: self.assertIsNone(error) # Assert final state is expected. expected_c = test_outcome.get('collection') if expected_c is not None: expected_name = expected_c.get('name') if expected_name is not None: db_coll = db[expected_name] else: db_coll = db.test self.assertEqual(list(db_coll.find()), expected_c['data']) expected_result = test_outcome.get('result') # We can't test the expected result when the test should fail because # the BulkWriteResult is not reported when raising a network error. if not should_fail: self.assertTrue(check_result(expected_result, result), "%r != %r" % (expected_result, result))
def run_scenario(self): # Load data. assert scenario_def['data'], "tests must have non-empty data" client_context.client.pymongo_test.test.drop() client_context.client.pymongo_test.test.insert_many(scenario_def['data']) # Set the failPoint self.set_fail_point(test['failPoint']) self.addCleanup(self.set_fail_point, { 'configureFailPoint': test['failPoint']['configureFailPoint'], 'mode': 'off'}) test_outcome = test['outcome'] should_fail = test_outcome.get('error') result = None error = None db = rs_or_single_client(**test['clientOptions']).pymongo_test try: result = run_operation(db.test, test) except (ConnectionFailure, OperationFailure) as exc: error = exc if should_fail: self.assertIsNotNone(error, 'should have raised an error') else: self.assertIsNone(error) # Assert final state is expected. expected_c = test_outcome.get('collection') if expected_c is not None: expected_name = expected_c.get('name') if expected_name is not None: db_coll = db[expected_name] else: db_coll = db.test self.assertEqual(list(db_coll.find()), expected_c['data']) expected_result = test_outcome.get('result') # We can't test the expected result when the test should fail because # the BulkWriteResult is not reported when raising a network error. if not should_fail: self.assertTrue(check_result(expected_result, result), "%r != %r" % (expected_result, result))
def run_scenario(self): # Load data. assert scenario_def['data'], "tests must have non-empty data" self.db.test.drop() self.db.test.insert_many(scenario_def['data']) # Set the failPoint self.set_fail_point(test['failPoint']) test_outcome = test['outcome'] should_fail = test_outcome.get('error') result = None error = None try: result = run_operation(self.db.test, test) except ConnectionFailure as exc: error = exc if should_fail: self.assertIsNotNone(error, 'should have raised an error') else: self.assertIsNone(error, 'should not have raised an error') # Assert final state is expected. expected_c = test_outcome.get('collection') if expected_c is not None: expected_name = expected_c.get('name') if expected_name is not None: db_coll = self.db[expected_name] else: db_coll = self.db.test self.assertEqual(list(db_coll.find()), expected_c['data']) expected_result = test_outcome.get('result') # We can't test the expected result when the test should fail because # the BulkWriteResult is not reported when raising a network error. if not should_fail: self.assertTrue(check_result(expected_result, result), "%r != %r" % (expected_result, result))