import re, datetime
import debug, tests
+import subprocess
+import os
+import socket, struct
from common import TestCommon, TimeoutError
from results import RowResults, PassFailResult
TEST_TIMEOUT = datetime.timedelta(minutes=8)
-
class DevifTests(TestCommon):
def __init__(self, options):
super(DevifTests, self).boot(*args)
self.set_timeout(TEST_TIMEOUT)
+ def get_decimal_ip(self, hostname):
+ iphex = subprocess.check_output('gethostip -x %s' % hostname, shell=True)
+ return '%d' % int(iphex, 16)
+
def get_modules(self, build, machine):
self.machine = machine.name
modules = super(DevifTests, self).get_modules(build, machine)
modules.add_module("e10k", ["auto", "function=0"])
modules.add_module("sfn5122f", ["auto", "function=0"])
modules.add_module("devif_idc", ["core=1"])
- modules.add_module(self.get_module_name(), ["core=2", self.OP, self.CARD])
+ hostname = '%s.in.barrelfish.org' % subprocess.check_output('hostname -s', shell=True).rstrip()
+ src_ip = self.get_decimal_ip(hostname)
+
+ if self.CARD == "sfn5122f":
+ dst_ip = self.get_decimal_ip('%s-sf.in.barrelfish.org' % machine.name)
+ else:
+ dst_ip = self.get_decimal_ip('%s-e10k.in.barrelfish.org' % machine.name)
+
+ modules.add_module(self.get_module_name(), ["core=2", self.OP, src_ip, dst_ip, self.CARD])
return modules
- def is_finished(self, line):
- return line.startswith("SUCCESS")
+ def get_finish_string(self):
+ return "SUCCESS"
+
+ def process_line(self, line):
+ m = re.match(r'# IP Addr (\d+\.\d+\.\d+\.\d+)', line)
+ if m:
+ self.loop = subprocess.Popen('while :; do echo -n "Data Data Data" | nc -4u -q1 %s 7; done' % m.group(1), shell=True)
+
def process_data(self, testdir, rawiter):
- passed = False
+
+ if not (self.loop is None):
+ self.loop.kill()
+
for line in rawiter:
if "SUCCESS" in line:
- passed = True
- return PassFailResult(passed)
+ return PassFailResult(True)
+
+ return PassFailResult(False)
+
@tests.add_test
class DevifNetTxSF(DevifTests):
OP = "net_tx"
CARD = "sfn5122f"
-
@tests.add_test
class DevifNetTxE10k(DevifTests):
''' Devif Net TX Test'''
modules.add_module("devif_debug_test")
return modules
+
+ def process_data(self, testdir, rawiter):
+ for line in rawiter:
+ if "SUCCESS" in line:
+ return PassFailResult(True)
+
+ return PassFailResult(False)
+