| Index: client/site_tests/gl_Bench/gl_Bench.py
|
| diff --git a/client/site_tests/gl_Bench/gl_Bench.py b/client/site_tests/gl_Bench/gl_Bench.py
|
| index 56cab634b58d17cabf93cb4928d94df79be990b4..9072e98d269af4cf260bffd38c3622e7d14dd42d 100644
|
| --- a/client/site_tests/gl_Bench/gl_Bench.py
|
| +++ b/client/site_tests/gl_Bench/gl_Bench.py
|
| @@ -2,10 +2,25 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| +import logging
|
| import os
|
| +import re
|
|
|
| from autotest_lib.client.bin import test
|
| -from autotest_lib.client.common_lib import utils
|
| +from autotest_lib.client.common_lib import error, site_ui, utils
|
| +
|
| +def md5_file(filename):
|
| + return utils.system_output('md5sum ' + filename).split()[0]
|
| +
|
| +
|
| +def get_board_id():
|
| + glxinfo_output = utils.system_output(site_ui.xcommand('glxinfo'))
|
| + match = re.search('OpenGL vendor string: (.*)', glxinfo_output)
|
| + vendor = match.group(1) if match else 'unknown vendor'
|
| + match = re.search('OpenGL renderer string: (.*)', glxinfo_output)
|
| + renderer = match.group(1) if match else 'unknown renderer'
|
| + return (vendor + ' / ' + renderer).strip()
|
| +
|
|
|
| class gl_Bench(test.test):
|
| version = 1
|
| @@ -20,6 +35,21 @@ class gl_Bench(test.test):
|
| dep_dir = os.path.join(self.autodir, 'deps', dep)
|
| self.job.install_pkg(dep, 'dep', dep_dir)
|
|
|
| + checksum_table = {}
|
| + checksums_filename = os.path.join(self.autodir,
|
| + 'deps/glbench/src/checksums')
|
| + checksums = eval(utils.read_file(checksums_filename))
|
| +
|
| + board_id = get_board_id()
|
| + logging.info("Running on:", board_id)
|
| + checksum_table = checksums.get(board_id, {})
|
| +
|
| + if checksum_table:
|
| + options += ' -save'
|
| + out_dir = os.path.join(self.autodir, 'deps/glbench/src/out')
|
| + else:
|
| + error.TestFail("No checksums found for this board.")
|
| +
|
| exefile = os.path.join(self.autodir, 'deps/glbench/glbench')
|
| cmd = "X :1 & sleep 1; DISPLAY=:1 %s %s; kill $!" % (exefile, options)
|
| self.results = utils.system_output(cmd, retain_output=True)
|
| @@ -29,6 +59,16 @@ class gl_Bench(test.test):
|
| if keyval.strip().startswith('#'):
|
| continue
|
| key, val = keyval.split(':')
|
| - keyvals[key.strip()] = float(val)
|
| + testname = key.strip()
|
| +
|
| + if testname in checksum_table:
|
| + if checksum_table[testname] == md5_file(
|
| + os.path.join(out_dir, testname)):
|
| + keyvals[testname] = float(val)
|
| + else:
|
| + keyvals[testname] = float('nan')
|
| + else:
|
| + logging.info('No checksum found for test', testname)
|
| + keyvals[testname] = float(val)
|
|
|
| self.write_perf_keyval(keyvals)
|
|
|