# Copyright (c) 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.

# TEST IS DISABLED UNTIL MIGRATED TO PYTHON 3.
# For instructions on how to: go/tauto-py3-migration
# To re-enable migrate to Python 3.
# If the test is not migrated by 1/14/22 it will be deleted.

AUTHOR = 'zqiu, wiley, pstew, quiche'
NAME = 'network_WiFi_Reassociate'
TIME = 'SHORT'
TEST_TYPE = 'Server'
ATTRIBUTES = ''
DEPENDENCIES = 'wificell'

DOC = """
This test is designed to perform timing test for wpa_supplicant reassociate
command.
"""


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


parallel_simple(run, machines)
