OLD | NEW |
| (Empty) |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 import os | |
6 import json | |
7 | |
8 from adb_profile_chrome import controllers_unittest | |
9 from adb_profile_chrome import perf_controller | |
10 from adb_profile_chrome import ui | |
11 | |
12 from pylib import constants | |
13 | |
14 | |
15 class PerfProfilerControllerTest(controllers_unittest.BaseControllerTest): | |
16 def testGetCategories(self): | |
17 if not perf_controller.PerfProfilerController.IsSupported(): | |
18 return | |
19 categories = \ | |
20 perf_controller.PerfProfilerController.GetCategories(self.device) | |
21 assert 'cycles' in ' '.join(categories) | |
22 | |
23 def testTracing(self): | |
24 if not perf_controller.PerfProfilerController.IsSupported(): | |
25 return | |
26 ui.EnableTestMode() | |
27 categories = ['cycles'] | |
28 controller = perf_controller.PerfProfilerController(self.device, | |
29 categories) | |
30 | |
31 interval = 1 | |
32 try: | |
33 controller.StartTracing(interval) | |
34 finally: | |
35 controller.StopTracing() | |
36 | |
37 result = controller.PullTrace() | |
38 # Perf-to-JSON conversion can fail if dependencies are missing. | |
39 if not result: | |
40 perf_script_path = os.path.join(constants.DIR_SOURCE_ROOT, | |
41 'tools', 'telemetry', 'telemetry', 'core', 'platform', 'profiler', | |
42 'perf_vis', 'perf_to_tracing.py') | |
43 assert not os.path.exists(perf_script_path) | |
44 return | |
45 | |
46 try: | |
47 with open(result) as f: | |
48 json.loads(f.read()) | |
49 finally: | |
50 os.remove(result) | |
OLD | NEW |