blob: 55e375844603689d05cba52b34d1a6488b20b0ad [file] [log] [blame]
#!/usr/bin/python
import common
import cStringIO, os, unittest
from autotest_lib.server.hosts.monitors import monitors_util
class _MockWarnFile(object):
def __init__(self):
self.warnings = []
def write(self, data):
if data == '\n':
return
timestamp, type, message = data.split('\t')
self.warnings.append((type, message))
class ConsolePatternsTestCase(unittest.TestCase):
def setUp(self):
self._warnfile = _MockWarnFile()
patterns_path = os.path.join(os.path.dirname(__file__),
'console_patterns')
self._alert_hooks = monitors_util.build_alert_hooks_from_path(
patterns_path, self._warnfile)
self._logfile = cStringIO.StringIO()
def _process_line(self, line):
input_file = cStringIO.StringIO(line + '\n')
monitors_util.process_input(input_file, self._logfile,
alert_hooks=self._alert_hooks)
def _assert_warning_fired(self, type, message):
key = (type, message)
self.assert_(key in self._warnfile.warnings,
'Warning %s not found in: %s' % (key,
self._warnfile.warnings))
def _assert_no_warnings_fired(self):
self.assertEquals(self._warnfile.warnings, [])
class ConsolePatternsTest(ConsolePatternsTestCase):
def test_oops(self):
self._process_line('<0>Oops: 0002 [1] SMP ')
self._assert_warning_fired('BUG', "machine Oops'd (: 0002 [1] SMP)")
if __name__ == '__main__':
unittest.main()