#!/usr/bin/python
import unittest
import common
from autotest_lib.client.common_lib import global_config
from autotest_lib.client.common_lib.test_utils import mock
from autotest_lib.server import utils
from autotest_lib.server.hosts import base_classes, bootloader
class test_host_class(unittest.TestCase):
def setUp(self):
self.god = mock.mock_god()
# stub out get_server_dir, global_config.get_config_value
self.god.stub_with(utils, "get_server_dir",
lambda: "/unittest/server")
self.god.stub_function(global_config.global_config,
"get_config_value")
# stub out the bootloader
self.real_bootloader = bootloader.Bootloader
bootloader.Bootloader = lambda arg: object()
def tearDown(self):
self.god.unstub_all()
bootloader.Bootloader = self.real_bootloader
def test_init(self):
self.god.stub_function(utils, "get_server_dir")
host = base_classes.Host.__new__(base_classes.Host)
bootloader.Bootloader = \
self.god.create_mock_class_obj(self.real_bootloader,
"Bootloader")
# overwrite this attribute as it's irrelevant for these tests
# and may cause problems with construction of the mock
bootloader.Bootloader.boottool_path = None
# set up the recording
utils.get_server_dir.expect_call().and_return("/unittest/server")
bootloader.Bootloader.expect_new(host)
# run the actual test
host.__init__()
self.god.check_playback()
def test_install(self):
host = base_classes.Host()
# create a dummy installable class
class installable(object):
def install(self, host):
pass
installableObj = self.god.create_mock_class(installable,
"installableObj")
installableObj.install.expect_call(host)
# run the actual test
host.install(installableObj)
self.god.check_playback()
def test_get_wait_up_empty(self):
global_config.global_config.get_config_value.expect_call(
"HOSTS", "wait_up_processes", default="").and_return("")
host = base_classes.Host()
self.assertEquals(host.get_wait_up_processes(), set())
self.god.check_playback()
def test_get_wait_up_ignores_whitespace(self):
global_config.global_config.get_config_value.expect_call(
"HOSTS", "wait_up_processes", default="").and_return(" ")
host = base_classes.Host()
self.assertEquals(host.get_wait_up_processes(), set())
self.god.check_playback()
def test_get_wait_up_single_process(self):
global_config.global_config.get_config_value.expect_call(
"HOSTS", "wait_up_processes", default="").and_return("proc1")
host = base_classes.Host()
self.assertEquals(host.get_wait_up_processes(),
set(["proc1"]))
self.god.check_playback()
def test_get_wait_up_multiple_process(self):
global_config.global_config.get_config_value.expect_call(
"HOSTS", "wait_up_processes", default="").and_return(
"proc1,proc2,proc3")
host = base_classes.Host()
self.assertEquals(host.get_wait_up_processes(),
set(["proc1", "proc2", "proc3"]))
self.god.check_playback()
def test_get_wait_up_drops_duplicates(self):
global_config.global_config.get_config_value.expect_call(
"HOSTS", "wait_up_processes", default="").and_return(
"proc1,proc2,proc1")
host = base_classes.Host()
self.assertEquals(host.get_wait_up_processes(),
set(["proc1", "proc2"]))
self.god.check_playback()
if __name__ == "__main__":
unittest.main()