• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
12
13class PerfProfilerControllerTest(controllers_unittest.BaseControllerTest):
14  def testGetCategories(self):
15    if not perf_controller.PerfProfilerController.IsSupported():
16      return
17    categories = \
18        perf_controller.PerfProfilerController.GetCategories(self.device)
19    assert 'cycles' in ' '.join(categories)
20
21  def testTracing(self):
22    if not perf_controller.PerfProfilerController.IsSupported():
23      return
24    ui.EnableTestMode()
25    categories = ['cycles']
26    controller = perf_controller.PerfProfilerController(self.device,
27                                                        categories)
28
29    interval = 1
30    try:
31      controller.StartTracing(interval)
32    finally:
33      controller.StopTracing()
34
35    result = controller.PullTrace()
36    try:
37      with open(result) as f:
38        json.loads(f.read())
39    finally:
40      os.remove(result)
41