52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
# Copyright (c) 2013 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 os, re
|
|
|
|
from autotest_lib.client.bin import test, utils
|
|
from autotest_lib.client.common_lib import error
|
|
|
|
class hardware_DiskFirmwareUpgrade(test.test):
|
|
"""
|
|
Run the disk firmware upgrade script.
|
|
"""
|
|
TEST_SCRIPT = '/usr/sbin/chromeos-disk-firmware-update.sh'
|
|
UPGRADED_RE = r'^Upgraded.*'
|
|
version = 1
|
|
|
|
def run_once(self,
|
|
disk_firmware_package='/opt/google/disk/firmware',
|
|
expected_result=0,
|
|
upgrade_required=True):
|
|
"""
|
|
Runs the shell script that upgrade disk firmware.
|
|
|
|
@param disk_firmware_package: pre-installed firmware package location.
|
|
@param expected_result: expected results of the upgrade.
|
|
@param upgrade_required: if True, the firmware must change on the
|
|
device.
|
|
"""
|
|
status_file = os.path.join(self.resultsdir, 'status')
|
|
cmd = [self.TEST_SCRIPT,
|
|
'--status %s' % (status_file),
|
|
'--fw_package_dir %s' % (disk_firmware_package)]
|
|
fw_upgrade = utils.run(' '.join(cmd), ignore_status=True)
|
|
|
|
# Check the result of the upgrade.
|
|
upgrade_happened = False
|
|
try:
|
|
with open(status_file) as sf:
|
|
for l in sf:
|
|
if re.match(self.UPGRADED_RE, l):
|
|
upgrade_happened = True
|
|
except IOError:
|
|
pass
|
|
if fw_upgrade.exit_status != expected_result:
|
|
raise error.TestError(
|
|
'Expected %d Result is %d' % (
|
|
expected_result, fw_upgrade.exit_status))
|
|
if (fw_upgrade.exit_status == 0 and
|
|
upgrade_required and not upgrade_happened):
|
|
raise error.TestError('Expected upgrade did not happened')
|