49 lines
1.9 KiB
Python
49 lines
1.9 KiB
Python
# Copyright 2018 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.cros.update_engine import nebraska_wrapper
|
|
from autotest_lib.client.cros.update_engine import update_engine_test
|
|
|
|
class autoupdate_UrlSwitch(update_engine_test.UpdateEngineTest):
|
|
"""Tests that we can continue with the second url when the first fails."""
|
|
version = 1
|
|
|
|
def run_once(self, payload_url):
|
|
"""
|
|
Tests to see whether the update_engine can successfully switch to a
|
|
different URL if one fails.
|
|
|
|
@param image_url: The URL of the update payload.
|
|
|
|
"""
|
|
with nebraska_wrapper.NebraskaWrapper(
|
|
log_dir=self.resultsdir, payload_url=payload_url) as nebraska:
|
|
|
|
# Start the update that will return two Urls. This matches what test
|
|
# and production omaha does today.
|
|
self._check_for_update(
|
|
nebraska.get_update_url(failures_per_url=1, num_urls=2,
|
|
critical_update=True))
|
|
self._wait_for_progress(0.2)
|
|
|
|
# Pull the network cable so the update fails.
|
|
self._disable_internet()
|
|
|
|
# It will retry 21 times before giving up.
|
|
self._wait_for_update_to_fail()
|
|
|
|
# Check that we are moving to the next Url.
|
|
self._enable_internet()
|
|
self._check_update_engine_log_for_entry(
|
|
'Reached max number of failures for Url',
|
|
raise_error=True)
|
|
|
|
# The next update attempt should resume and finish successfully.
|
|
self._check_for_update(
|
|
nebraska.get_update_url(critical_update=True))
|
|
self._wait_for_update_to_complete()
|
|
self._check_update_engine_log_for_entry(
|
|
'Resuming an update that was previously started.',
|
|
raise_error=True)
|