# 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. import logging from autotest_lib.client.common_lib import error from autotest_lib.client.cros.update_engine import nebraska_wrapper from autotest_lib.client.cros.update_engine import update_engine_test class autoupdate_InstallAndUpdateDLC(update_engine_test.UpdateEngineTest): """Tests installing DLCs and updating them along with the OS. """ version = 1 def run_once(self, payload_urls, full_payload=True): """ Install DLC and perform an update, using nebraska. @param payload_urls: A list containing the platform payload (OS) URL and DLC payload URL(s). The platform payload is required, since DLCs are updated together with the platform. A full DLC payload is required to install the DLC. In case of a delta update, both full and delta DLC payloads should be included in payload_urls. @param full_payload: True for a full payload, False for delta. """ with nebraska_wrapper.NebraskaWrapper( payload_url=payload_urls) as nebraska: nebraska_url = nebraska.get_update_url(critical_update=True) logging.debug('Installing sample-dlc') # Nebraska will automatically use the full payload to install DLC. self._dlc_util.install(self._dlc_util._SAMPLE_DLC_ID, nebraska_url) if not self._dlc_util.is_installed(self._dlc_util._SAMPLE_DLC_ID): raise error.TestFail('Dummy DLC was not installed.') logging.debug('Updating OS and DLC') self._check_for_update(nebraska_url, wait_for_completion=True)