Home | History | Annotate | Download | only in adb_profile_chrome
      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)
     51