1# Copyright (c) 2014 The Chromium OS 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 logging, time
6
7from autotest_lib.client.bin import test, utils
8from autotest_lib.client.common_lib import error
9from autotest_lib.client.cros import perf
10from autotest_lib.client.cros import service_stopper
11
12class graphics_PerfControl(test.test):
13  version = 1
14
15  # None-init vars used by cleanup() here, in case setup() fails
16  _services = None
17
18  def initialize(self):
19    self._services = service_stopper.ServiceStopper(['ui'])
20
21  def cleanup(self):
22    if self._services:
23      self._services.restore_services()
24
25  def run_once(self):
26    logging.info(utils.get_board_with_frequency_and_memory())
27
28    # If UI is running, we must stop it and restore later.
29    self._services.stop_services()
30
31    # Wrap the test run inside of a PerfControl instance to make machine
32    # behavior more consistent.
33    with perf.PerfControl() as pc:
34      if not pc.verify_is_valid():
35        raise error.TestError(pc.get_error_reason())
36      # Do nothing for a short while so the PerfControl thread is collecting
37      # real data.
38      time.sleep(10)
39
40      if not pc.verify_is_valid():
41        raise error.TestError(pc.get_error_reason())
42