# Copyright (c) 2014 The Chromium OS Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import logging, time from autotest_lib.client.bin import test, utils from autotest_lib.client.common_lib import error from autotest_lib.client.cros import perf from autotest_lib.client.cros import service_stopper from autotest_lib.client.cros.graphics import graphics_utils class graphics_PerfControl(graphics_utils.GraphicsTest): version = 1 # None-init vars used by cleanup() here, in case setup() fails _services = None def initialize(self): super(graphics_PerfControl, self).initialize() self._services = service_stopper.ServiceStopper(['ui']) def cleanup(self): if self._services: self._services.restore_services() super(graphics_PerfControl, self).cleanup() @graphics_utils.GraphicsTest.failure_report_decorator('graphics_PerfControl') def run_once(self): logging.info(utils.get_board_with_frequency_and_memory()) # If UI is running, we must stop it and restore later. self._services.stop_services() # Wrap the test run inside of a PerfControl instance to make machine # behavior more consistent. with perf.PerfControl() as pc: if not pc.verify_is_valid(): raise error.TestFailure('Failed: %s' % pc.get_error_reason()) # Do nothing for a short while so the PerfControl thread is collecting # real data. time.sleep(10) if not pc.verify_is_valid(): raise error.TestFail('Failed: %s' % pc.get_error_reason())