# 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 = 'avakulenko, wiley, keybuk'
NAME = 'privetd_PrivetSetupFlow'
TIME = 'FAST'
TEST_TYPE = 'Server'
SUITE='tendo_experimental'
DEPENDENCIES = 'wificell'

DOC = """
This test validates the privet pairing/authentication/setup flow.

"""

from autotest_lib.client.common_lib import utils

def run(machine):
    CMDLINE_ROUTER_HOSTNAME = 'router_addr'
    cmdline_args = utils.args_to_dict(args)
    router_hostname = cmdline_args.get(CMDLINE_ROUTER_HOSTNAME, None)
    job.run_test('privetd_PrivetSetupFlow',
                 host=hosts.create_host(machine),
                 router_hostname=router_hostname)


parallel_simple(run, machines)
