blob: 26c23d685326457e3ea4e0de4733d7d717fde9b8 [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):
8 version = 1
9
mbligh920f4122007-07-09 21:43:39 +000010 # http://www.iozone.org/src/current/iozone3_283.tar
11 def setup(self, tarball = 'iozone3_283.tar'):
mbligh34d01172008-06-05 16:26:31 +000012 tarball = utils.unmap_url(self.bindir, tarball,
mbligh9f857922008-06-05 16:19:07 +000013 self.tmpdir)
14 autotest_utils.extract_tarball_to_dir(tarball, self.srcdir)
mbligh548ace82006-10-19 14:36:45 +000015 os.chdir(os.path.join(self.srcdir, 'src/current'))
16
mbligh9f857922008-06-05 16:19:07 +000017 arch = autotest_utils.get_current_kernel_arch()
mbligh548ace82006-10-19 14:36:45 +000018 if (arch == 'ppc'):
mbligh9f857922008-06-05 16:19:07 +000019 utils.system('make linux-powerpc')
mbligh548ace82006-10-19 14:36:45 +000020 elif (arch == 'ppc64'):
mbligh9f857922008-06-05 16:19:07 +000021 utils.system('make linux-powerpc64')
mbligh548ace82006-10-19 14:36:45 +000022 elif (arch == 'x86_64'):
mbligh9f857922008-06-05 16:19:07 +000023 utils.system('make linux-AMD64')
mbligh548ace82006-10-19 14:36:45 +000024 else:
mbligh9f857922008-06-05 16:19:07 +000025 utils.system('make linux')
mbligh548ace82006-10-19 14:36:45 +000026
mbligh1f337612007-09-30 01:19:47 +000027
28 def execute(self, dir = None, iterations=1, args = None):
mbligheea785f2008-01-25 16:39:11 +000029 self.keyval = open(os.path.join(self.resultsdir, 'keyval'),
30 'w')
mbligh1f337612007-09-30 01:19:47 +000031 if not dir:
32 dir = self.tmpdir
mbligh548ace82006-10-19 14:36:45 +000033 os.chdir(dir)
34 if not args:
35 args = '-a'
mbligh9f5113d2007-06-25 23:41:10 +000036 profilers = self.job.profilers
37 if not profilers.only():
mbligh6303ed62007-07-19 16:19:16 +000038 for i in range(iterations):
mbligh9f857922008-06-05 16:19:07 +000039 output = utils.system_output('%s/src/current/iozone %s' %
mbligheea785f2008-01-25 16:39:11 +000040 (self.srcdir, args))
41 self.__format_results(output)
mbligh548ace82006-10-19 14:36:45 +000042
43 # Do a profiling run if necessary
mbligh548ace82006-10-19 14:36:45 +000044 if profilers.present():
45 profilers.start(self)
mbligh9f857922008-06-05 16:19:07 +000046 output = utils.system_output('%s/src/current/iozone %s' %
mbligheea785f2008-01-25 16:39:11 +000047 (self.srcdir, args))
48 self.__format_results(output)
mbligh548ace82006-10-19 14:36:45 +000049 profilers.stop(self)
50 profilers.report(self)
mbligheea785f2008-01-25 16:39:11 +000051
52 self.keyval.close()
mbligh6303ed62007-07-19 16:19:16 +000053
54
55 def __format_results(self, results):
56 labels = ('write', 'rewrite', 'read', 'reread', 'randread',
57 'randwrite', 'bkwdread', 'recordrewrite',
58 'strideread', 'fwrite', 'frewrite',
59 'fread', 'freread')
mbligheea785f2008-01-25 16:39:11 +000060 for line in results.splitlines():
mbligh6303ed62007-07-19 16:19:16 +000061 fields = line.split()
62 if len(fields) != 15:
63 continue
64 try:
65 fields = tuple([int(i) for i in fields])
66 except ValueError:
67 continue
68 for l, v in zip(labels, fields[2:]):
mbligheea785f2008-01-25 16:39:11 +000069 print >> self.keyval, "%d-%d-%s=%d" % (fields[0], fields[1], l, v)
70 print >> self.keyval