# Copyright 2015 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 = 'samueltan, ejcaruso'
NAME = 'network_WiFi_FastReconnectInDarkResume'
TIME = 'SHORT'
TEST_TYPE = 'Server'
DEPENDENCIES = 'servo_state:WORKING, wificell, lucidsleep'
ATTRIBUTES = 'suite:wifi_lucidsleep'

DOC = """
This test verifies that, during suspend, when a DUT is momentarily disconnected
from an AP that is still up, the DUT will reconnect to that AP during the same
dark resume that was triggered by the disconnect.

We verify the connectivity status of the DUT on resume by parsing shill logs,
since the delays involved in waking a DUT from suspend using autotest framework
make real-time checks inaccurate.
"""

from autotest_lib.client.common_lib.cros.network import xmlrpc_datatypes
from autotest_lib.client.common_lib.cros.network import xmlrpc_security_types
from autotest_lib.server.cros.network import hostap_config
from autotest_lib.server import utils

args_dict = utils.args_to_dict(args)
servo_args = hosts.CrosHost.get_servo_arguments(args_dict)

def run(machine):
    host = hosts.create_host(machine, servo_args=servo_args)
    job.run_test('network_WiFi_FastReconnectInDarkResume',
                 host=host,
                 raw_cmdline_args=args)

parallel_simple(run, machines)
