| Index: server/site_wifitest.py
|
| diff --git a/server/site_wifitest.py b/server/site_wifitest.py
|
| index de58aace31e06316133c657ab886848fbcd7ead1..5f070b8cd14b082e385c06fb0bcde413c1a6455f 100644
|
| --- a/server/site_wifitest.py
|
| +++ b/server/site_wifitest.py
|
| @@ -9,6 +9,7 @@ from autotest_lib.server import site_bsd_router
|
| from autotest_lib.server import site_linux_router
|
| from autotest_lib.server import site_host_attributes
|
| from autotest_lib.server import site_eap_tls
|
| +from autotest_lib.server import test
|
| from autotest_lib.client.common_lib import error
|
|
|
| class NotImplemented(Exception):
|
| @@ -810,3 +811,63 @@ def read_wifi_testbed_config(file, client_addr=None, server_addr=None,
|
| config['tagname'] = router['addr']
|
|
|
| return config
|
| +
|
| +def run_test_dir(test_name, job, args, machines):
|
| + # convert autoserv args to something usable
|
| + opts = dict([[k, v] for (k, e, v) in [x.partition('=') for x in args]])
|
| +
|
| + config_file = opts.get('config_file', 'wifi_testbed_config')
|
| + test_pat = opts.get('test_pat', '[0-9]*')
|
| + router_addr = opts.get('router_addr', None)
|
| + server_addr = opts.get('server_addr', None)
|
| +
|
| + config = read_wifi_testbed_config(
|
| + os.path.join(job.configdir, config_file),
|
| + client_addr = machines[0], # NB: take client identity from command line
|
| + router_addr = router_addr,
|
| + server_addr = server_addr)
|
| + server = config['server']
|
| + router = config['router']
|
| +
|
| + logging.info("Client %s, Server %s, AP %s" % \
|
| + (machines[0], server.get('addr', 'N/A'), router['addr']))
|
| +
|
| + test_dir = os.path.join(job.serverdir, "site_tests", test_name)
|
| +
|
| + for t in read_tests(test_dir, test_pat):
|
| + job.run_test(test_name, testcase=t, config=config, tag=t['file'])
|
| +
|
| +class test(test.test):
|
| + """
|
| + Base class for network_WiFi* classes that are created in the control
|
| + directory for each test suite
|
| + """
|
| + version = 1
|
| +
|
| + def expect_failure(self, name, reason):
|
| + if reason is None:
|
| + reason = "no reason given"
|
| + logging.info("%s: ignore failure (%s)", name, reason)
|
| +
|
| +
|
| + # The testcase config, setup, etc are done out side the individual
|
| + # test loop, in the control file.
|
| + def run_once(self, testcase, config):
|
| + name = testcase['name']
|
| + try:
|
| + if 'skip_test' in testcase:
|
| + logging.info("%s: SKIP: %s", name, testcase['skip_test'])
|
| + else:
|
| + wt = WiFiTest(name, testcase['steps'], config)
|
| + wt.run()
|
| + wt.write_keyvals(self)
|
| + except error.TestFail:
|
| + if 'expect_failure' in testcase:
|
| + self.expect_failure(name, testcase['expect_failure'])
|
| + else:
|
| + raise
|
| + except Exception, e:
|
| + if 'expect_failure' in testcase:
|
| + self.expect_failure(name, testcase['expect_failure'])
|
| + else:
|
| + raise error.TestFail(e)
|
|
|