# 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 on a
devserver. 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

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

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)
