• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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