| # Copyright (c) 2014 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 |
| import os |
| |
| from autotest_lib.client.bin import test |
| from autotest_lib.client.bin import utils |
| from autotest_lib.client.common_lib import error |
| |
| |
| _EXPECTED_FILE = 'expected' |
| |
| |
| class platform_KernelVersionByBoard(test.test): |
| """ Compare kernel version of a build to expected value. """ |
| |
| version = 1 |
| |
| def _expected_kernel(self, board): |
| """ Return expected kernel version number from file. |
| |
| @return: string of expected kernel version (e.g. '3.4') |
| """ |
| with open(os.path.join(self.bindir, _EXPECTED_FILE)) as file_handle: |
| for line in file_handle: |
| file_board, expected = line.split() |
| if board == file_board: |
| logging.info('Expected Kernel Version for %s: %s', board, |
| expected) |
| return expected.strip() |
| |
| actual = self._actual_kernel(board) |
| raise error.TestError('Could not find expected kernel version for ' |
| '%s. Should it be added? Actual is %s.' |
| % (board, actual)) |
| |
| def _actual_kernel(self, board): |
| """ Return actual kernel version number from device. |
| |
| @returns: string of actual kernel version (e.g. '3.8.11') |
| """ |
| return utils.system_output('uname -r') |
| |
| def run_once(self): |
| """ Compare expected and actual kernel versions. """ |
| board = utils.get_current_board() |
| actual = self._actual_kernel(board) |
| expected = self._expected_kernel(board) |
| if not actual.startswith(expected): |
| raise error.TestFail('%s: Expected kernel version %s; Found %s' |
| % (board, expected, actual)) |
| |