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

# This test run is meant to test AP hopping.  This is a fairly
# simple test and is very "kind" to the DUT, in the sense that
# when we do an AP deconfig, it sends out a DEAUTH, so the DUT
# should be immediately aware that it is time to scan for a new
# AP.  This should be a best-case roaming test.  This test differs
# from regular "ChannelHop" in that the BSSID of the AP is changed.
# This means that even with fullmac drivers that may change
# channels without a lot of upstream notification, this test should
# definitely cause upstream notification to the supplicant and by
# extension, flimflam.
{ "name":"ChannelHopBSS",
  "steps":[             # Channel 1,6,11
    [ "create",         { "type":"hostap" } ],

    # Set up an AP and join the DUT to it
    [ "config",         { "channel":"2412", "mode":"11b" } ],
    [ "connect",        { "security":"none" } ],
    [ "client_ping",    { "count":"10" } ],
    [ "deconfig" ],

    # Change channels on the AP.  This happens in full view of the DUT
    # and the AP deauths everyone as it exits.  Change the BSSID so that
    # this will force L3 reconfiguration in the client
    [ "config",         { "channel":"2437", "mode":"11b",
                          "bssid":"00:01:02:03:04:05" } ],

    # Wait for the DUT to scan and acquire the AP at the new frequency
    [ "wait_service",   { "run_timeout":20, # Give up in 20 seconds
                          "debug":True, # Output all state changes
                          "states":
                            [(None, '+ready')] # Wait for svc to go "ready"
                         } ],
    [ "client_ping",    { "count":"10" } ],
    [ "deconfig" ],

    # Repeat the same test at a different frequency and bssid
    [ "config",         { "channel":"2462", "mode":"11b",
                          "bssid":"00:06:07:08:09:0a" } ],
    [ "wait_service",   { "run_timeout":20,
                          "debug":True,
                          "states":[(None, '+ready')] } ],
    [ "client_ping",    { "count":"10" } ],

    [ "destroy" ],
  ],
}
