blob: 63f1066dfbad4589eff0f6f17e6325129a23ceea [file] [log] [blame]
#!/usr/bin/python
#
# Copyright (c) 2015 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
import re
from autotest_lib.client.bin import test
from autotest_lib.client.common_lib import error
class kernel_sysrq_info(test.test):
"""
Verify the Magic SysRq show-* commands
(i.e. don't verify reBoot, Crash, kill-all-tasks, etc.)
"""
version = 1
def sysrq_trigger(self, key):
"""
Trigger one SysRq command, and return the kernel log output
@param key: lowercase SysRq keystroke (e.g. 'm')
@return dmesg log from running the command
"""
os.system("dmesg --clear")
with open("/proc/sysrq-trigger", "w") as f:
f.write(key + "\n")
with os.popen("dmesg --raw") as f:
return f.read()
def run_once(self):
test_cases = {'l': 'all active CPUs',
'm': '[0-9]+ pages.*RAM',
'p': 'Show Regs',
'q': 'Tick Device:',
't': 'init.*\s1\s',
'w': 'pid father'
}
for key in test_cases:
s = self.sysrq_trigger(key)
if re.search(test_cases[key], s) == None:
raise error.TestFail('Unexpected output from SysRq key %s' %
key)