# Copyright 2016 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 = 'lgoodby'
NAME = 'autotest_SyncCount'
SYNC_COUNT = 2
TIME = 'MEDIUM'
TEST_TYPE = 'Server'
ATTRIBUTES = 'suite:push_to_prod'

DOC = """
Tests that SYNC_COUNT schedules 2 hosts.
"""

from autotest_lib.server import utils as server_utils


def run(ntuple):
  job.run_test('autotest_SyncCount', ntuple=ntuple)

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

for failure in failures:
  job.record('FAIL', None, str(failure))

# 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)
