1# Copyright 2017 The Chromium OS Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import logging 6 7from autotest_lib.client.common_lib import error 8from autotest_lib.server import autotest 9from autotest_lib.server import test 10from autotest_lib.server import utils 11 12 13class platform_ImageLoaderServer(test.test): 14 """Does the server side file downloading for the ImageLoader autotest. 15 """ 16 version = 1 17 18 def _run_client_test(self, version1, version2): 19 """Runs client test.""" 20 try: 21 self.autotest_client.run_test( 22 'platform_ImageLoader', 23 component1=version1, 24 component2=version2, 25 check_client_result=True) 26 logging.info('platform_ImageLoader succeeded') 27 except: 28 raise error.TestError('Failed platform_ImageLoader') 29 30 def run_once(self, host): 31 """Runs platform ImageLoader tests.""" 32 self.host = host 33 self.autotest_client = autotest.Autotest(self.host) 34 # Download sample production signed components for simulated updates 35 # from Google Storage. This needs to be done by a server test as the 36 # client is unable to access Google Storage. 37 try: 38 version1 = '/tmp/prod_signed_23.0.0.207.tar.gz' 39 utils.run('gsutil', 40 args=('cp', 'gs://chromeos-localmirror-private/' 41 'testing/components/prod_signed_23.0.0.207.tar.gz', 42 version1), 43 timeout=300, 44 ignore_status=False, 45 verbose=True, 46 stderr_is_expected=False, 47 ignore_timeout=False) 48 49 version2 = '/tmp/prod_signed_24.0.0.186.tar.gz' 50 utils.run('gsutil', 51 args=('cp', 'gs://chromeos-localmirror-private/' 52 'testing/components/prod_signed_24.0.0.186.tar.gz', 53 version2), 54 timeout=300, 55 ignore_status=False, 56 verbose=True, 57 stderr_is_expected=False, 58 ignore_timeout=False) 59 except error.CmdTimeoutError: 60 raise error.TestError('Slow network') 61 except error.CmdError: 62 raise error.TestError('Lack of Google Storage access permissions.') 63 64 self.host.send_file(version1, version1) 65 self.host.send_file(version2, version2) 66 67 self.host.run('tar xvf "%s" -C "%s"' % (version1, '/home/chronos')) 68 self.host.run('tar xvf "%s" -C "%s"' % (version2, '/home/chronos')) 69 version1_unpack = '/home/chronos/prod_signed_23.0.0.207' 70 version2_unpack = '/home/chronos/prod_signed_24.0.0.186' 71 self.host.run('chmod -R 0755 "%s"' % (version1_unpack)) 72 self.host.run('chmod -R 0755 "%s"' % (version2_unpack)) 73 # Run the actual test (installing and verifying component updates on 74 # the client. 75 self._run_client_test(version1_unpack, version2_unpack) 76 77 self.host.run('rm -rf "%s" "%s" "%s" "%s"' % (version1, 78 version2, 79 version1_unpack, 80 version2_unpack)) 81