blob: a50443a97fbc6ead87725480c39b688ea41d7fd2 [file] [log] [blame]
# 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.
import logging
import time
from autotest_lib.client.common_lib import error
from autotest_lib.client.bin import test
from autotest_lib.client.cros.networking.chrome_testing \
import chrome_networking_test_context as cntc
from autotest_lib.client.cros.networking.chrome_testing \
import chrome_networking_test_api as cnta
from \
import chrome_net_constants
class network_RoamWifiEndToEnd(test.test):
Tests the following with chrome.networkingPrivate APIs:
1. Tests that the DUT can see and connect to the configured AP.
2. Tests the DUT can Roam/Failover between networks with same SSID.
version = 1
def _find_configured_network(self):
"""Check if the required network is in the networks_found list.
@return Service list of the required network; None if network not found
networks = self.chrome_networking.get_wifi_networks()
for service in networks:
if service['Name'] == self.SSID:
return service
return None
def _find_and_connect_to_configured_network(self):
"""Find all networks in range and connect to the required network."""
network = self._find_configured_network()
if network is None:
raise error.TestFail('Network with ssid=%s is not found', self.SSID)
def _verify_device_roamed(self):
"""Verify that the device has roamed between networks.
@raises error.TestFail if connect to second AP has failed.
# Give the DUT some time to roam to the other AP and connect.
required_network_service_list = self._find_configured_network()
# Check if the network exists and it is in connected state.
if required_network_service_list is None:
raise error.TestFail('Network with ssid=%s is not found', self.SSID)
if required_network_service_list['ConnectionState'] != 'Connected':
raise error.TestFail(
'DUT failed to roam/connect to the second network')
if required_network_service_list['ConnectionState'] == 'Connected':'DUT successfully roamed to the other Open network')
def run_once(self, ssid, test):
"""Run the test.
@param ssid: SSID of the APs.
@param test: Set by the server test control file depending on the test
that is being run.
self.SSID = ssid
with cntc.ChromeNetworkingTestContext() as testing_context:
self.chrome_networking = cnta.ChromeNetworkProvider(testing_context)
enabled_devices = self.chrome_networking.get_enabled_devices()
if (self.chrome_networking.WIFI_DEVICE not in
if test == chrome_net_constants.OPEN_CONNECT:
elif test == chrome_net_constants.OPEN_ROAM: