| 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')
|
|
|