# Copyright (c) 2012 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 from autotest_lib.client.bin import test, utils from autotest_lib.client.common_lib import error from autotest_lib.client.cros import service_stopper from autotest_lib.client.cros.graphics import graphics_utils class graphics_LibDRM(graphics_utils.GraphicsTest): version = 1 _services = None def initialize(self): super(graphics_LibDRM, self).initialize() self._services = service_stopper.ServiceStopper(['ui']) def cleanup(self): super(graphics_LibDRM, self).cleanup() if self._services: self._services.restore_services() def run_once(self): keyvals = {} # These are tests to run for all platforms. tests_common = ['modetest'] # Determine which tests to run based on the architecture type. tests_exynos5 = ['kmstest'] tests_mediatek = ['kmstest'] tests_qualcomm = ['kmstest'] tests_rockchip = ['kmstest'] arch_tests = { 'amd': [], 'arm': [], 'exynos5': tests_exynos5, 'i386': [], 'mediatek': tests_mediatek, 'qualcomm': tests_qualcomm, 'rockchip': tests_rockchip, 'tegra': [], 'x86_64': [] } soc = utils.get_cpu_soc_family() if not soc in arch_tests: raise error.TestFail('Error: Architecture "%s" not supported.', soc) elif soc == 'tegra': logging.warning('Tegra does not support DRM.') return tests = tests_common + arch_tests[soc] # If UI is running, we must stop it and restore later. self._services.stop_services() for test in tests: self.add_failures(test) # Make sure the test exists on this system. Not all tests may be # present on a given system. if utils.system('which %s' % test): logging.error('Could not find test %s.', test) keyvals[test] = 'NOT FOUND' continue # Run the test and check for success based on return value. return_value = utils.system(test) if return_value: logging.error('%s returned %d', test, return_value) keyvals[test] = 'FAILED' else: keyvals[test] = 'PASSED' self.remove_failures(test) self.write_perf_keyval(keyvals) if self.get_failures(): raise error.TestFail('Failed: %d libdrm tests failed.' % len(self.get_failures()))