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

import time
import uuid

from autotest_lib.client.common_lib import error
from autotest_lib.server import hosts
from autotest_lib.server.cros import queue_barrier

AUTHOR = "chromeos-installer@google.com"
NAME = "p2p_EndToEndTest"
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "platform"
TEST_TYPE = "server"
BUG_TEMPLATE = {
    'cc': ['chromeos-installer-alerts@google.com'],
    'components': ['Internals>Installer'],
}

DOC = """
End-to-end test of the peer-to-peer (p2p) file sharing system.

The test runs over a set of N machines generating a random file in one of
them (called the "master") and sharing it with the rest of the machines. The
success condition of this test occurs when all the N machines have the same
generated file before a certain timeout.

To simulate a progressive download of the shared file in the master, the
file becomes available in two parts. The first part of the file is available
at the beginning of the test, while the second part appears later.
"""

def run(machine):
    dut = hosts.create_host(machine)

    job.run_test('p2p_EndToEndTest',
                 dut=dut,
                 file_id=file_id,
                 is_master=(machine == master),
                 peers=machines,
                 barrier=barrier)

if len(machines) < 2:
    raise error.TestError('At least two machines are needed for this test')

# The file ID shared among all test machines.
file_id = "%s-%s" % (time.strftime("%Y%m%d-%H%M"), uuid.uuid4())

# Create the shared QueueBarrier to synchronize the processes.
barrier = queue_barrier.QueueBarrier(len(machines)-1)

# Pick any DUT as the master.
master = machines[0]

job.parallel_simple(run, machines)
