Index: tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_websocket_unittest.py |
diff --git a/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_websocket_unittest.py b/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_websocket_unittest.py |
index 603b29979bc3d18e3928bdc4b10b119e213c744f..5c15f948de014f1d0077f21f4f472b8131c06ae3 100644 |
--- a/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_websocket_unittest.py |
+++ b/tools/telemetry/telemetry/core/backends/chrome_inspector/inspector_websocket_unittest.py |
@@ -39,6 +39,10 @@ |
self._timeout = timeout |
+def _ReraiseExceptionErrorHandler(_elapsed_time): |
+ raise |
+ |
+ |
def _DoNothingHandler(_elapsed_time): |
pass |
@@ -52,7 +56,8 @@ |
self._mock_timer.Restore() |
def testDispatchNotification(self): |
- inspector = inspector_websocket.InspectorWebsocket() |
+ inspector = inspector_websocket.InspectorWebsocket( |
+ error_handler=_ReraiseExceptionErrorHandler) |
fake_socket = FakeSocket(self._mock_timer) |
# pylint: disable=protected-access |
inspector._socket = fake_socket |
@@ -68,7 +73,8 @@ |
self.assertEqual('Test.foo', results[0]['method']) |
def testDispatchNotificationTimedOut(self): |
- inspector = inspector_websocket.InspectorWebsocket() |
+ inspector = inspector_websocket.InspectorWebsocket( |
+ error_handler=_ReraiseExceptionErrorHandler) |
fake_socket = FakeSocket(self._mock_timer) |
# pylint: disable=protected-access |
inspector._socket = fake_socket |
@@ -84,8 +90,78 @@ |
inspector.DispatchNotifications(timeout=10) |
self.assertEqual(0, len(results)) |
+ def testDispatchNotificationUntilDoneTimedOut2(self): |
+ inspector = inspector_websocket.InspectorWebsocket( |
+ error_handler=_ReraiseExceptionErrorHandler) |
+ fake_socket = FakeSocket(self._mock_timer) |
+ inspector._socket = fake_socket # pylint: disable=W0212 |
+ |
+ results = [] |
+ def OnTestEvent(result): |
+ results.append(result) |
+ |
+ inspector.RegisterDomain('Test', OnTestEvent) |
+ # The third call to socket.recv() will take 15 seconds without any data |
+ # received, hence the below call will raise a |
+ # DispatchNotificationsUntilDoneTimeoutException. |
+ fake_socket.AddResponse('{"method": "Test.foo"}', 10) |
+ fake_socket.AddResponse('{"method": "Test.bar"}', 20) |
+ fake_socket.AddResponse('{"method": "Test.baz"}', 35) |
+ with self.assertRaises( |
+ inspector_websocket.DispatchNotificationsUntilDoneTimeoutException): |
+ inspector.DispatchNotificationsUntilDone(12) |
+ self.assertEqual(2, len(results)) |
+ |
+ def testDispatchNotificationsUntilDone(self): |
+ inspector = inspector_websocket.InspectorWebsocket( |
+ error_handler=_ReraiseExceptionErrorHandler) |
+ fake_socket = FakeSocket(self._mock_timer) |
+ # pylint: disable=protected-access |
+ inspector._socket = fake_socket |
+ |
+ results = [] |
+ def OnTestEvent(result): |
+ results.append(result) |
+ return len(results) > 2 |
+ |
+ inspector.RegisterDomain('Test', OnTestEvent) |
+ # Even though it takes 70 seconds to receive all the data, the call below |
+ # will succeed since there are no interval which the previous data package |
+ # received and the next failed data receiving attempt was greater than |
+ # 30 seconds. |
+ fake_socket.AddResponse('{"method": "Test.foo"}', 10) |
+ fake_socket.AddResponse('{"method": "Test.bar"}', 20) |
+ fake_socket.AddResponse('{"method": "Test.baz"}', 35) |
+ fake_socket.AddResponse('{"method": "Test.qux"}', 50) |
+ fake_socket.AddResponse('{"method": "Test.baz"}', 60) |
+ fake_socket.AddResponse('{"method": "Test.foo"}', 70) |
+ inspector.DispatchNotificationsUntilDone(31) |
+ self.assertEqual(3, len(results)) |
+ self.assertEqual('Test.baz', results[2]['method']) |
+ |
+ def testDispatchNotificationsUntilDoneTimedOut(self): |
+ inspector = inspector_websocket.InspectorWebsocket( |
+ error_handler=_ReraiseExceptionErrorHandler) |
+ fake_socket = FakeSocket(self._mock_timer) |
+ # pylint: disable=protected-access |
+ inspector._socket = fake_socket |
+ |
+ results = [] |
+ def OnTestEvent(result): |
+ results.append(result) |
+ |
+ inspector.RegisterDomain('Test', OnTestEvent) |
+ fake_socket.AddResponse('{"method": "Test.foo"}', 5) |
+ fake_socket.AddResponse('{"method": "Test.bar"}', 16) |
+ fake_socket.AddResponse('{"method": "Test.baz"}', 20) |
+ with self.assertRaises( |
+ inspector_websocket.DispatchNotificationsUntilDoneTimeoutException): |
+ inspector.DispatchNotificationsUntilDone(10) |
+ self.assertEqual(1, len(results)) |
+ |
def testUnregisterDomain(self): |
- inspector = inspector_websocket.InspectorWebsocket() |
+ inspector = inspector_websocket.InspectorWebsocket( |
+ error_handler=_ReraiseExceptionErrorHandler) |
fake_socket = FakeSocket(self._mock_timer) |
# pylint: disable=protected-access |
inspector._socket = fake_socket |
@@ -109,6 +185,7 @@ |
self.assertEqual('Test2.foo', results[0]['method']) |
def testUnregisterDomainWithUnregisteredDomain(self): |
- inspector = inspector_websocket.InspectorWebsocket() |
+ inspector = inspector_websocket.InspectorWebsocket( |
+ error_handler=_ReraiseExceptionErrorHandler) |
with self.assertRaises(AssertionError): |
inspector.UnregisterDomain('Test') |