| # Copyright (c) 2011 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. |
| |
| AUTHOR = "Chrome OS Team" |
| TIME = "LONG" |
| NAME = "NetworkWiFi" |
| TEST_CATEGORY = "Stress" |
| TEST_CLASS = "suite" |
| TEST_TYPE = "server" |
| |
| DOC = """ |
| This test suite runs automated WiFi enclosure tests that should all pass. |
| |
| WiFiMatFunc and WiFiSecMat make up a suite of 3-machine tests to validate |
| basic WiFi functionality. One client, one server, and one programmable WiFi |
| AP/Router are required (either off-the-shelf with a network-accesible CLI or a |
| Linux/BSD system with a WiFi card that supports HostAP functionality). |
| |
| Configuration information to run_test: |
| |
| server - the IP address of the server (automatically filled in) |
| client - the IP address of the client (automatically filled in) |
| router - the IP address of the WiFi AP/Router and the names of the |
| wifi and wired devices to configure |
| """ |
| |
| import os |
| import time |
| |
| from autotest_lib.client.common_lib import error |
| from autotest_lib.server import site_host_attributes, site_remote_power |
| from autotest_lib.server import site_wifitest |
| from autotest_lib.server.hosts import ssh_host |
| |
| |
| # Time in seconds to leave power off during power cycle. |
| POWER_CYCLE_TIME_SECS = 1 |
| |
| # Timeout in seconds for waiting for APs to come back from power cycle. |
| POWER_CYCLE_TIMEOUT_SECS = 120 |
| |
| # Time to wait between each ssh check to |
| POWER_CYCLE_SLEEP_SECS = 30 |
| |
| |
| def run_server_tests(machine): |
| client_attributes = site_host_attributes.HostAttributes(machine) |
| remote_power = site_remote_power.RemotePower(machine) |
| |
| if remote_power: |
| remote_power.set_power_on() |
| else: |
| raise error.TestNAError('No power switch configured.') |
| |
| # Power cycle the entire unit prior to testing. Not expecting any exceptions, |
| # but shouldn't leave power off no matter what happens. |
| try: |
| remote_power.set_power_off() |
| time.sleep(POWER_CYCLE_TIME_SECS) |
| finally: |
| remote_power.set_power_on() |
| |
| # Wait for devices to come back. |
| router = ssh_host.SSHHost(client_attributes.router_addr) |
| server = ssh_host.SSHHost(client_attributes.server_addr) |
| timeout = time.time() + POWER_CYCLE_TIMEOUT_SECS |
| while True: |
| time.sleep(POWER_CYCLE_SLEEP_SECS) |
| |
| if router.is_up() and server.is_up(): |
| break |
| |
| if time.time() > timeout: |
| raise error.TestFail('Network hardware did not come back after power ' |
| 'cycle.') |
| |
| args.append('router_addr=' + str(client_attributes.router_addr)) |
| args.append('server_addr=' + str(client_attributes.server_addr)) |
| |
| site_wifitest.run_test_dir('network_WiFiSecMat' , job, args, machine) |
| site_wifitest.run_test_dir('network_WiFiMatFunc', job, args, machine) |
| site_wifitest.run_test_dir('network_WiFiManager', job, args, machine) |
| site_wifitest.run_test_dir('network_VPN' , job, args, machine) |
| |
| |
| parallel_simple(run_server_tests, machines) |