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')
 |