# Copyright 2020 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_Basic.delta"
TIME = "MEDIUM"
PURPOSE = "Tests an N-to-N update with Nebraska."
TEST_CATEGORY = "Functional"
TEST_CLASS = "platform"
TEST_TYPE = "server"
ATTRIBUTES = "suite:au-perbuild"
DOC = """
This tests an N-to-N update. That means it will update to the same version
that the DUT was provisioned with. This test will be used in the CQ to ensure
changes don't break autoupdate.

We supply a job_repo_url to the test when running locally. In the lab this will
be passed directly. The job_repo_url is a link to the autotest packages in
cache. The test uses it to find the correct payload to use.

To get a list of available devservers to use execute this command:
atest server list | grep devserver

Use the `running_at_desk` arg when testing locally.

Example usage:
test_that autoupdate_Basic <DUT> --board=<board> --args="job_repo_url=http://<IP>:8082/static/<board>-release/RXX-XXXXX.X.X/autotest/packages running_at_desk=True"
"""

from autotest_lib.client.common_lib import utils
args_dict = utils.args_to_dict(args)

def run(machine):
    host = hosts.create_host(machine)
    job.run_test('autoupdate_Basic', host=host, full_payload=False,
                 **args_dict)

job.parallel_simple(run, machines)
