# Copyright (c) 2012 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, re
from autotest_lib.client.common_lib import error
from autotest_lib.server import test
class kernel_EmptyLines(test.test):
version = 1
def run_once(self, host=None):
self.client = host
# Reboot the client
logging.info('kernel_EmptyLines: reboot %s' % self.client.hostname)
self.client.reboot()
# Get dmesg since boot and check for empty printk lines.
# Format is from start of line: '[ x.yyyyyy] ' where x.y is
# the timestamp.
#
# A typical example for an error:
# [ 3.799802] device-mapper: init: foo bar
# [ 3.799807]
# [ 3.799921] device-mapper: done
result = self.client.run('dmesg')
match = re.search('^\[[\s0-9\.]+\]\s*$', result.stdout, re.M)
lines = result.stdout.count('\n')
if match:
raise error.TestFail("Found an empty line in dmesg: '%s'" %
match.group(0))
elif lines < 5:
raise error.TestFail("Only got %d lines of dmesg" % lines)
else:
logging.info('kernel_EmptyLines: checked %d lines' % lines)