# Copyright 2018 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 = "dhaddock, Chromium OS"
NAME = "autoupdate_P2P.delta"
PURPOSE = "Test autoupdate via peer to peer(P2P)."
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "platform"
TEST_TYPE = "server"
ATTRIBUTES = "suite:au-perbuild"
SYNC_COUNT = 2
JOB_RETRIES = 2
DOC = """
This tests autoupdate between two devices via peer to peer.

Since the test uses two different DUTs in the lab together it is more
difficult to debug at your desk.

Use the control.local to run this test locally.

"""

from autotest_lib.server import utils as server_utils

def run(ntuple):
    host_list = []
    for machine in ntuple:
        host_list.append(hosts.create_host(machine))
    job.run_test('autoupdate_P2P', hosts=host_list)

ntuples, failures = server_utils.form_ntuples_from_machines(machines,
                                                            SYNC_COUNT)

# Use log=False in parallel_simple to avoid an exception in setting up
# the incremental parser when SYNC_COUNT > 1.
job.parallel_simple(run, ntuples, log=False)
