blob: 26d0bceabf082c6194937a903aa87908f17acde0 [file] [log] [blame]
# This requires aio headers to build.
# Should work automagically out of deps now.
# NOTE - this should also have the ability to mount a filesystem,
# run the tests, unmount it, then fsck the filesystem
import os
from autotest_lib.client.bin import test, utils
class fsx(test.test):
version = 3
def initialize(self):
self.job.require_gcc()
# http://www.zip.com.au/~akpm/linux/patches/stuff/ext3-tools.tar.gz
def setup(self, tarball = 'ext3-tools.tar.gz'):
self.tarball = utils.unmap_url(self.bindir, tarball, self.tmpdir)
utils.extract_tarball_to_dir(self.tarball, self.srcdir)
self.job.setup_dep(['libaio'])
ldflags = '-L' + self.autodir + '/deps/libaio/lib'
cflags = '-I' + self.autodir + '/deps/libaio/include'
var_ldflags = 'LDFLAGS="' + ldflags + '"'
var_cflags = 'CFLAGS="' + cflags + '"'
self.make_flags = var_ldflags + ' ' + var_cflags
os.chdir(self.srcdir)
p1 = '0001-Minor-fixes-to-PAGE_SIZE-handling.patch'
p2 = '0002-Enable-cross-compiling-for-fsx.patch'
utils.system('patch -p1 < ../%s' % p1)
utils.system('patch -p1 < ../%s' % p2)
utils.system(self.make_flags + ' make fsx-linux')
def run_once(self, dir=None, repeat=100000):
dep = 'libaio'
dep_dir = os.path.join(self.autodir, 'deps', dep)
self.job.install_pkg(dep, 'dep', dep_dir)
args = '-N %s' % repeat
if not dir:
dir = self.tmpdir
os.chdir(dir)
libs = self.autodir+'/deps/libaio/lib/'
ld_path = utils.prepend_path(libs,
utils.environ('LD_LIBRARY_PATH'))
var_ld_path = 'LD_LIBRARY_PATH=' + ld_path
cmd = self.srcdir + '/fsx-linux ' + args + ' poo'
utils.system(var_ld_path + ' ' + cmd)