# 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.

AUTHOR = 'matthewmwang'
TIME = 'SHORT'
NAME = 'network_WiFi_BSSTMReq'
TEST_TYPE = 'Server'
#ATTRIBUTES = ('suite:wifi_endtoend, suite:wifi_release, '
#              'suite:wifi_matfunc, suite:wifi_matfunc_noservo')
ATTRIBUTES = ('suite:wifi_flaky')
DEPENDENCIES = 'wificell'

DOC = """
WiFi_BSSTMReq test configures two APs with the same ssid and runs the
network_WiFi_BSSTMReq test which uses these APs to test a BSS Transition
Management Request.
"""

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


parallel_simple(run, machines)
