Upstream version 9.37.197.0
[platform/framework/web/crosswalk.git] / src / tools / android / adb_profile_chrome / perf_controller_unittest.py
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)