blob: f76bb6716aaea3c3ea4fa8f1112e04f7ccf98ffe [file] [log] [blame]
jadmanskie0af17f2008-06-10 20:58:21 +00001#!/usr/bin/python
2
3import unittest
4import common
5
6from autotest_lib.client.common_lib import global_config
jadmanski7de3efe2008-06-11 19:37:36 +00007from autotest_lib.client.common_lib.test_utils import mock
jadmanskie0af17f2008-06-10 20:58:21 +00008from autotest_lib.server import utils
9from autotest_lib.server.hosts import base_classes, bootloader
10
11
12class test_host_class(unittest.TestCase):
13 def setUp(self):
14 self.god = mock.mock_god()
15 # stub out get_server_dir, global_config.get_config_value
16 self.god.stub_with(utils, "get_server_dir",
17 lambda: "/unittest/server")
18 self.god.stub_function(global_config.global_config,
19 "get_config_value")
20 # stub out the bootloader
21 self.real_bootloader = bootloader.Bootloader
22 bootloader.Bootloader = lambda arg: object()
23
24
25 def tearDown(self):
26 self.god.unstub_all()
27 bootloader.Bootloader = self.real_bootloader
28
29
30 def test_init(self):
31 self.god.stub_function(utils, "get_server_dir")
32 host = base_classes.Host.__new__(base_classes.Host)
33 bootloader.Bootloader = \
34 self.god.create_mock_class_obj(self.real_bootloader,
35 "Bootloader")
36 # overwrite this attribute as it's irrelevant for these tests
37 # and may cause problems with construction of the mock
38 bootloader.Bootloader.boottool_path = None
39 # set up the recording
40 utils.get_server_dir.expect_call().and_return("/unittest/server")
41 bootloader.Bootloader.expect_new(host)
42 # run the actual test
43 host.__init__()
44 self.god.check_playback()
45
46
47 def test_install(self):
48 host = base_classes.Host()
49 # create a dummy installable class
50 class installable(object):
51 def install(self, host):
52 pass
53 installableObj = self.god.create_mock_class(installable,
54 "installableObj")
55 installableObj.install.expect_call(host)
56 # run the actual test
57 host.install(installableObj)
58 self.god.check_playback()
59
60
jadmanskie0af17f2008-06-10 20:58:21 +000061 def test_get_wait_up_empty(self):
62 global_config.global_config.get_config_value.expect_call(
63 "HOSTS", "wait_up_processes", default="").and_return("")
64
65 host = base_classes.Host()
66 self.assertEquals(host.get_wait_up_processes(), set())
67 self.god.check_playback()
68
69
70 def test_get_wait_up_ignores_whitespace(self):
71 global_config.global_config.get_config_value.expect_call(
72 "HOSTS", "wait_up_processes", default="").and_return(" ")
73
74 host = base_classes.Host()
75 self.assertEquals(host.get_wait_up_processes(), set())
76 self.god.check_playback()
77
78
79 def test_get_wait_up_single_process(self):
80 global_config.global_config.get_config_value.expect_call(
81 "HOSTS", "wait_up_processes", default="").and_return("proc1")
82
83 host = base_classes.Host()
84 self.assertEquals(host.get_wait_up_processes(),
85 set(["proc1"]))
86 self.god.check_playback()
87
88
89 def test_get_wait_up_multiple_process(self):
90 global_config.global_config.get_config_value.expect_call(
91 "HOSTS", "wait_up_processes", default="").and_return(
92 "proc1,proc2,proc3")
93
94 host = base_classes.Host()
95 self.assertEquals(host.get_wait_up_processes(),
96 set(["proc1", "proc2", "proc3"]))
97 self.god.check_playback()
98
99
100 def test_get_wait_up_drops_duplicates(self):
101 global_config.global_config.get_config_value.expect_call(
102 "HOSTS", "wait_up_processes", default="").and_return(
103 "proc1,proc2,proc1")
104
105 host = base_classes.Host()
106 self.assertEquals(host.get_wait_up_processes(),
107 set(["proc1", "proc2"]))
108 self.god.check_playback()
109
110
111if __name__ == "__main__":
112 unittest.main()