Index: tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent_unittest.py |
diff --git a/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent_unittest.py b/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent_unittest.py |
deleted file mode 100644 |
index a90a66e8e11033ef46e78aaae1f512e426d9b354..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/internal/platform/tracing_agent/chrome_tracing_agent_unittest.py |
+++ /dev/null |
@@ -1,273 +0,0 @@ |
-# Copyright 2014 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
-import os |
-import platform |
-import stat |
-import unittest |
- |
-from telemetry import decorators |
-from telemetry.internal.platform.tracing_agent import chrome_tracing_agent |
-from telemetry.internal.platform.tracing_agent import ( |
- chrome_tracing_devtools_manager) |
-from telemetry.timeline import tracing_config |
- |
-from devil.android import device_utils |
- |
- |
-class FakeTracingControllerBackend(object): |
- def __init__(self): |
- self.is_tracing_running = False |
- |
- |
-class FakePlatformBackend(object): |
- def __init__(self): |
- self.tracing_controller_backend = FakeTracingControllerBackend() |
- |
- def GetOSName(self): |
- return '' |
- |
-class FakeAndroidPlatformBackend(FakePlatformBackend): |
- def __init__(self): |
- super(FakeAndroidPlatformBackend, self).__init__() |
- devices = device_utils.DeviceUtils.HealthyDevices(None) |
- self.device = devices[0] |
- |
- def GetOSName(self): |
- return 'android' |
- |
-class FakeDesktopPlatformBackend(FakePlatformBackend): |
- def GetOSName(self): |
- system = platform.system() |
- if system == 'Linux': |
- return 'linux' |
- if system == 'Darwin': |
- return 'mac' |
- if system == 'Windows': |
- return 'win' |
- |
- |
-class FakeDevtoolsClient(object): |
- def __init__(self, remote_port): |
- self.is_alive = True |
- self.is_tracing_running = False |
- self.remote_port = remote_port |
- self.will_raise_exception_in_stop_tracing = False |
- |
- def IsAlive(self): |
- return self.is_alive |
- |
- def StartChromeTracing(self, trace_options, filter_string, timeout=10): |
- del trace_options, filter_string, timeout # unused |
- self.is_tracing_running = True |
- |
- def StopChromeTracing(self, trace_data_builder): |
- del trace_data_builder # unused |
- self.is_tracing_running = False |
- if self.will_raise_exception_in_stop_tracing: |
- raise Exception |
- |
- def IsChromeTracingSupported(self): |
- return True |
- |
- |
-class ChromeTracingAgentTest(unittest.TestCase): |
- def setUp(self): |
- self.platform1 = FakePlatformBackend() |
- self.platform2 = FakePlatformBackend() |
- self.platform3 = FakePlatformBackend() |
- |
- def StartTracing(self, platform_backend, enable_chrome_trace=True): |
- assert chrome_tracing_agent.ChromeTracingAgent.IsSupported(platform_backend) |
- agent = chrome_tracing_agent.ChromeTracingAgent(platform_backend) |
- config = tracing_config.TracingConfig() |
- config.tracing_category_filter.AddIncludedCategory('foo') |
- config.enable_chrome_trace = enable_chrome_trace |
- agent._platform_backend.tracing_controller_backend.is_tracing_running = True |
- agent.StartAgentTracing(config, 10) |
- return agent |
- |
- def StopTracing(self, agent): |
- agent._platform_backend.tracing_controller_backend.is_tracing_running = ( |
- False) |
- agent.StopAgentTracing(None) |
- |
- def testRegisterDevtoolsClient(self): |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- FakeDevtoolsClient(1), self.platform1) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- FakeDevtoolsClient(2), self.platform1) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- FakeDevtoolsClient(3), self.platform1) |
- |
- tracing_agent_of_platform1 = self.StartTracing(self.platform1) |
- |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- FakeDevtoolsClient(4), self.platform1) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- FakeDevtoolsClient(5), self.platform2) |
- |
- self.StopTracing(tracing_agent_of_platform1) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- FakeDevtoolsClient(6), self.platform1) |
- |
- def testIsSupportWithoutStartupTracingSupport(self): |
- self.assertFalse( |
- chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform1)) |
- self.assertFalse( |
- chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform2)) |
- self.assertFalse( |
- chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform3)) |
- |
- devtool1 = FakeDevtoolsClient(1) |
- devtool2 = FakeDevtoolsClient(2) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- devtool1, self.platform1) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- devtool2, self.platform2) |
- devtool2.is_alive = False |
- |
- # Chrome tracing is only supported on platform 1 since only platform 1 has |
- # an alive devtool. |
- self.assertTrue( |
- chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform1)) |
- self.assertFalse( |
- chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform2)) |
- self.assertFalse( |
- chrome_tracing_agent.ChromeTracingAgent.IsSupported(self.platform3)) |
- |
- @decorators.Enabled('linux', 'mac', 'win') |
- def testIsSupportOnDesktopPlatform(self): |
- # Chrome tracing is always supported on desktop platforms because of startup |
- # tracing. |
- desktop_platform = FakeDesktopPlatformBackend() |
- self.assertTrue( |
- chrome_tracing_agent.ChromeTracingAgent.IsSupported(desktop_platform)) |
- |
- devtool = FakeDevtoolsClient(1) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- devtool, desktop_platform) |
- self.assertTrue( |
- chrome_tracing_agent.ChromeTracingAgent.IsSupported(desktop_platform)) |
- |
- def testStartAndStopTracing(self): |
- devtool1 = FakeDevtoolsClient(1) |
- devtool2 = FakeDevtoolsClient(2) |
- devtool3 = FakeDevtoolsClient(3) |
- devtool4 = FakeDevtoolsClient(2) |
- # Register devtools 1, 2, 3 on platform1 and devtool 4 on platform 2 |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- devtool1, self.platform1) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- devtool2, self.platform1) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- devtool3, self.platform1) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- devtool4, self.platform2) |
- devtool2.is_alive = False |
- |
- tracing_agent1 = self.StartTracing(self.platform1) |
- with self.assertRaises(chrome_tracing_agent.ChromeTracingStartedError): |
- self.StartTracing(self.platform1) |
- |
- self.assertTrue(devtool1.is_tracing_running) |
- self.assertFalse(devtool2.is_tracing_running) |
- self.assertTrue(devtool3.is_tracing_running) |
- # Devtool 4 shouldn't have tracing started although it has the same remote |
- # port as devtool 2 |
- self.assertFalse(devtool4.is_tracing_running) |
- |
- self.StopTracing(tracing_agent1) |
- self.assertFalse(devtool1.is_tracing_running) |
- self.assertFalse(devtool2.is_tracing_running) |
- self.assertFalse(devtool3.is_tracing_running) |
- self.assertFalse(devtool4.is_tracing_running) |
- # Test that it should be ok to start & stop tracing on platform1 again. |
- tracing_agent1 = self.StartTracing(self.platform1) |
- self.StopTracing(tracing_agent1) |
- |
- tracing_agent2 = self.StartTracing(self.platform2) |
- self.assertTrue(devtool4.is_tracing_running) |
- self.StopTracing(tracing_agent2) |
- self.assertFalse(devtool4.is_tracing_running) |
- |
- def testExceptionRaisedInStopTracing(self): |
- devtool1 = FakeDevtoolsClient(1) |
- devtool2 = FakeDevtoolsClient(2) |
- # Register devtools 1, 2 on platform 1 |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- devtool1, self.platform1) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- devtool2, self.platform1) |
- tracing_agent1 = self.StartTracing(self.platform1) |
- |
- self.assertTrue(devtool1.is_tracing_running) |
- self.assertTrue(devtool2.is_tracing_running) |
- |
- devtool1.will_raise_exception_in_stop_tracing = True |
- with self.assertRaises(chrome_tracing_agent.ChromeTracingStoppedError): |
- self.StopTracing(tracing_agent1) |
- # Tracing is stopped on both devtools clients even if there is exception. |
- self.assertIsNone(tracing_agent1.trace_config) |
- self.assertFalse(devtool1.is_tracing_running) |
- self.assertFalse(devtool2.is_tracing_running) |
- |
- devtool1.is_alive = False |
- devtool2.is_alive = False |
- # Register devtools 3 on platform 1 should not raise any exception. |
- devtool3 = FakeDevtoolsClient(3) |
- chrome_tracing_devtools_manager.RegisterDevToolsClient( |
- devtool3, self.platform1) |
- |
- # Start & Stop tracing on platform 1 should work just fine. |
- tracing_agent2 = self.StartTracing(self.platform1) |
- self.StopTracing(tracing_agent2) |
- |
- @decorators.Enabled('android') |
- def testCreateAndRemoveTraceConfigFileOnAndroid(self): |
- platform_backend = FakeAndroidPlatformBackend() |
- agent = chrome_tracing_agent.ChromeTracingAgent(platform_backend) |
- self.assertIsNone(agent.trace_config_file) |
- |
- config = tracing_config.TracingConfig() |
- agent._CreateTraceConfigFile(config) |
- self.assertIsNotNone(agent.trace_config_file) |
- self.assertTrue(platform_backend.device.PathExists(agent.trace_config_file)) |
- config_file_str = platform_backend.device.ReadFile(agent.trace_config_file, |
- as_root=True) |
- self.assertEqual(agent._CreateTraceConfigFileString(config), |
- config_file_str.strip()) |
- |
- config_file_path = agent.trace_config_file |
- agent._RemoveTraceConfigFile() |
- self.assertFalse(platform_backend.device.PathExists(config_file_path)) |
- self.assertIsNone(agent.trace_config_file) |
- # robust to multiple file removal |
- agent._RemoveTraceConfigFile() |
- self.assertFalse(platform_backend.device.PathExists(config_file_path)) |
- self.assertIsNone(agent.trace_config_file) |
- |
- @decorators.Enabled('linux', 'mac', 'win') |
- def testCreateAndRemoveTraceConfigFileOnDesktop(self): |
- platform_backend = FakeDesktopPlatformBackend() |
- agent = chrome_tracing_agent.ChromeTracingAgent(platform_backend) |
- self.assertIsNone(agent.trace_config_file) |
- |
- config = tracing_config.TracingConfig() |
- agent._CreateTraceConfigFile(config) |
- self.assertIsNotNone(agent.trace_config_file) |
- self.assertTrue(os.path.exists(agent.trace_config_file)) |
- self.assertTrue(os.stat(agent.trace_config_file).st_mode & stat.S_IROTH) |
- with open(agent.trace_config_file, 'r') as f: |
- config_file_str = f.read() |
- self.assertEqual(agent._CreateTraceConfigFileString(config), |
- config_file_str.strip()) |
- |
- config_file_path = agent.trace_config_file |
- agent._RemoveTraceConfigFile() |
- self.assertFalse(os.path.exists(config_file_path)) |
- self.assertIsNone(agent.trace_config_file) |
- # robust to multiple file removal |
- agent._RemoveTraceConfigFile() |
- self.assertFalse(os.path.exists(config_file_path)) |
- self.assertIsNone(agent.trace_config_file) |