77 lines
2.7 KiB
Python
77 lines
2.7 KiB
Python
# Copyright 2019 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 pickle
|
|
import socket
|
|
|
|
from autotest_lib.server import autotest
|
|
from autotest_lib.server import site_linux_system
|
|
from autotest_lib.client.common_lib.cros import tpm_utils
|
|
from autotest_lib.server.cros.network import wifi_cell_test_base
|
|
|
|
|
|
class policy_WiFiPrecedenceServer(wifi_cell_test_base.WiFiCellTestBase):
|
|
version = 1
|
|
|
|
|
|
def cleanup(self):
|
|
"""Cleanup for this test."""
|
|
try:
|
|
super(policy_WiFiPrecedenceServer, self).cleanup()
|
|
except socket.error as e:
|
|
# Some of the WiFi components are closed when the DUT reboots,
|
|
# and a socket error is raised when cleanup tries to close them
|
|
# again.
|
|
logging.info(e)
|
|
|
|
if self.test == 'device_vs_user':
|
|
tpm_utils.ClearTPMIfOwned(self.host)
|
|
self.host.reboot()
|
|
|
|
|
|
def run_once(self, host=None, ap_configs=None, network1_config=None,
|
|
network2_config=None, precedence=None, test=None):
|
|
"""
|
|
Set up the APs then run the client side tests.
|
|
|
|
Clears the TPM because because the client test needs to enroll.
|
|
|
|
@param host: A host object representing the DUT.
|
|
@param ap_configs: List containing HostapConfig objects to setup APs.
|
|
@param network1_config: NetworkConfig object for the client-side
|
|
configuration of network1.
|
|
@param network1_config: NetworkConfig object for the client-side
|
|
configuration of network2.
|
|
@param precedence: One of 1 or 2: which of the APs the
|
|
DUT should connect to.
|
|
|
|
"""
|
|
self.context.router.require_capabilities(
|
|
[site_linux_system.LinuxSystem.CAPABILITY_MULTI_AP])
|
|
self.context.router.deconfig()
|
|
for ap_config in ap_configs:
|
|
self.context.configure(ap_config, multi_interface=True)
|
|
|
|
self.host = host
|
|
self.test = test
|
|
|
|
# Clear TPM to ensure that client test can enroll device.
|
|
if self.test == 'device_vs_user':
|
|
tpm_utils.ClearTPMIfOwned(self.host)
|
|
|
|
client_at = autotest.Autotest(self.host)
|
|
|
|
client_at.run_test(
|
|
'policy_WiFiPrecedence',
|
|
# The config objects must be pickled before they can be
|
|
# passed to the client test.
|
|
network1_pickle=pickle.dumps(network1_config),
|
|
network2_pickle=pickle.dumps(network2_config),
|
|
precedence=precedence,
|
|
test=self.test,
|
|
check_client_result=True)
|
|
|
|
self.context.router.deconfig()
|