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