blob: ba5db07a84e2e96f2161efd00630b183c3f5b145 [file] [log] [blame]
mbligh56a91f02006-09-14 17:55:19 +00001import test
2from autotest_utils import *
3
4class netperf2(test.test):
5 version = 1
6
7 # ftp://ftp.netperf.org/netperf/netperf-2.4.1.tar.gz
8 def setup(self, tarball = 'netperf-2.4.1.tar.gz'):
9 tarball = unmap_url(self.bindir, tarball, self.tmpdir)
10 extract_tarball_to_dir(tarball, self.srcdir)
11 os.chdir(self.srcdir)
12
13 system('./configure')
14 system('make')
mbligh54e56842006-09-23 06:02:54 +000015
16
17 def initialize(self):
mbligh56a91f02006-09-14 17:55:19 +000018 self.server_path = os.path.join(self.srcdir, 'src/netserver')
19 self.client_path = os.path.join(self.srcdir, 'src/netperf')
20
mbligh54e56842006-09-23 06:02:54 +000021
22 def execute(self, role='client', script='snapshot_script', args=''):
23 all = ['127.0.0.1#netperf-server', '127.0.0.1#netperf-client']
24 job = self.job
25 if (role == 'server'):
26 hostid = '127.0.0.1#netperf-server'
27 self.server_start()
28 job.barrier(hostid, 'start', 30).rendevous(*all)
29 job.barrier(hostid, 'stop', 30).rendevous(*all)
30 barrier.rendevous(*all)
31 self.server_stop()
32 elif (role == 'client'):
33 hostid = '127.0.0.1#netperf-client'
34 os.environ['NETPERF_CMD'] = self.client_path
35 job.barrier(hostid, 'start', 30).rendevous(*all)
36 self.client(script)
37 job.barrier(hostid, 'stop', 30).rendevous(*all)
38 else:
39 raise UnhandledError('invalid role specified')
40
mbligh56a91f02006-09-14 17:55:19 +000041
42 def server_start(self):
mbligh54e56842006-09-23 06:02:54 +000043 # we should really record the pid we forked off, but there
44 # was no obvious way to run the daemon in the foreground.
45 # Hacked it for now
46 system('killall netserver')
mbligha8cc6e02006-09-23 05:00:33 +000047 system(self.server_path)
mbligh56a91f02006-09-14 17:55:19 +000048
mbligh54e56842006-09-23 06:02:54 +000049
mbligh56a91f02006-09-14 17:55:19 +000050 def server_stop(self):
51 # this should really just kill the pid I forked, but ...
52 system('killall netserver')
53
mbligh54e56842006-09-23 06:02:54 +000054
mbligh56a91f02006-09-14 17:55:19 +000055 def client(self, script, server_host = 'localhost', args = 'CPU'):
56 # run some client stuff
57 stdout_path = os.path.join(self.resultsdir, script + '.stdout')
58 stderr_path = os.path.join(self.resultsdir, script + '.stderr')
59
60 self.job.stdout.tee_redirect(stdout_path)
61 self.job.stderr.tee_redirect(stderr_path)
mbligha8cc6e02006-09-23 05:00:33 +000062 system(os.path.join(self.srcdir, 'doc/examples', script) \
63 + ' ' + args)
mbligh56a91f02006-09-14 17:55:19 +000064 self.job.stdout.restore()
65 self.job.stderr.restore()