177f0c6c143bb062d1a976fcf710d8007f008d6edmbligh# This requires aio headers to build.
24b089663460063b638124ff665f38d2fe7427648mbligh# Should work automagically out of deps now.
377f0c6c143bb062d1a976fcf710d8007f008d6edmbligh
40afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski# NOTE - this should also have the ability to mount a filesystem,
577f0c6c143bb062d1a976fcf710d8007f008d6edmbligh# run the tests, unmount it, then fsck the filesystem
634d0117395947490dbeed9bb1368bb360919266dmblighimport os
753da18eddf69243ca175d9a4603cba5b55300726mblighfrom autotest_lib.client.bin import test, utils
89f8579202a07a123a3f73c1eb2211d8fe9553b11mbligh
9aa0e569908d465a9f4958fca7a35e6a21e92e286mbligh
1077f0c6c143bb062d1a976fcf710d8007f008d6edmblighclass fsx(test.test):
11bfcf5706bb05eb508c8764c2e90df79c2b21f643Gwendal Grignou    """Test to run fsx-linux."""
120afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski    version = 3
130afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski
14c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh    def initialize(self):
15c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh        self.job.require_gcc()
16c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh
17c5ddfd1f71caef9ec0c84c53ef7db42fcdc33e1cmbligh
180afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski    # http://www.zip.com.au/~akpm/linux/patches/stuff/ext3-tools.tar.gz
190afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski    def setup(self, tarball = 'ext3-tools.tar.gz'):
208b352856e457518fde6bab947d8fcdb3f53a39admbligh        self.tarball = utils.unmap_url(self.bindir, tarball, self.tmpdir)
2153da18eddf69243ca175d9a4603cba5b55300726mbligh        utils.extract_tarball_to_dir(self.tarball, self.srcdir)
220afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski
230afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski        os.chdir(self.srcdir)
24bfcf5706bb05eb508c8764c2e90df79c2b21f643Gwendal Grignou        for p in ['0001-Minor-fixes-to-PAGE_SIZE-handling.patch',
25bfcf5706bb05eb508c8764c2e90df79c2b21f643Gwendal Grignou                  '0002-Enable-cross-compiling-for-fsx.patch',
26bfcf5706bb05eb508c8764c2e90df79c2b21f643Gwendal Grignou                  '0003-Fix-Link-Options.patch']:
27bfcf5706bb05eb508c8764c2e90df79c2b21f643Gwendal Grignou            utils.system('patch -p1 < ../%s' % p)
28bfcf5706bb05eb508c8764c2e90df79c2b21f643Gwendal Grignou        utils.system('make fsx-linux')
290afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski
300afbb6369aa5aa9a75ea67dd9e95ec4b21c0c181jadmanski
315664cff2355c18e3b694ff4e76ca621d32b0d0afjadmanski    def run_once(self, dir=None, repeat=100000):
325664cff2355c18e3b694ff4e76ca621d32b0d0afjadmanski        args = '-N %s' % repeat
335664cff2355c18e3b694ff4e76ca621d32b0d0afjadmanski        if not dir:
345664cff2355c18e3b694ff4e76ca621d32b0d0afjadmanski            dir = self.tmpdir
355664cff2355c18e3b694ff4e76ca621d32b0d0afjadmanski        os.chdir(dir)
36bfcf5706bb05eb508c8764c2e90df79c2b21f643Gwendal Grignou        utils.system(' '.join([os.path.join(self.srcdir,'/fsx-linux'),
37bfcf5706bb05eb508c8764c2e90df79c2b21f643Gwendal Grignou                               args, 'poo']))
38