# 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. from autotest_lib.client.common_lib.cros import kernel_utils from autotest_lib.server.cros.update_engine import update_engine_test class autoupdate_FromUI(update_engine_test.UpdateEngineTest): """Trigger an update from the UI. Start an update by clicking on the 'Check for update' button in the Chrome OS settings menu, instead of calling to update_engine_client directly. """ version = 1 _UI_TEST = 'autoupdate_UpdateFromUI' def run_once(self, full_payload=True, job_repo_url=None, running_at_desk=False): """ Tests that we can successfully perform an update via the UI. @param full_payload: True for a full payload. False for delta. @param job_repo_url: Used for debugging locally. This is used to figure out the current build and the devserver to use. The test will read this from a host argument when run in the lab. @param running_at_desk: True if the test is being run locally. """ payload_url = self.get_payload_for_nebraska( job_repo_url, full_payload=full_payload, public_bucket=running_at_desk) active, inactive = kernel_utils.get_kernel_state(self._host) # Login and click 'Check for update' in the Settings app. self._run_client_test_and_check_result(self._UI_TEST, payload_url=payload_url) self._host.reboot() # Check that the update completed successfully rootfs_hostlog, _ = self._create_hostlog_files() self.verify_update_events(self._CUSTOM_LSB_VERSION, rootfs_hostlog) kernel_utils.verify_boot_expectations(inactive, host=self._host)