|
30 | 30 | from pymongo.read_preferences import ReadPreference |
31 | 31 | from pymongo.write_concern import WriteConcern |
32 | 32 | from test import unittest, client_context, client_knobs |
33 | | -from test.utils import single_client |
| 33 | +from test.utils import single_client, wait_until |
34 | 34 |
|
35 | 35 |
|
36 | 36 | class EventListener(monitoring.CommandListener): |
@@ -1248,6 +1248,29 @@ def test_first_batch_helper(self): |
1248 | 1248 | self.assertEqual(started.request_id, succeeded.request_id) |
1249 | 1249 | self.assertEqual(started.connection_id, succeeded.connection_id) |
1250 | 1250 |
|
| 1251 | + if not client_context.is_mongos: |
| 1252 | + self.client.fsync(lock=True) |
| 1253 | + self.listener.results.clear() |
| 1254 | + self.client.unlock() |
| 1255 | + # Wait for async unlock... |
| 1256 | + wait_until( |
| 1257 | + lambda: not self.client.is_locked, "unlock the database") |
| 1258 | + started = results['started'][0] |
| 1259 | + succeeded = results['succeeded'][0] |
| 1260 | + self.assertEqual(0, len(results['failed'])) |
| 1261 | + self.assertIsInstance(started, monitoring.CommandStartedEvent) |
| 1262 | + expected = {'fsyncUnlock': 1} |
| 1263 | + self.assertEqual(expected, started.command) |
| 1264 | + self.assertEqual('admin', started.database_name) |
| 1265 | + self.assertEqual('fsyncUnlock', started.command_name) |
| 1266 | + self.assertIsInstance(started.request_id, int) |
| 1267 | + self.assertEqual(self.client.address, started.connection_id) |
| 1268 | + self.assertIsInstance(succeeded, monitoring.CommandSucceededEvent) |
| 1269 | + self.assertIsInstance(succeeded.duration_micros, int) |
| 1270 | + self.assertEqual(started.command_name, succeeded.command_name) |
| 1271 | + self.assertEqual(started.request_id, succeeded.request_id) |
| 1272 | + self.assertEqual(started.connection_id, succeeded.connection_id) |
| 1273 | + |
1251 | 1274 | def test_sensitive_commands(self): |
1252 | 1275 | listeners = self.client._event_listeners |
1253 | 1276 |
|
|
0 commit comments