# Copyright 2021 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_ForcedOOBEUpdate.m2n.full"
PURPOSE = "Test M->N forced update at OOBE."
TIME = "MEDIUM"
TEST_CATEGORY = "Functional"
TEST_CLASS = "platform"
TEST_TYPE = "server"
ATTRIBUTES = "suite:au-m2n"
DOC = """
This tests the forced autoupdate flow at OOBE.

Debugging steps:
This test cannot be debugged locally easily because
1. Using a devserver on your workstation is blocked by SNAX
2. The test relies on reading a job_repo_url which is only set by runs
initiated in the lab.

You will need to use a lab DUT and a lab devserver but kick it off from your
workstation. You can start by going to cautotest and locking a DUT.

You will need to pass a job_repo_url param to test_that.

The test needs to be able to ssh into devservers. To ssh into lab devservers
Follow these instructions to setup the ssh access to lab devservers:
https://sites.google.com/a/google.com/chromeos/for-team-members/infrastructure/chromeos-admin/devserver-access

Use this instruction to find the list of lab devservers:
atest server list | grep devserver

Get access to "Access To Chrome Lab or Cautotest" from:
https://sphinx.corp.google.com/sphinx/#accessChangeRequest:systemName=default-mnp-use-cases

Then run the test as follows:
test_that <hostname>.cros autoupdate_ForcedOOBEUpdate.m2n.full --args="job_repo_url='http://<IP>:<PORT>/static/<board>-release/RXX-XXXX.X.X/autotest/packages'"

- IP: The IP of the devserver you are running the test agains:
- PORT: The port of the devserver, normally 8082
"""

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_ForcedOOBEUpdate', host=host, full_payload=True,
                 m2n=True, **args_dict)

job.parallel_simple(run, machines)
