# Copyright 2017 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 = 'briannorris'
NAME = 'network_WiFi_Reset'
TIME = 'SHORT'
TEST_TYPE = 'Server'
DEPENDENCIES = 'wificell'
ATTRIBUTES = 'suite:wifi_matfunc, suite:wifi_matfunc_noservo'

DOC = """
This test verifies that if a network device can be reset from user space, that
it will connect to the network correctly after being reset a few times.
Only supports Marvell (mwifiex) at the moment, but will report TestNA for
unsupported devices.
"""

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

parallel_simple(run, machines)
