Skip to content

Commit ec47de7

Browse files
committed
PYTHON-979 - Update currentOp helper for command monitoring
1 parent 1764aaa commit ec47de7

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

pymongo/database.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -592,15 +592,15 @@ def current_op(self, include_all=False):
592592
- `include_all` (optional): if ``True`` also list currently
593593
idle operations in the result
594594
"""
595+
cmd = SON([("currentOp", 1), ("$all", include_all)])
595596
with self.__client._socket_for_writes() as sock_info:
596597
if sock_info.max_wire_version >= 4:
597-
return sock_info.command(
598-
"admin", SON([("currentOp", 1), ("$all", include_all)]))
598+
return sock_info.command("admin", cmd)
599599
else:
600600
spec = {"$all": True} if include_all else {}
601601
x = helpers._first_batch(sock_info, "admin.$cmd.sys.inprog",
602602
spec, -1, True, self.codec_options,
603-
ReadPreference.PRIMARY)
603+
ReadPreference.PRIMARY, cmd, self.client._event_listeners)
604604
return x.get('data', [None])[0]
605605

606606
def profiling_level(self):

test/test_monitoring.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1230,6 +1230,24 @@ def test_first_batch_helper(self):
12301230
self.assertEqual(started.request_id, succeeded.request_id)
12311231
self.assertEqual(started.connection_id, succeeded.connection_id)
12321232

1233+
self.listener.results.clear()
1234+
self.client.pymongo_test.current_op(True)
1235+
started = results['started'][0]
1236+
succeeded = results['succeeded'][0]
1237+
self.assertEqual(0, len(results['failed']))
1238+
self.assertIsInstance(started, monitoring.CommandStartedEvent)
1239+
expected = SON([('currentOp', 1), ('$all', True)])
1240+
self.assertEqual(expected, started.command)
1241+
self.assertEqual('admin', started.database_name)
1242+
self.assertEqual('currentOp', started.command_name)
1243+
self.assertIsInstance(started.request_id, int)
1244+
self.assertEqual(self.client.address, started.connection_id)
1245+
self.assertIsInstance(succeeded, monitoring.CommandSucceededEvent)
1246+
self.assertIsInstance(succeeded.duration_micros, int)
1247+
self.assertEqual(started.command_name, succeeded.command_name)
1248+
self.assertEqual(started.request_id, succeeded.request_id)
1249+
self.assertEqual(started.connection_id, succeeded.connection_id)
1250+
12331251
def test_sensitive_commands(self):
12341252
listeners = self.client._event_listeners
12351253

0 commit comments

Comments
 (0)