| # Copyright (c) 2013 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import logging |
| |
| from autotest_lib.client.common_lib import utils |
| from autotest_lib.server import test |
| |
| |
| class WiFiTestBase(test.test): |
| """An abstract base class for WiFi autotests. |
| |
| WiFiTestBase calls into a concrete test base class after setting up the |
| context for the test. The context should contain the set of clients, |
| routers, and WiFiTest servers required by the test proper. WiFiTestBase |
| also provides some simple functionality, such as logic to check that a |
| client can connect to a specified WiFi network. |
| |
| """ |
| |
| @property |
| def context(self): |
| """@return the WiFi context for this test.""" |
| return self._wifi_context |
| |
| |
| def parse_additional_arguments(self, commandline_args, additional_params): |
| """Parse additional arguments for use in test. |
| |
| Subclasses should override this method do any other commandline parsing |
| and setting grabbing that they need to do. For test clarity, do not |
| parse additional settings in the body of run_once. |
| |
| @param commandline_args dict of argument key, value pairs. |
| @param additional_params object defined by test control file. |
| |
| """ |
| pass |
| |
| |
| def warmup(self, host, raw_cmdline_args, additional_params=None): |
| """ |
| Use the additional_params argument to pass in custom test data from |
| control file to reuse test logic. This object will be passed down via |
| parse_additional_arguments. |
| |
| @param host host object representing the client DUT. |
| @param raw_cmdline_args raw input from autotest. |
| @param additional_params object passed in from control file. |
| |
| """ |
| cmdline_args = utils.args_to_dict(raw_cmdline_args) |
| logging.info('Running wifi test with commandline arguments: %r', |
| cmdline_args) |
| self._wifi_context = self.get_context(host, cmdline_args, |
| additional_params) |
| |
| self._wifi_context.setup() |
| self.parse_additional_arguments(cmdline_args, additional_params) |
| |
| |
| def cleanup(self): |
| if hasattr(self, '_wifi_context'): |
| self._wifi_context.teardown() |
| |
| |
| def get_context(self, host, cmdline_args, additional_params): |
| """Get the context object we should run this test in the context of. |
| |
| @param host Host object representing the DUT. |
| @param cmdline_args dictionary of commandline args for the test. |
| @param additional_params object passed in from the control file. |
| @return WiFi test context object for use with the test. |
| |
| """ |
| raise NotImplementedError('You must define your own get_context()!') |