blob: be35cea48b2d79e79c16027debb966170c771053 [file] [log] [blame]
# 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))