| # This will need more work on the configuration stuff before it will function |
| import os |
| from autotest_lib.client.bin import test, utils |
| from autotest_lib.client.common_lib import error |
| |
| |
| class lmbench(test.test): |
| version = 4 |
| |
| def initialize(self): |
| self.job.require_gcc() |
| |
| |
| def setup(self, tarball = 'lmbench3.tar.bz2', fsdir=None, file=None): |
| """ |
| Uncompresses the original lmbench tarball, applies a patch to fix |
| some build issues, configures lmbench and then modifies the config |
| files to use appropriate directory and file locations. |
| |
| @param tarball: Lmbench tarball. |
| @param fsdir: Directory where file system tests will run |
| (defaults to standard test temp dir). |
| @param file: Path to the file lmbench will use for status output |
| (defaults to a random named file inside standard test temp dir). |
| @see: http://www.bitmover.com/lm/lmbench/lmbench3.tar.gz |
| (original tarball, shipped as is in autotest). |
| """ |
| tarball = utils.unmap_url(self.bindir, tarball, self.tmpdir) |
| utils.extract_tarball_to_dir(tarball, self.srcdir) |
| os.chdir(self.srcdir) |
| p1 = 'patch -p1 < ../0001-Fix-build-issues-with-lmbench.patch' |
| p2 = 'patch -p1 < ../0002-Changing-shebangs-on-lmbench-scripts.patch' |
| p3 = 'patch -p1 < ../0003-makefile.patch' |
| utils.system(p1) |
| utils.system(p2) |
| utils.system(p3) |
| |
| # build lmbench |
| utils.make() |
| |
| # configure lmbench |
| utils.system('yes "" | make config') |
| |
| # find the lmbench config file |
| config_files = utils.system_output('ls -1 bin/*/CONFIG*').splitlines() |
| if len(config_files) != 1: |
| raise error.TestError('Failed to find a single lmbench config file,' |
| ' found: %s' % config_files) |
| config_file = config_files[0] |
| |
| if not fsdir: |
| fsdir = self.tmpdir |
| if not file: |
| file = os.path.join(self.tmpdir, 'XXX') |
| |
| # patch the resulted config to use the proper temporary directory and |
| # file locations |
| tmp_config_file = config_file + '.tmp' |
| utils.system("sed 's!^FSDIR=.*$!FSDIR=%s!' '%s' > '%s'" % |
| (fsdir, config_file, tmp_config_file)) |
| utils.system("sed 's!^FILE=.*$!FILE=%s!' '%s' > '%s'" % |
| (file, tmp_config_file, config_file)) |
| |
| |
| def run_once(self): |
| os.chdir(self.srcdir) |
| utils.make('rerun') |
| |
| |
| def postprocess(self): |
| # Get the results: |
| outputdir = self.srcdir + "/results" |
| results = self.resultsdir + "/summary.txt" |
| utils.make("-C " + outputdir + " summary > " + results) |