blob: 70707fbe4ce6133adaddb80c8abee99cbe9d2f29 [file] [log] [blame]
Mike Frysingerd03e6b52019-08-03 12:49:01 -04001#!/usr/bin/python2
mbligh7636b3a2008-06-11 15:44:01 +00002
Dan Shif53d1262017-06-19 11:25:25 -07003import os
4import tempfile
Justin Giorgi67ad67d2016-06-29 14:41:04 -07005import unittest
mbligh0d0f67d2009-11-06 03:15:03 +00006
Justin Giorgi67ad67d2016-06-29 14:41:04 -07007import common
mbligh0d0f67d2009-11-06 03:15:03 +00008from autotest_lib.server import server_job
9from autotest_lib.client.common_lib import base_job_unittest
Justin Giorgi67ad67d2016-06-29 14:41:04 -070010from autotest_lib.client.common_lib.test_utils import mock
mbligh7636b3a2008-06-11 15:44:01 +000011
12
mbligh0d0f67d2009-11-06 03:15:03 +000013class test_find_base_directories(
14 unittest.TestCase,
15 base_job_unittest.test_find_base_directories.generic_tests):
16
mbligh7636b3a2008-06-11 15:44:01 +000017 def setUp(self):
mbligh0d0f67d2009-11-06 03:15:03 +000018 self.job = server_job.server_job.__new__(server_job.server_job)
mbligh7636b3a2008-06-11 15:44:01 +000019
mbligh0d0f67d2009-11-06 03:15:03 +000020
21 def test_relative_path_layout(self):
22 existing_file = server_job.__file__
23 server_job.__file__ = '/rootdir/atest/server/server_job.py'
24 try:
25 autodir, clientdir, serverdir = (
26 self.job._find_base_directories())
27 self.assertEqual(autodir, '/rootdir/atest')
28 self.assertEqual(clientdir, '/rootdir/atest/client')
29 self.assertEqual(serverdir, '/rootdir/atest/server')
30 finally:
31 server_job.__file__ = existing_file
32
33
34class test_init(base_job_unittest.test_init.generic_tests, unittest.TestCase):
35 OPTIONAL_ATTRIBUTES = (
36 base_job_unittest.test_init.generic_tests.OPTIONAL_ATTRIBUTES
Christopher Wiley9603cd12015-12-07 08:29:26 -080037 - set(['serverdir', 'num_tests_run', 'num_tests_failed',
Simran Basi1bf60eb2015-12-01 16:39:29 -080038 'warning_manager', 'warning_loggers', 'in_lab']))
mbligh0d0f67d2009-11-06 03:15:03 +000039
40 def setUp(self):
mbligh7636b3a2008-06-11 15:44:01 +000041 self.god = mock.mock_god()
Prathmesh Prabhu20ea1062017-07-06 10:23:42 -070042 self.job = server_job.server_job.__new__(
43 server_job.server_job)
mbligh0d0f67d2009-11-06 03:15:03 +000044 self.job._job_directory = base_job_unittest.stub_job_directory
Dan Shif53d1262017-06-19 11:25:25 -070045 _, self.control_file = tempfile.mkstemp()
mblighaebe3b62008-12-22 14:45:40 +000046
Dan Shif53d1262017-06-19 11:25:25 -070047 def tearDown(self):
48 """Cleanup the test control file."""
49 os.remove(self.control_file)
mbligh7636b3a2008-06-11 15:44:01 +000050
mbligh0d0f67d2009-11-06 03:15:03 +000051 def call_init(self):
52 # TODO(jadmanski): refactor more of the __init__ code to not need to
53 # stub out countless random APIs
54 self.god.stub_with(server_job.os, 'mkdir', lambda p: None)
55 class manager:
56 pass
57 self.god.stub_with(server_job.logging_manager, 'get_logging_manager',
58 lambda *a,**k: manager())
59 class sysi:
60 log_per_reboot_data = lambda self: None
61 self.god.stub_with(server_job.sysinfo, 'sysinfo', lambda r: sysi())
62
Prathmesh Prabhu7fc39c52018-03-21 14:08:30 -070063 self.job.__init__(
64 self.control_file,
65 (),
66 None,
67 'job_label',
68 'auser',
69 ['mach1', 'mach2'],
70 [
71 {'hostname': 'mach1'}, # Incomplete machine_dict.
72 {'hostname': 'mach2'}, # Incomplete machine_dict.
73 ],
74 )
mbligh7636b3a2008-06-11 15:44:01 +000075 self.god.unstub_all()
76
77
jadmanskif37df842009-02-11 00:03:26 +000078class WarningManagerTest(unittest.TestCase):
79 def test_never_disabled(self):
80 manager = server_job.warning_manager()
81 self.assertEqual(manager.is_valid(10, "MSGTYPE"), True)
82
83
84 def test_only_enabled(self):
85 manager = server_job.warning_manager()
86 manager.enable_warnings("MSGTYPE", lambda: 10)
87 self.assertEqual(manager.is_valid(20, "MSGTYPE"), True)
88
89
90 def test_disabled_once(self):
91 manager = server_job.warning_manager()
92 manager.disable_warnings("MSGTYPE", lambda: 10)
93 self.assertEqual(manager.is_valid(5, "MSGTYPE"), True)
94 self.assertEqual(manager.is_valid(15, "MSGTYPE"), False)
95
96
97 def test_disable_and_enabled(self):
98 manager = server_job.warning_manager()
99 manager.disable_warnings("MSGTYPE", lambda: 10)
100 manager.enable_warnings("MSGTYPE", lambda: 20)
101 self.assertEqual(manager.is_valid(15, "MSGTYPE"), False)
102 self.assertEqual(manager.is_valid(25, "MSGTYPE"), True)
103
104
105 def test_disabled_changes_is_valid(self):
106 manager = server_job.warning_manager()
107 self.assertEqual(manager.is_valid(15, "MSGTYPE"), True)
108 manager.disable_warnings("MSGTYPE", lambda: 10)
109 self.assertEqual(manager.is_valid(15, "MSGTYPE"), False)
110
111
112 def test_multiple_disabled_calls(self):
113 manager = server_job.warning_manager()
114 manager.disable_warnings("MSGTYPE", lambda: 10)
115 manager.disable_warnings("MSGTYPE", lambda: 20)
116 manager.enable_warnings("MSGTYPE", lambda: 30)
117 self.assertEqual(manager.is_valid(15, "MSGTYPE"), False)
118 self.assertEqual(manager.is_valid(25, "MSGTYPE"), False)
119 self.assertEqual(manager.is_valid(35, "MSGTYPE"), True)
120
121
122 def test_multiple_types(self):
123 manager = server_job.warning_manager()
124 manager.disable_warnings("MSGTYPE1", lambda: 10)
125 manager.disable_warnings("MSGTYPE2", lambda: 20)
126 manager.enable_warnings("MSGTYPE2", lambda: 30)
127 self.assertEqual(manager.is_valid(15, "MSGTYPE1"), False)
128 self.assertEqual(manager.is_valid(15, "MSGTYPE2"), True)
129 self.assertEqual(manager.is_valid(25, "MSGTYPE1"), False)
130 self.assertEqual(manager.is_valid(25, "MSGTYPE2"), False)
131 self.assertEqual(manager.is_valid(35, "MSGTYPE1"), False)
132 self.assertEqual(manager.is_valid(35, "MSGTYPE2"), True)
133
134
mbligh7636b3a2008-06-11 15:44:01 +0000135if __name__ == "__main__":
136 unittest.main()