63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
	
| # Copyright (c) 2011 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.
 | |
| 
 | |
| 
 | |
| # DESCRIPTION :
 | |
| #
 | |
| # Hardware test for temp sensor.  The test uses mosys to read temp sensor value
 | |
| # and check it's in reasonable range.
 | |
| 
 | |
| 
 | |
| import re
 | |
| 
 | |
| from autotest_lib.client.bin import test, utils
 | |
| from autotest_lib.client.common_lib import error
 | |
| 
 | |
| 
 | |
| # Reasonable temp range for different temp units.
 | |
| TEMP_RANGE = {
 | |
|     'degrees C': (0, 100),
 | |
| }
 | |
| 
 | |
| 
 | |
| class TempSensor(object):
 | |
|     MOSYS_OUTPUT_RE = re.compile('(\w+)="(.*?)"')
 | |
| 
 | |
|     def __init__(self, name):
 | |
|         self._name = name
 | |
| 
 | |
|     def get_values(self):
 | |
|         values = {}
 | |
|         cmd = 'mosys -k sensor print thermal %s' % self._name
 | |
|         for kv in self.MOSYS_OUTPUT_RE.finditer(utils.system_output(cmd)):
 | |
|             key, value = kv.groups()
 | |
|             if key == 'reading':
 | |
|                 value = int(value)
 | |
|             values[key] = value
 | |
|         return values
 | |
| 
 | |
|     def get_units(self):
 | |
|         return self.get_values()['units']
 | |
| 
 | |
|     def get_reading(self):
 | |
|         return self.get_values()['reading']
 | |
| 
 | |
| 
 | |
| class hardware_Thermal(test.test):
 | |
|     version = 1
 | |
| 
 | |
|     def run_once(self, temp_sensor_names=['temp0']):
 | |
|         if not temp_sensor_names:
 | |
|             raise error.TestError('No temp sensor specified')
 | |
| 
 | |
|         for name in temp_sensor_names:
 | |
|             ts = TempSensor(name)
 | |
|             units = ts.get_units()
 | |
|             try:
 | |
|                 low, high = TEMP_RANGE[units]
 | |
|             except KeyError:
 | |
|                 raise error.TestError('Unknown temp units of %s' % name)
 | |
|             if not low <= ts.get_reading() <= high:
 | |
|                 raise error.TestError('Temperature of %s out of range' % name)
 |