blob: dd7d51fec37532f7a86e37330c0a14da23afb416 [file] [log] [blame]
mbligh81103b12008-06-12 19:55:37 +00001#!/usr/bin/python
mbligh7636b3a2008-06-11 15:44:01 +00002
mbligh7636b3a2008-06-11 15:44:01 +00003import common
mbligh0d0f67d2009-11-06 03:15:03 +00004
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
mbligh7636b3a2008-06-11 15:44:01 +00008
9
mbligh0d0f67d2009-11-06 03:15:03 +000010class test_find_base_directories(
11 unittest.TestCase,
12 base_job_unittest.test_find_base_directories.generic_tests):
13
mbligh7636b3a2008-06-11 15:44:01 +000014 def setUp(self):
mbligh0d0f67d2009-11-06 03:15:03 +000015 self.job = server_job.server_job.__new__(server_job.server_job)
mbligh7636b3a2008-06-11 15:44:01 +000016
mbligh0d0f67d2009-11-06 03:15:03 +000017
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
Christopher Wiley9603cd12015-12-07 08:29:26 -080034 - set(['serverdir', 'num_tests_run', 'num_tests_failed',
Simran Basi1bf60eb2015-12-01 16:39:29 -080035 'warning_manager', 'warning_loggers', 'in_lab']))
mbligh0d0f67d2009-11-06 03:15:03 +000036
37 def setUp(self):
mbligh7636b3a2008-06-11 15:44:01 +000038 self.god = mock.mock_god()
mbligh0d0f67d2009-11-06 03:15:03 +000039 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
mblighaebe3b62008-12-22 14:45:40 +000042
mbligh7636b3a2008-06-11 15:44:01 +000043
mbligh0d0f67d2009-11-06 03:15:03 +000044 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'])
mbligh7636b3a2008-06-11 15:44:01 +000058 self.god.unstub_all()
59
60
jadmanskif37df842009-02-11 00:03:26 +000061class 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
mbligh7636b3a2008-06-11 15:44:01 +0000118if __name__ == "__main__":
119 unittest.main()