blob: 52e41290e300b085548499c9d42f3a7aea8ec1ab [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
mblighc6b01ed2006-10-13 17:03:26 +000022 def execute(self, server_ip, client_ip, role,
23 script='snapshot_script', args=''):
24 server_tag = server_ip + '#netperf-server'
25 client_tag = client_ip + '#netperf-client'
26 all = [server_tag, client_tag]
mbligh54e56842006-09-23 06:02:54 +000027 job = self.job
28 if (role == 'server'):
mbligh54e56842006-09-23 06:02:54 +000029 self.server_start()
apwda2a62f2006-11-06 17:39:25 +000030 try:
31 job.barrier(server_tag, 'start',
32 30).rendevous(*all)
33 job.barrier(server_tag, 'stop',
34 3600).rendevous(*all)
35 finally:
36 self.server_stop()
mbligh54e56842006-09-23 06:02:54 +000037 elif (role == 'client'):
mbligh54e56842006-09-23 06:02:54 +000038 os.environ['NETPERF_CMD'] = self.client_path
mblighc6b01ed2006-10-13 17:03:26 +000039 job.barrier(client_tag, 'start', 30).rendevous(*all)
40 self.client(script, server_ip, args)
41 job.barrier(client_tag, 'stop', 30).rendevous(*all)
mbligh54e56842006-09-23 06:02:54 +000042 else:
43 raise UnhandledError('invalid role specified')
44
mbligh56a91f02006-09-14 17:55:19 +000045
46 def server_start(self):
mbligh54e56842006-09-23 06:02:54 +000047 # we should really record the pid we forked off, but there
48 # was no obvious way to run the daemon in the foreground.
49 # Hacked it for now
mbligh0d4a0322006-09-25 14:17:55 +000050 system('killall netserver', ignorestatus=1)
mbligha8cc6e02006-09-23 05:00:33 +000051 system(self.server_path)
mbligh56a91f02006-09-14 17:55:19 +000052
mbligh54e56842006-09-23 06:02:54 +000053
mbligh56a91f02006-09-14 17:55:19 +000054 def server_stop(self):
55 # this should really just kill the pid I forked, but ...
56 system('killall netserver')
57
mbligh54e56842006-09-23 06:02:54 +000058
mblighc6b01ed2006-10-13 17:03:26 +000059 def client(self, script, server_ip, args = 'CPU'):
mbligh56a91f02006-09-14 17:55:19 +000060 # run some client stuff
mblighc6b01ed2006-10-13 17:03:26 +000061 stdout_path = os.path.join(self.resultsdir, script + '.stdout')
62 stderr_path = os.path.join(self.resultsdir, script + '.stderr')
63 self.job.stdout.tee_redirect(stdout_path)
64 self.job.stderr.tee_redirect(stderr_path)
mbligh56a91f02006-09-14 17:55:19 +000065
mblighe8fa3af2006-09-28 23:14:56 +000066 script_path = os.path.join(self.srcdir, 'doc/examples', script)
mblighc6b01ed2006-10-13 17:03:26 +000067 system('%s %s %s' % (script_path, server_ip, args))
mblighe8fa3af2006-09-28 23:14:56 +000068
mblighc6b01ed2006-10-13 17:03:26 +000069 self.job.stdout.restore()
70 self.job.stderr.restore()