Index: server/site_tests/kernel_BootMessagesServer/kernel_BootMessagesServer.py |
diff --git a/server/site_tests/kernel_BootMessagesServer/kernel_BootMessagesServer.py b/server/site_tests/kernel_BootMessagesServer/kernel_BootMessagesServer.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fab5e237e44908494fb3cdda1f9b33fc8f4a7e09 |
--- /dev/null |
+++ b/server/site_tests/kernel_BootMessagesServer/kernel_BootMessagesServer.py |
@@ -0,0 +1,68 @@ |
+# Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |
Sameer Nanda
2011/02/18 17:27:40
2011?
|
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import logging, os |
+from autotest_lib.client.bin import utils |
+from autotest_lib.client.common_lib import error |
+from autotest_lib.server import test |
+ |
+_KERN_WARNING = 4 |
+ |
+_WARNINGS_WHITELIST = [ |
+ "Kernel-defined memdesc doesn't match the one from EFI!", |
+ "Warning only 1919MB will be used.", |
+ "Use a HIGHMEM enabled kernel.", |
+ "pnp 00:01: io resource (0x164e-0x164f) overlaps 0000:00:1c.0 BAR 7 (0x1000-0x1fff), disabling", |
Sameer Nanda
2011/02/18 17:27:40
> 80 chars
|
+ "i915 0000:00:02.0: Invalid ROM contents", |
+ "[drm:intel_init_bios] *ERROR* VBT signature missing", |
+ "usb 1-2: config 1 has an invalid interface number: 1 but max is 0", |
+ "usb 1-2: config 1 has no interface number 0", |
+ "device-mapper: verity: Failed to acquire device 'ROOT_DEV': -1", |
+ "device-mapper: table: 254:0: verity: Device lookup failed", |
+ "dm: starting dm-0 (vroot) failed", |
+ "EXT3-fs warning: maximal mount count reached, running e2fsck is recommended", |
Sameer Nanda
2011/02/18 17:27:40
> 80 chars
|
+ "i2c i2c-2: The new_device interface is still experimental and may change in a near future", |
Sameer Nanda
2011/02/18 17:27:40
> 80 chars
|
+ "industrialio: module is from the staging directory, the quality is unknown, you have been warned.", |
Sameer Nanda
2011/02/18 17:27:40
> 80 chars
|
+ "tsl2563: module is from the staging directory, the quality is unknown, you have been warned.", |
Sameer Nanda
2011/02/18 17:27:40
> 80 chars
|
+] |
Sameer Nanda
2011/02/18 17:27:40
Do you want to make the warnings whitelist platfor
|
+ |
+class kernel_BootMessagesServer(test.test): |
+ version = 1 |
+ |
+ |
+ def read_dmesg(self, filename): |
+ f = open(filename, 'w') |
+ self.client.run('dmesg -r', stdout_tee=f) |
+ f.close() |
+ |
+ |
+ def reboot_machine(self): |
+ self.client.run('reboot') |
+ self.client.wait_down() |
+ self.client.wait_up() |
+ |
+ |
+ def run_once(self, host=None): |
+ self.client = host |
+ self.client_test = 'kernel_BootMessages' |
+ dmesg_filename = os.path.join(self.resultsdir, 'dmesg') |
+ |
+ self.reboot_machine() |
+ self.read_dmesg(dmesg_filename) |
+ dmesg = utils.read_file(dmesg_filename) |
+ unexpected = False |
+ |
+ f = open(os.path.join(self.resultsdir, 'dmesg.err'), 'w') |
+ for line in dmesg.split('\n'): |
Sameer Nanda
2011/02/18 17:27:40
use dmesg.splitlines instead?
|
+ if line and int(line[1]) <= _KERN_WARNING: |
+ if not 'used greatest stack depth' in line: |
+ stripped_line = line.split('] ', 1)[1] |
+ if not stripped_line in _WARNINGS_WHITELIST: |
+ logging.error('UNEXPECTED DMESG: %s' % stripped_line) |
+ unexpected = True |
+ f.write('%s\n' % line) |
+ f.close() |
+ |
+ if unexpected: |
+ raise error.TestFail("Unexpected dmesg warnings and/or errors.") |