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