1976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr# Copyright 2017 The Chromium OS Authors. All rights reserved. 2976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr# Use of this source code is governed by a BSD-style license that can be 3976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr# found in the LICENSE file. 4976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 5976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerrimport logging 6976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 7976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerrfrom autotest_lib.client.common_lib import error 8976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerrfrom autotest_lib.server import autotest 9976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerrfrom autotest_lib.server import test 10976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerrfrom autotest_lib.server import utils 11976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 12976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 13976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerrclass platform_ImageLoaderServer(test.test): 14976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr """Does the server side file downloading for the ImageLoader autotest. 15976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr """ 16976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr version = 1 17976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 18186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu def _run_client_test(self, version1, version2, version3): 19976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr """Runs client test.""" 20976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr try: 21976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr self.autotest_client.run_test( 22976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 'platform_ImageLoader', 23976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr component1=version1, 24976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr component2=version2, 25186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu component3=version3, 26976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr check_client_result=True) 27976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr logging.info('platform_ImageLoader succeeded') 28976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr except: 2984fbb8b69382c8651a85855f42e1b127ddbca16bIlja H. Friedel raise error.TestFail('Failed: platform_ImageLoader') 30976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 31976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr def run_once(self, host): 32976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr """Runs platform ImageLoader tests.""" 33976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr self.host = host 34976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr self.autotest_client = autotest.Autotest(self.host) 35976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr # Download sample production signed components for simulated updates 36976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr # from Google Storage. This needs to be done by a server test as the 37976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr # client is unable to access Google Storage. 38976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr try: 39976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr version1 = '/tmp/prod_signed_23.0.0.207.tar.gz' 40976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr utils.run('gsutil', 41976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr args=('cp', 'gs://chromeos-localmirror-private/' 42976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 'testing/components/prod_signed_23.0.0.207.tar.gz', 43976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr version1), 44976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr timeout=300, 45976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr ignore_status=False, 46976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr verbose=True, 47976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr stderr_is_expected=False, 48976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr ignore_timeout=False) 49976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 50976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr version2 = '/tmp/prod_signed_24.0.0.186.tar.gz' 51976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr utils.run('gsutil', 52976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr args=('cp', 'gs://chromeos-localmirror-private/' 53976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 'testing/components/prod_signed_24.0.0.186.tar.gz', 54976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr version2), 55976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr timeout=300, 56976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr ignore_status=False, 57976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr verbose=True, 58976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr stderr_is_expected=False, 59976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr ignore_timeout=False) 60186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu 61191d267ebb129ef2b973465ba31c1ffb0e205897Xiaochu Liu version3 = '/tmp/prod_signed_10209.0.0.tar.gz' 62186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu utils.run('gsutil', 63186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu args=('cp', 'gs://chromeos-localmirror-private/' 64191d267ebb129ef2b973465ba31c1ffb0e205897Xiaochu Liu 'testing/components/prod_signed_10209.0.0.tar.gz', 65186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu version3), 66186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu timeout=300, 67186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu ignore_status=False, 68186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu verbose=True, 69186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu stderr_is_expected=False, 70186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu ignore_timeout=False) 71976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr except error.CmdTimeoutError: 72976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr raise error.TestError('Slow network') 73976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr except error.CmdError: 74976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr raise error.TestError('Lack of Google Storage access permissions.') 75976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 76976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr self.host.send_file(version1, version1) 77976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr self.host.send_file(version2, version2) 78186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu self.host.send_file(version3, version3) 79976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 80976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr self.host.run('tar xvf "%s" -C "%s"' % (version1, '/home/chronos')) 81976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr self.host.run('tar xvf "%s" -C "%s"' % (version2, '/home/chronos')) 82186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu self.host.run('tar xvf "%s" -C "%s"' % (version3, '/home/chronos')) 83976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr version1_unpack = '/home/chronos/prod_signed_23.0.0.207' 84976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr version2_unpack = '/home/chronos/prod_signed_24.0.0.186' 85191d267ebb129ef2b973465ba31c1ffb0e205897Xiaochu Liu version3_unpack = '/home/chronos/prod_signed_10209.0.0' 86976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr self.host.run('chmod -R 0755 "%s"' % (version1_unpack)) 87976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr self.host.run('chmod -R 0755 "%s"' % (version2_unpack)) 88186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu self.host.run('chmod -R 0755 "%s"' % (version3_unpack)) 89976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr # Run the actual test (installing and verifying component updates on 90976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr # the client. 91186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu self._run_client_test(version1_unpack, version2_unpack, version3_unpack) 92976b1ad72aee5e071cab5763d2f095ec7350eafbGreg Kerr 93186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu self.host.run('rm -rf "%s" "%s" "%s" "%s" "%s" "%s"' 94186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu % (version1, 95186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu version2, 96186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu version3, 97186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu version1_unpack, 98186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu version2_unpack, 99186c0ff72193c9daf7ea2a7e096a7d4c9fb14521Xiaochu Liu version3_unpack)) 100