1#!/usr/bin/python 2 3import unittest 4 5import common 6from autotest_lib.server import server_job 7from autotest_lib.client.common_lib import base_job_unittest 8from autotest_lib.client.common_lib.test_utils import mock 9 10 11class test_find_base_directories( 12 unittest.TestCase, 13 base_job_unittest.test_find_base_directories.generic_tests): 14 15 def setUp(self): 16 self.job = server_job.server_job.__new__(server_job.server_job) 17 18 19 def test_relative_path_layout(self): 20 existing_file = server_job.__file__ 21 server_job.__file__ = '/rootdir/atest/server/server_job.py' 22 try: 23 autodir, clientdir, serverdir = ( 24 self.job._find_base_directories()) 25 self.assertEqual(autodir, '/rootdir/atest') 26 self.assertEqual(clientdir, '/rootdir/atest/client') 27 self.assertEqual(serverdir, '/rootdir/atest/server') 28 finally: 29 server_job.__file__ = existing_file 30 31 32class test_init(base_job_unittest.test_init.generic_tests, unittest.TestCase): 33 OPTIONAL_ATTRIBUTES = ( 34 base_job_unittest.test_init.generic_tests.OPTIONAL_ATTRIBUTES 35 - set(['serverdir', 'num_tests_run', 'num_tests_failed', 36 'warning_manager', 'warning_loggers', 'in_lab'])) 37 38 def setUp(self): 39 self.god = mock.mock_god() 40 self.job = server_job.base_server_job.__new__( 41 server_job.base_server_job) 42 self.job._job_directory = base_job_unittest.stub_job_directory 43 44 45 def call_init(self): 46 # TODO(jadmanski): refactor more of the __init__ code to not need to 47 # stub out countless random APIs 48 self.god.stub_with(server_job.os, 'mkdir', lambda p: None) 49 class manager: 50 pass 51 self.god.stub_with(server_job.logging_manager, 'get_logging_manager', 52 lambda *a,**k: manager()) 53 class sysi: 54 log_per_reboot_data = lambda self: None 55 self.god.stub_with(server_job.sysinfo, 'sysinfo', lambda r: sysi()) 56 57 self.job.__init__('/control', (), None, 'job_label', 58 'auser', ['mach1', 'mach2']) 59 self.god.unstub_all() 60 61 62class WarningManagerTest(unittest.TestCase): 63 def test_never_disabled(self): 64 manager = server_job.warning_manager() 65 self.assertEqual(manager.is_valid(10, "MSGTYPE"), True) 66 67 68 def test_only_enabled(self): 69 manager = server_job.warning_manager() 70 manager.enable_warnings("MSGTYPE", lambda: 10) 71 self.assertEqual(manager.is_valid(20, "MSGTYPE"), True) 72 73 74 def test_disabled_once(self): 75 manager = server_job.warning_manager() 76 manager.disable_warnings("MSGTYPE", lambda: 10) 77 self.assertEqual(manager.is_valid(5, "MSGTYPE"), True) 78 self.assertEqual(manager.is_valid(15, "MSGTYPE"), False) 79 80 81 def test_disable_and_enabled(self): 82 manager = server_job.warning_manager() 83 manager.disable_warnings("MSGTYPE", lambda: 10) 84 manager.enable_warnings("MSGTYPE", lambda: 20) 85 self.assertEqual(manager.is_valid(15, "MSGTYPE"), False) 86 self.assertEqual(manager.is_valid(25, "MSGTYPE"), True) 87 88 89 def test_disabled_changes_is_valid(self): 90 manager = server_job.warning_manager() 91 self.assertEqual(manager.is_valid(15, "MSGTYPE"), True) 92 manager.disable_warnings("MSGTYPE", lambda: 10) 93 self.assertEqual(manager.is_valid(15, "MSGTYPE"), False) 94 95 96 def test_multiple_disabled_calls(self): 97 manager = server_job.warning_manager() 98 manager.disable_warnings("MSGTYPE", lambda: 10) 99 manager.disable_warnings("MSGTYPE", lambda: 20) 100 manager.enable_warnings("MSGTYPE", lambda: 30) 101 self.assertEqual(manager.is_valid(15, "MSGTYPE"), False) 102 self.assertEqual(manager.is_valid(25, "MSGTYPE"), False) 103 self.assertEqual(manager.is_valid(35, "MSGTYPE"), True) 104 105 106 def test_multiple_types(self): 107 manager = server_job.warning_manager() 108 manager.disable_warnings("MSGTYPE1", lambda: 10) 109 manager.disable_warnings("MSGTYPE2", lambda: 20) 110 manager.enable_warnings("MSGTYPE2", lambda: 30) 111 self.assertEqual(manager.is_valid(15, "MSGTYPE1"), False) 112 self.assertEqual(manager.is_valid(15, "MSGTYPE2"), True) 113 self.assertEqual(manager.is_valid(25, "MSGTYPE1"), False) 114 self.assertEqual(manager.is_valid(25, "MSGTYPE2"), False) 115 self.assertEqual(manager.is_valid(35, "MSGTYPE1"), False) 116 self.assertEqual(manager.is_valid(35, "MSGTYPE2"), True) 117 118 119if __name__ == "__main__": 120 unittest.main() 121