Revert "autoupdate_EndToEndTest: Use quick-provision for installing the source image"
This reverts commit 396d281cd74a26be69ba2d498dab9a679ea812c2.
Reason for revert: <crbug.com/1103324>
Original change's description:
> autoupdate_EndToEndTest: Use quick-provision for installing the source image
>
> Currently, autoupdate_EndToEndTests use AU to install very old images in
> order to test AU success on old images. This means that newer
> update_engines should be able to apply a very old update payload. This
> has caused us issues in many places as it has hindered us to deprecated
> old features and improve update_engine to a more efficient
> manner. Now that we have quick provision payloads in release buckets, we
> can use them to install the source image of end to end test. This CL
> does that.
>
> However, the only caveat here is that the fallback code to provision
> with AU when the QP fails does not work because the release buckets do
> not have the test AU payloads in them. So we added a flag (au_fallback)
> and disabled that fallback. And we added a temporary fallback to the
> original provision mechanism using the AU payloads. We need to remove
> this once the EndToEnd tests are stable and showing no sign of failures
> in quick-provision.
>
> BUG=chromium:991421
> TEST=test_that --autotest_dir ~/trunk/src/third_party/autotest/files/ --args="target_release=13280.0.0 target_payload_uri='gs://chromeos-releases/dev-channel/reef/13290.0.0/payloads/chromeos_13290.0.0_reef_dev-channel_full_test.bin-gvswkobwg43gf4byzyw75rj4io3sl5y5' source_release=13280.0.0 source_payload_uri='gs://chromeos-releases/dev-channel/reef/13290.0.0/payloads/chromeos_13290.0.0_reef_dev-channel_full_test.bin-gvswkobwg43gf4byzyw75rj4io3sl5y5' update_type=full" chromeos6-row4-rack10-host12.cros.corp.google.com autoupdate_EndToEndTest
> TEST=above test after raising an exception in
> _quick_provision_with_gs_cache() to make sure
> _quick_provision_with_devserver() works too.
>
> Change-Id: I1ac1828f58c9a63f4a7d8888e651248033d567ef
> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2261239
> Tested-by: Amin Hassani <ahassani@chromium.org>
> Reviewed-by: Kyle Shimabukuro <kyleshima@chromium.org>
> Reviewed-by: David Haddock <dhaddock@chromium.org>
> Commit-Queue: Amin Hassani <ahassani@chromium.org>
Bug: chromium:991421
Change-Id: I278b9bd45530bc11378d8a18a566e50768bc466e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/autotest/+/2288160
Reviewed-by: Amin Hassani <ahassani@chromium.org>
Reviewed-by: Allen Li <ayatane@chromium.org>
Tested-by: Amin Hassani <ahassani@chromium.org>
diff --git a/server/afe_utils.py b/server/afe_utils.py
index 8003723..147055e 100644
--- a/server/afe_utils.py
+++ b/server/afe_utils.py
@@ -146,9 +146,7 @@
def machine_install_and_update_labels(host, update_url,
use_quick_provision=False,
- with_cheets=False, staging_server=None,
- is_release_bucket=False,
- au_fallback=True):
+ with_cheets=False, staging_server=None):
"""Install a build and update the version labels on a host.
@param host: Host object where the build is to be installed.
@@ -159,16 +157,12 @@
version of Android for a target running ARC.
@param staging_server: Server where images have been staged. Typically,
an instance of dev_server.ImageServer.
- @param is_release_bucket: If True, use release bucket
- gs://chromeos-releases.
- @param au_fallback: If True, we fallback to AU provisioning if the
- quick-provisioning fails.
"""
clean_provision_labels(host)
if use_quick_provision:
image_name, host_attributes = _provision_with_quick_provision(
- host, update_url, is_release_bucket, au_fallback)
+ host, update_url)
else:
image_name, host_attributes = _provision_with_au(host, update_url,
staging_server)
@@ -216,16 +210,11 @@
image_name, host_attributes = updater.run_update()
return image_name, host_attributes
-def _provision_with_quick_provision(host, update_url, is_release_bucket,
- au_fallback):
+def _provision_with_quick_provision(host, update_url):
"""Installs a build on the host using autoupdater quick-provision.
@param host: Host object where the build is to be installed.
@param update_url: URL of the build to install.
- @param is_release_bucket: If True, use release bucket
- gs://chromeos-releases.
- @param au_fallback: If True, we fallback to AU provisioning if the
- quick-provisioning fails.
@returns A tuple of the form `(image_name, host_attributes)`, where
'image_name' is the name of the image installed, and 'host_attributes'
@@ -233,7 +222,5 @@
"""
logging.debug('Attempting to provision with autoupdater quick-provision.')
updater = autoupdater.ChromiumOSUpdater(update_url, host=host,
- use_quick_provision=True,
- is_release_bucket=is_release_bucket,
- au_fallback=au_fallback)
+ use_quick_provision=True)
return updater.run_update()
diff --git a/server/cros/autoupdater.py b/server/cros/autoupdater.py
index b2f71f6..5bcc88f 100644
--- a/server/cros/autoupdater.py
+++ b/server/cros/autoupdater.py
@@ -226,7 +226,7 @@
@returns a string representing the image name in the update_url.
"""
- return urlparse.urlparse(update_url).path[len('/update/'):]
+ return '/'.join(urlparse.urlparse(update_url).path.split('/')[-2:])
def get_update_failure_reason(exception):
@@ -330,8 +330,7 @@
"""Chromium OS specific DUT update functionality."""
def __init__(self, update_url, host=None, interactive=True,
- use_quick_provision=False, is_release_bucket=None,
- au_fallback=True):
+ use_quick_provision=False):
"""Initializes the object.
@param update_url: The URL we want the update to use.
@@ -339,18 +338,13 @@
@param interactive: Bool whether we are doing an interactive update.
@param use_quick_provision: Whether we should attempt to perform
the update using the quick-provision script.
- @param is_release_bucket: If True, use release bucket
- gs://chromeos-releases.
- @param au_fallback: If True, we fallback to AU provisioning if the
- quick-provisioning fails.
"""
self.update_url = update_url
self.host = host
self.interactive = interactive
self.update_version = _url_to_version(update_url)
self._use_quick_provision = use_quick_provision
- self._is_release_bucket = is_release_bucket
- self._au_fallback = au_fallback
+
def _run(self, cmd, *args, **kwargs):
"""Abbreviated form of self.host.run(...)"""
@@ -476,11 +470,7 @@
def _set_target_version(self):
"""Set the "target version" for the update."""
- # Version strings that come from release buckets do not have RXX- at the
- # beginning. So remove this prefix only if the version has it.
- version_number = (self.update_version.split('-')[1]
- if '-' in self.update_version
- else self.update_version)
+ version_number = self.update_version.split('-')[1]
self._run('echo %s > %s' % (version_number, _TARGET_VERSION))
@@ -688,10 +678,8 @@
# If enabled, GsCache server listion on different port on the
# devserver.
gs_cache_server = devserver_name.replace(DEVSERVER_PORT, GS_CACHE_PORT)
- gs_cache_url = ('http://%s/download/%s'
- % (gs_cache_server,
- 'chromeos-releases' if self._is_release_bucket
- else 'chromeos-image-archive'))
+ gs_cache_url = ('http://%s/download/chromeos-image-archive'
+ % gs_cache_server)
# Check if GS_Cache server is enabled on the server.
self._run('curl -s -o /dev/null %s' % gs_cache_url)
@@ -713,11 +701,8 @@
"""
logging.info('Try quick provision with devserver.')
ds = dev_server.ImageServer('http://%s' % devserver_name)
- archive_url = ('gs://chromeos-releases/%s' % image_name
- if self._is_release_bucket else None)
try:
- ds.stage_artifacts(image_name, ['quick_provision', 'stateful'],
- archive_url=archive_url)
+ ds.stage_artifacts(image_name, ['quick_provision', 'stateful'])
except dev_server.DevServerException as e:
raise error.TestFail, str(e), sys.exc_info()[2]
@@ -740,8 +725,7 @@
if not self._use_quick_provision:
return None
image_name = url_to_image_name(self.update_url)
- logging.info('Installing image using quick-provision with url: %s '
- 'and image_name %s', self.update_url, image_name)
+ logging.info('Installing image using quick-provision.')
provision_command = self._get_remote_script(_QUICK_PROVISION_SCRIPT)
server_name = urlparse.urlparse(self.update_url)[1]
try:
@@ -777,15 +761,9 @@
"""
logging.info('Installing image at %s onto %s',
self.update_url, self.host.hostname)
- result = self._install_via_quick_provision()
- if result:
- return result
-
- if not self._au_fallback:
- raise Exception('quick-provision failed and AU fallback was not '
- 'requested. So assuming provision failure.')
try:
- return self._install_via_update_engine()
+ return (self._install_via_quick_provision()
+ or self._install_via_update_engine())
except:
# N.B. This handling code includes non-Exception classes such
# as KeyboardInterrupt. We need to clean up, but we also must
diff --git a/server/site_tests/autoupdate_EndToEndTest/autoupdate_EndToEndTest.py b/server/site_tests/autoupdate_EndToEndTest/autoupdate_EndToEndTest.py
index 8ec7fa0..59768dc 100755
--- a/server/site_tests/autoupdate_EndToEndTest/autoupdate_EndToEndTest.py
+++ b/server/site_tests/autoupdate_EndToEndTest/autoupdate_EndToEndTest.py
@@ -8,7 +8,6 @@
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib.cros import kernel_utils
from autotest_lib.client.cros import constants
-from autotest_lib.server import afe_utils
from autotest_lib.server.cros.update_engine import update_engine_test
@@ -115,23 +114,10 @@
self._stage_payloads(test_conf['target_payload_uri'],
test_conf['target_archive_uri'])
- # Install source image with quick-provision.
+ # Install source image
source_payload_uri = test_conf['source_payload_uri']
if source_payload_uri is not None:
- try:
- build_name, _ = self._get_update_parameters_from_uri(
- source_payload_uri)
- url = self._autotest_devserver.get_update_url(build_name)
- logging.info('Installing source image with update url: %s', url)
- afe_utils.machine_install_and_update_labels(
- self._host, url, use_quick_provision=True,
- is_release_bucket=True, au_fallback=False)
- except Exception:
- logging.warning('quick-provision failed, trying with AU.')
- # TODO(crbug.com/991421): Remove this fallback once the quick
- # provision use case is stabilized.
- self.update_device(source_payload_uri, clobber_stateful=True)
-
+ self.update_device(source_payload_uri, clobber_stateful=True)
self._run_client_test_and_check_result(self._LOGIN_TEST,
tag='source')
# Start the update to the target image.