Index: tools/telemetry/telemetry/core/platform/tracing_agent/chrome_tracing_agent_unittest.py |
diff --git a/tools/telemetry/telemetry/core/platform/tracing_agent/chrome_tracing_agent_unittest.py b/tools/telemetry/telemetry/core/platform/tracing_agent/chrome_tracing_agent_unittest.py |
index e922c51c237ee73cc650998ed94755115754dc9c..24b6ac719be5c429ae5ab61c917b224fa0cee855 100644 |
--- a/tools/telemetry/telemetry/core/platform/tracing_agent/chrome_tracing_agent_unittest.py |
+++ b/tools/telemetry/telemetry/core/platform/tracing_agent/chrome_tracing_agent_unittest.py |
@@ -16,6 +16,7 @@ class FakeDevtoolsClient(object): |
self.is_alive = True |
self.tracing_started = False |
self.remote_port = remote_port |
+ self.will_raise_exception_in_stop_tracing = False |
def IsAlive(self): |
return self.is_alive |
@@ -25,6 +26,8 @@ class FakeDevtoolsClient(object): |
def StopChromeTracing(self, _trace_data_builder): |
self.tracing_started = False |
+ if self.will_raise_exception_in_stop_tracing: |
+ raise Exception |
def IsChromeTracingSupported(self): |
return True |
@@ -142,3 +145,31 @@ class ChromeTracingAgentUnittest(unittest.TestCase): |
self.assertTrue(devtool4.tracing_started) |
self.StopTracing(tracing_agent2) |
self.assertFalse(devtool4.tracing_started) |
+ |
+ def testExceptionRaisedInStopTracing(self): |
+ devtool1 = FakeDevtoolsClient(1) |
+ devtool2 = FakeDevtoolsClient(2) |
+ # Register devtools 1, 2 on platform 1 |
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient( |
+ devtool1, self.platform1) |
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient( |
+ devtool2, self.platform1) |
+ tracing_agent1 = self.StartTracing(self.platform1) |
+ |
+ self.assertTrue(devtool1.tracing_started) |
+ self.assertTrue(devtool2.tracing_started) |
+ |
+ devtool2.will_raise_exception_in_stop_tracing = True |
+ with self.assertRaises(chrome_tracing_agent.ChromeTracingStoppedError): |
+ self.StopTracing(tracing_agent1) |
+ |
+ devtool1.is_alive = False |
+ devtool2.is_alive = False |
+ # Register devtools 3 on platform 1 should not raise any exception. |
+ devtool3 = FakeDevtoolsClient(3) |
+ chrome_tracing_agent.ChromeTracingAgent.RegisterDevToolsClient( |
+ devtool3, self.platform1) |
+ |
+ # Start & Stop tracing on platform 1 should work just fine. |
+ tracing_agent2 = self.StartTracing(self.platform1) |
+ self.StopTracing(tracing_agent2) |