56 lines
2.6 KiB
Python
56 lines
2.6 KiB
Python
# Copyright 2014 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.
|
|
|
|
from autotest_lib.client.common_lib import error
|
|
from autotest_lib.client.common_lib.cros.network import apmanager_constants
|
|
from autotest_lib.client.common_lib.cros.network import xmlrpc_datatypes
|
|
from autotest_lib.server.cros.network import apmanager_service_provider
|
|
from autotest_lib.server.cros.network import wifi_cell_test_base
|
|
|
|
|
|
class apmanager_SimpleConnect(wifi_cell_test_base.WiFiCellTestBase):
|
|
"""Test that the DUT can connect to an AP created by apmanager."""
|
|
version = 1
|
|
|
|
XMLRPC_BRINGUP_TIMEOUT_SECONDS = 60
|
|
|
|
def parse_additional_arguments(self, commandline_args, additional_params):
|
|
"""Hook into super class to take control files parameters.
|
|
|
|
@param commandline_args dict of parsed parameters from the autotest.
|
|
@param additional_params dict of AP configuration parameters.
|
|
|
|
"""
|
|
self._configurations = additional_params
|
|
|
|
|
|
def run_once(self):
|
|
"""Sets up a router, connects to it, pings it."""
|
|
# Setup bridge mode test environments if AP is configured to operate in
|
|
# bridge mode.
|
|
if (apmanager_constants.CONFIG_OPERATION_MODE in self._configurations
|
|
and self._configurations[apmanager_constants.CONFIG_OPERATION_MODE]
|
|
== apmanager_constants.OPERATION_MODE_BRIDGE):
|
|
# Setup DHCP server on the other side of the bridge.
|
|
self.context.router.setup_bridge_mode_dhcp_server()
|
|
self._configurations[apmanager_constants.CONFIG_BRIDGE_INTERFACE] =\
|
|
self.context.router.get_bridge_interface()
|
|
|
|
ssid = self.context.router.build_unique_ssid()
|
|
self._configurations[apmanager_constants.CONFIG_SSID] = ssid
|
|
with apmanager_service_provider.ApmanagerServiceProvider(
|
|
self.context.router, self._configurations):
|
|
assoc_params = xmlrpc_datatypes.AssociationParameters()
|
|
assoc_params.ssid = ssid
|
|
self.context.assert_connect_wifi(assoc_params)
|
|
self.context.assert_ping_from_server()
|
|
# AP is terminated, wait for client to become disconnected.
|
|
success, state, elapsed_seconds = \
|
|
self.context.client.wait_for_service_states(
|
|
ssid, ( 'idle', ), 30)
|
|
if not success:
|
|
raise error.TestFail('Failed to disconnect from %s after AP was '
|
|
'terminated for %f seconds (state=%s)' %
|
|
(ssid, elapsed_seconds, state))
|