# Copyright 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, os from autotest_lib.client.bin import test, utils from autotest_lib.client.common_lib import error from autotest_lib.client.cros.graphics import graphics_utils class graphics_PiglitBVT(test.test): """ Runs a slice of the passing Piglit test sets. """ version = 1 test_scripts = 'test_scripts/' GSC = None def initialize(self): self.GSC = graphics_utils.GraphicsStateChecker() def cleanup(self): if self.GSC: keyvals = self.GSC.get_memory_keyvals() for key, val in keyvals.iteritems(): self.output_perf_value(description=key, value=val, units='bytes', higher_is_better=False) self.GSC.finalize() self.write_perf_keyval(keyvals) def run_once(self, test_slice): # TODO(ihf): Remove this once Piglit works on freon. if utils.is_freon(): return gpu_family = utils.get_gpu_family() family = gpu_family logging.info('Detected gpu family %s.', gpu_family) # TODO(ihf): Delete this once we have a piglit that runs on ARM. if gpu_family in ['mali', 'tegra']: logging.info('Not running any tests, passing by default.') return scripts_dir = os.path.join(self.bindir, self.test_scripts) family_dir = os.path.join(scripts_dir, family) # We don't want to introduce too many combinations, so fall back. if not os.path.isdir(family_dir): family = 'other' family_dir = os.path.join(scripts_dir, family) logging.info('Using scripts for gpu family %s.', family) scripts_dir = os.path.join(self.bindir, self.test_scripts) # Mark scripts executable if they are not. utils.system('chmod +x ' + scripts_dir + '*/graphics_PiglitBVT_*.sh') # Kick off test script. cmd = ('source ' + os.path.join(family_dir, 'graphics_PiglitBVT_%d.sh' % test_slice)) logging.info('Executing cmd = %s', cmd) result = utils.run(cmd, stdout_tee=utils.TEE_TO_LOGS, stderr_tee=utils.TEE_TO_LOGS, ignore_status = True) tests_failed = result.exit_status if tests_failed: reason = '%d tests failed on "%s" in slice %d' % (tests_failed, gpu_family, test_slice) raise error.TestError(reason)