81ebdd4786876b5d8d4806e7f150d1ef9b63ee62
[barrelfish] / tools / harness / tests / nfscat.py
1 ##########################################################################
2 # Copyright (c) 2009, 2010, 2011, ETH Zurich.
3 # All rights reserved.
4 #
5 # This file is distributed under the terms in the attached LICENSE file.
6 # If you do not find this file, copies can be found by writing to:
7 # ETH Zurich D-INFK, Haldeneggsteig 4, CH-8092 Zurich. Attn: Systems Group.
8 ##########################################################################
9
10 import socket, datetime
11 import tests, siteconfig
12 from common import TestCommon
13 from results import PassFailResult
14
15 NFS_TIMEOUT = datetime.timedelta(minutes=5)
16
17 @tests.add_test
18 class NFSTest(TestCommon):
19     '''NFS benchmark'''
20     name = "nfscat"
21
22     def get_modules(self, build, machine):
23         cardName = "e1000"
24         modules = super(NFSTest, self).get_modules(build, machine)
25         modules.add_module("net_sockets_server", ["auto"])
26         nfsip = socket.gethostbyname(siteconfig.get('WEBSERVER_NFS_HOST'))
27         nfspath = siteconfig.get('WEBSERVER_1G_PATH')
28         nfsfile = siteconfig.get('WEBSERVER_1G_FILE')
29
30         modules.add_module("netthroughput",
31                 ["core=%d" % machine.get_coreids()[2], "nfs://" + nfsip +
32                           nfspath , "/nfs/" + nfsfile])
33         return modules
34
35     def get_finish_string(self):
36         return "## Data size ="
37
38     def boot(self, *args):
39         super(NFSTest, self).boot(*args)
40         self.set_timeout(NFS_TIMEOUT)
41
42     def process_data(self, testdir, rawiter):
43         # the test passed iff the last line is the finish string
44         lastline = ''
45         for line in rawiter:
46             lastline = line
47         passed = lastline.startswith(self.get_finish_string())
48         return PassFailResult(passed)