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