# Copyright 2022 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

AUTHOR = "kimjae, ChromiumOS"
NAME = "autoupdate_DeferredUpdate.full"
METADATA = {
  "contacts": [
    "chromeos-core-services@google.com",
    "chromeos-sw-engprod@google.com"
  ],
  "bug_component": "b:908319",
  "criteria": "Test deferred update."
}
TIME = "MEDIUM"
TEST_TYPE = "server"
ATTRIBUTES = "suite:au-perbuild"
DOC = """
Tests that the DUT handles deferred updates.

Deferred updates allow an update to be deferred, meaning that the inactive
slots of both firmware and OS will hold valid updates, but not be set to the
active slots.

Deferred updates only apply on periodic update checks, hence it's required to
schedule periodic update checks using (test-update-check-internal-timeout).
This is because interactive update policy checks are a higher priority in the
policy precedence.

Refer to autoupdate_Basic's control.delta file for instructions on how to run
this test locally from your workstation.
"""

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_DeferredUpdate', host=host,
                 **args_dict)

job.parallel_simple(run, machines)
