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

AUTHOR = "kyleshima, ChromiumOS"
NAME = "autoupdate_WithDLC.delta"
METADATA = {
  "contacts": [
    "chromeos-core-services@google.com",
    "chromeos-sw-engprod@google.com"
  ],
  "bug_component": "b:908319",
  "criteria": "Tests installing a DLC and doing an N-to-N update with DLC present."
}
TIME = "MEDIUM"
TEST_TYPE = "server"
ATTRIBUTES = "suite:au-perbuild"
DOC = """
This tests that DLC can be installed, and auto-updated together with the OS
using a delta payload.

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_WithDLC', host=host, full_payload=False,
                 **args_dict)

job.parallel_simple(run, machines)
