# 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.
{ "name":"ChannelHop",
  "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.
    [ "config",         { "channel":"2437", "mode":"11b" } ],

    # Wait for the DUT to scan and acquire the AP at the new frequency
    [ "sleep",          { "time":"10" } ],

    # Verify that we're still connected
    [ "client_ping",    { "count":"10" } ],

    # Verify that the client switched to new frequency
    [ "client_check_frequency", [ "2437" ] ],

    # Repeat the same test at a different frequency
    [ "deconfig" ],
    [ "config",         { "channel":"2462", "mode":"11b" } ],

    # Wait for the DUT to scan and acquire the AP at the new frequency
    [ "sleep",          { "time":"10" } ],

    # Verify that we're still connected
    [ "client_ping",    { "count":"10" } ],

    # Verify that the client switched to new frequency
    [ "client_check_frequency", [ "2462" ] ],

    [ "destroy" ],
  ],
}
