# Copyright 2017 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.server import autotest from autotest_lib.server import test from autotest_lib.server import utils class platform_ImageLoaderServer(test.test): """Does the server side file downloading for the ImageLoader autotest. """ version = 1 def _run_client_test(self, version1, version2, version3): """Runs client test.""" try: self.autotest_client.run_test( 'platform_ImageLoader', component1=version1, component2=version2, component3=version3, check_client_result=True) logging.info('platform_ImageLoader succeeded') except: raise error.TestFail('Failed: platform_ImageLoader') def run_once(self, host): """Runs platform ImageLoader tests.""" self.host = host self.autotest_client = autotest.Autotest(self.host) # Download sample production signed components for simulated updates # from Google Storage. This needs to be done by a server test as the # client is unable to access Google Storage. try: version1 = '/tmp/prod_signed_23.0.0.207.tar.gz' utils.run('gsutil', args=('cp', 'gs://chromeos-localmirror-private/' 'testing/components/prod_signed_23.0.0.207.tar.gz', version1), timeout=300, ignore_status=False, verbose=True, stderr_is_expected=False, ignore_timeout=False) version2 = '/tmp/prod_signed_24.0.0.186.tar.gz' utils.run('gsutil', args=('cp', 'gs://chromeos-localmirror-private/' 'testing/components/prod_signed_24.0.0.186.tar.gz', version2), timeout=300, ignore_status=False, verbose=True, stderr_is_expected=False, ignore_timeout=False) version3 = '/tmp/prod_signed_10209.0.0.tar.gz' utils.run('gsutil', args=('cp', 'gs://chromeos-localmirror-private/' 'testing/components/prod_signed_10209.0.0.tar.gz', version3), timeout=300, ignore_status=False, verbose=True, stderr_is_expected=False, ignore_timeout=False) except error.CmdTimeoutError: raise error.TestError('Slow network') except error.CmdError: raise error.TestError('Lack of Google Storage access permissions.') self.host.send_file(version1, version1) self.host.send_file(version2, version2) self.host.send_file(version3, version3) self.host.run('tar xvf "%s" -C "%s"' % (version1, '/home/chronos')) self.host.run('tar xvf "%s" -C "%s"' % (version2, '/home/chronos')) self.host.run('tar xvf "%s" -C "%s"' % (version3, '/home/chronos')) version1_unpack = '/home/chronos/prod_signed_23.0.0.207' version2_unpack = '/home/chronos/prod_signed_24.0.0.186' version3_unpack = '/home/chronos/prod_signed_10209.0.0' self.host.run('chmod -R 0755 "%s"' % (version1_unpack)) self.host.run('chmod -R 0755 "%s"' % (version2_unpack)) self.host.run('chmod -R 0755 "%s"' % (version3_unpack)) # Run the actual test (installing and verifying component updates on # the client. self._run_client_test(version1_unpack, version2_unpack, version3_unpack) self.host.run('rm -rf "%s" "%s" "%s" "%s" "%s" "%s"' % (version1, version2, version3, version1_unpack, version2_unpack, version3_unpack))