• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import logging, re
6
7from autotest_lib.client.common_lib import error
8from autotest_lib.server import test
9
10class kernel_EmptyLines(test.test):
11    version = 1
12
13    def run_once(self, host=None):
14        self.client = host
15
16        # Reboot the client
17        logging.info('kernel_EmptyLines: reboot %s' % self.client.hostname)
18        self.client.reboot()
19
20        # Get dmesg since boot and check for empty printk lines.
21        # Format is from start of line: '[   x.yyyyyy] ' where x.y is
22        # the timestamp.
23        #
24        # A typical example for an error:
25        # [ 3.799802] device-mapper: init: foo bar
26        # [ 3.799807]
27        # [ 3.799921] device-mapper: done
28
29        result = self.client.run('dmesg')
30        match = re.search('^\[[\s0-9\.]+\]\s*$', result.stdout, re.M)
31
32        lines = result.stdout.count('\n')
33
34        if match:
35            raise error.TestFail("Found an empty line in dmesg: '%s'" %
36                                 match.group(0))
37        elif lines < 5:
38            raise error.TestFail("Only got %d lines of dmesg" % lines)
39        else:
40            logging.info('kernel_EmptyLines: checked %d lines' % lines)
41