blob: b079a68285ba23165cb2b1839be7daca1cfc4821 [file] [log] [blame]
#!/usr/bin/python
"""Tests for console.py"""
import os, shutil, signal, StringIO, tempfile
import common
from autotest_lib.client.common_lib.test_utils import mock
from autotest_lib.client.common_lib.test_utils import unittest
from autotest_lib.server.hosts.monitors import console
class console_test(unittest.TestCase):
def setUp(self):
self.god = mock.mock_god()
self.tempdir = tempfile.mkdtemp()
def tearDown(self):
shutil.rmtree(self.tempdir)
def test_open_logfile(self):
path = os.path.join(self.tempdir, 'its-log-log')
fun_log = console._open_logfile(path)
fun_log.write("it's big it's heavy it's wood.\n")
fun_log.close()
# Open it again to ensure the original gets renamed.
fun_log = console._open_logfile(path)
fun_log.write("it's better than bad, it's good!\n")
fun_log.close()
log_file_list = os.listdir(self.tempdir)
self.assertEqual(2, len(log_file_list))
for name in log_file_list:
self.assertTrue(name.startswith('its-log-log.'),
'unexpected name %s' % name)
self.assertTrue(name.endswith('.gz'), 'unexpected name %s' % name)
def test_logfile_close_signal_handler(self):
self.god.stub_function(os, 'exit')
os.exit.expect_call(1)
logfile = StringIO.StringIO()
console._set_logfile_close_signal_handler(logfile)
try:
self.assertFalse(logfile.closed)
os.kill(os.getpid(), signal.SIGTERM)
finally:
console._unset_signal_handler()
self.god.check_playback()
self.assertTrue(logfile.closed)
if __name__ == '__main__':
unittest.main()