blob: d752d85698c34b80dc3f455854cf27d87a9b7b90 [file] [log] [blame]
mbligh548ace82006-10-19 14:36:45 +00001#!/usr/bin/python
mbligh9f857922008-06-05 16:19:07 +00002import os
3from autotest_lib.client.bin import test, autotest_utils
4from autotest_lib.client.common_lib import utils
mbligh548ace82006-10-19 14:36:45 +00005
mbligh548ace82006-10-19 14:36:45 +00006
7class iozone(test.test):
jadmanski0afbb632008-06-06 21:10:57 +00008 version = 1
mbligh548ace82006-10-19 14:36:45 +00009
mblighc5ddfd12008-08-04 17:15:00 +000010 def initialize(self):
11 self.job.require_gcc()
12
13
jadmanski0afbb632008-06-06 21:10:57 +000014 # http://www.iozone.org/src/current/iozone3_283.tar
15 def setup(self, tarball = 'iozone3_283.tar'):
mbligh8b352852008-06-07 01:07:08 +000016 tarball = utils.unmap_url(self.bindir, tarball, self.tmpdir)
jadmanski0afbb632008-06-06 21:10:57 +000017 autotest_utils.extract_tarball_to_dir(tarball, self.srcdir)
18 os.chdir(os.path.join(self.srcdir, 'src/current'))
mbligh548ace82006-10-19 14:36:45 +000019
jadmanski0afbb632008-06-06 21:10:57 +000020 arch = autotest_utils.get_current_kernel_arch()
21 if (arch == 'ppc'):
22 utils.system('make linux-powerpc')
23 elif (arch == 'ppc64'):
24 utils.system('make linux-powerpc64')
25 elif (arch == 'x86_64'):
26 utils.system('make linux-AMD64')
27 else:
28 utils.system('make linux')
mbligh548ace82006-10-19 14:36:45 +000029
mbligh1f337612007-09-30 01:19:47 +000030
mbligh89664c52008-08-27 16:16:01 +000031 def run_once(self, dir = None, args = None):
mbligh8b352852008-06-07 01:07:08 +000032 self.keyval = open(os.path.join(self.resultsdir, 'keyval'), 'w')
jadmanski0afbb632008-06-06 21:10:57 +000033 if not dir:
34 dir = self.tmpdir
35 os.chdir(dir)
36 if not args:
37 args = '-a'
mbligh89664c52008-08-27 16:16:01 +000038 output = utils.system_output('%s/src/current/iozone %s' %
39 (self.srcdir, args))
40 self.__format_results(output)
jadmanski0afbb632008-06-06 21:10:57 +000041 self.keyval.close()
mbligh6303ed62007-07-19 16:19:16 +000042
43
jadmanski0afbb632008-06-06 21:10:57 +000044 def __format_results(self, results):
45 labels = ('write', 'rewrite', 'read', 'reread', 'randread',
46 'randwrite', 'bkwdread', 'recordrewrite',
mbligh8b352852008-06-07 01:07:08 +000047 'strideread', 'fwrite', 'frewrite', 'fread', 'freread')
jadmanski0afbb632008-06-06 21:10:57 +000048 for line in results.splitlines():
49 fields = line.split()
50 if len(fields) != 15:
51 continue
52 try:
53 fields = tuple([int(i) for i in fields])
54 except ValueError:
55 continue
56 for l, v in zip(labels, fields[2:]):
57 print >> self.keyval, "%d-%d-%s=%d" % (fields[0], fields[1], l, v)
58 print >> self.keyval