xref: /aosp_15_r20/external/autotest/server/hosts/base_classes_unittest.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li#!/usr/bin/python3
2*9c5db199SXin Li# pylint: disable=missing-docstring
3*9c5db199SXin Li
4*9c5db199SXin Liimport unittest
5*9c5db199SXin Liimport common
6*9c5db199SXin Li
7*9c5db199SXin Lifrom autotest_lib.client.common_lib import global_config
8*9c5db199SXin Lifrom autotest_lib.client.common_lib.test_utils import mock
9*9c5db199SXin Lifrom autotest_lib.server import utils
10*9c5db199SXin Lifrom autotest_lib.server.hosts import base_classes
11*9c5db199SXin Li
12*9c5db199SXin Li
13*9c5db199SXin Liclass test_host_class(unittest.TestCase):
14*9c5db199SXin Li    def setUp(self):
15*9c5db199SXin Li        self.god = mock.mock_god()
16*9c5db199SXin Li        # stub out get_server_dir, global_config.get_config_value
17*9c5db199SXin Li        self.god.stub_with(utils, "get_server_dir",
18*9c5db199SXin Li                           lambda: "/unittest/server")
19*9c5db199SXin Li        self.god.stub_function(global_config.global_config,
20*9c5db199SXin Li                               "get_config_value")
21*9c5db199SXin Li
22*9c5db199SXin Li
23*9c5db199SXin Li    def tearDown(self):
24*9c5db199SXin Li        self.god.unstub_all()
25*9c5db199SXin Li
26*9c5db199SXin Li
27*9c5db199SXin Li    def test_init(self):
28*9c5db199SXin Li        self.god.stub_function(utils, "get_server_dir")
29*9c5db199SXin Li        host = base_classes.Host.__new__(base_classes.Host)
30*9c5db199SXin Li        # set up the recording
31*9c5db199SXin Li        utils.get_server_dir.expect_call().and_return("/unittest/server")
32*9c5db199SXin Li        # run the actual test
33*9c5db199SXin Li        host.__init__()
34*9c5db199SXin Li        self.god.check_playback()
35*9c5db199SXin Li
36*9c5db199SXin Li
37*9c5db199SXin Li    def test_install(self):
38*9c5db199SXin Li        host = base_classes.Host()
39*9c5db199SXin Li        # create a stub installable class
40*9c5db199SXin Li        class installable(object):
41*9c5db199SXin Li            def install(self, host):
42*9c5db199SXin Li                pass
43*9c5db199SXin Li        installableObj = self.god.create_mock_class(installable,
44*9c5db199SXin Li                                                    "installableObj")
45*9c5db199SXin Li        installableObj.install.expect_call(host)
46*9c5db199SXin Li        # run the actual test
47*9c5db199SXin Li        host.install(installableObj)
48*9c5db199SXin Li        self.god.check_playback()
49*9c5db199SXin Li
50*9c5db199SXin Li
51*9c5db199SXin Li    def test_get_wait_up_empty(self):
52*9c5db199SXin Li        global_config.global_config.get_config_value.expect_call(
53*9c5db199SXin Li            "HOSTS", "wait_up_processes", default="").and_return("")
54*9c5db199SXin Li
55*9c5db199SXin Li        host = base_classes.Host()
56*9c5db199SXin Li        self.assertEquals(host.get_wait_up_processes(), set())
57*9c5db199SXin Li        self.god.check_playback()
58*9c5db199SXin Li
59*9c5db199SXin Li
60*9c5db199SXin Li    def test_get_wait_up_ignores_whitespace(self):
61*9c5db199SXin Li        global_config.global_config.get_config_value.expect_call(
62*9c5db199SXin Li            "HOSTS", "wait_up_processes", default="").and_return("  ")
63*9c5db199SXin Li
64*9c5db199SXin Li        host = base_classes.Host()
65*9c5db199SXin Li        self.assertEquals(host.get_wait_up_processes(), set())
66*9c5db199SXin Li        self.god.check_playback()
67*9c5db199SXin Li
68*9c5db199SXin Li
69*9c5db199SXin Li    def test_get_wait_up_single_process(self):
70*9c5db199SXin Li        global_config.global_config.get_config_value.expect_call(
71*9c5db199SXin Li            "HOSTS", "wait_up_processes", default="").and_return("proc1")
72*9c5db199SXin Li
73*9c5db199SXin Li        host = base_classes.Host()
74*9c5db199SXin Li        self.assertEquals(host.get_wait_up_processes(),
75*9c5db199SXin Li                          set(["proc1"]))
76*9c5db199SXin Li        self.god.check_playback()
77*9c5db199SXin Li
78*9c5db199SXin Li
79*9c5db199SXin Li    def test_get_wait_up_multiple_process(self):
80*9c5db199SXin Li        global_config.global_config.get_config_value.expect_call(
81*9c5db199SXin Li            "HOSTS", "wait_up_processes", default="").and_return(
82*9c5db199SXin Li            "proc1,proc2,proc3")
83*9c5db199SXin Li
84*9c5db199SXin Li        host = base_classes.Host()
85*9c5db199SXin Li        self.assertEquals(host.get_wait_up_processes(),
86*9c5db199SXin Li                          set(["proc1", "proc2", "proc3"]))
87*9c5db199SXin Li        self.god.check_playback()
88*9c5db199SXin Li
89*9c5db199SXin Li
90*9c5db199SXin Li    def test_get_wait_up_drops_duplicates(self):
91*9c5db199SXin Li        global_config.global_config.get_config_value.expect_call(
92*9c5db199SXin Li            "HOSTS", "wait_up_processes", default="").and_return(
93*9c5db199SXin Li            "proc1,proc2,proc1")
94*9c5db199SXin Li
95*9c5db199SXin Li        host = base_classes.Host()
96*9c5db199SXin Li        self.assertEquals(host.get_wait_up_processes(),
97*9c5db199SXin Li                          set(["proc1", "proc2"]))
98*9c5db199SXin Li        self.god.check_playback()
99*9c5db199SXin Li
100*9c5db199SXin Li
101*9c5db199SXin Liif __name__ == "__main__":
102*9c5db199SXin Li    unittest.main()
103