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 5import os 6import json 7 8from profile_chrome import controllers_unittest 9from profile_chrome import perf_controller 10from profile_chrome import ui 11 12from pylib import constants 13 14 15class 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 try: 39 with open(result) as f: 40 json.loads(f.read()) 41 finally: 42 os.remove(result) 43