コード例 #1
0
    def test_update_worker_states(self):
        from epumgmt.main.em_core_status import _update_worker_states
        from epumgmt.api.exceptions import ProgrammingError
        from mocks.common import FakeCommon
        from mocks.modules import FakeModules
        from mocks.state import EPUControllerState, WorkerInstanceState

        controllers = []
        controller_state_map = {}
        allvms = []

        common = FakeCommon()
        modules = FakeModules()
        
        run_name = "test_run"

        controller_0 = "epu_controller_sleeper1"
        controllers.append(controller_0)

        controller_0_state = EPUControllerState()

        worker_0 = WorkerInstanceState()
        worker_0_nodeid = "x-qwertyuiop"
        worker_0.nodeid = worker_0_nodeid
        worker_0.iaas_state = "running"
        worker_0.iaas_state_time = 1307136434

        worker_0_vm = epumgmt.api.RunVM()
        worker_0_vm.nodeid = worker_0_nodeid

        controller_0_state.instances.append(worker_0)
        controller_state_map[controller_0] = controller_0_state


        # Test when there's WorkerInstance that doesn't appear in the list of VMs
        _update_worker_states(common, modules, run_name, controllers, controller_state_map, allvms)
        warnings = [warning for warning in common.log.transcript if warning[0] == "WARNING"]
        assert len(warnings) > 0
        _, log_message = warnings[0]
        assert log_message.find("knows about worker we have no IaaS id for yet") != -1


        allvms.append(worker_0_vm)

        # Test standard case where the worker has one new event. 
        _update_worker_states(common, modules, run_name, controllers, controller_state_map, allvms)

        assert modules.persistence.vm_store[run_name][0] == worker_0_vm
        assert len(worker_0_vm.events) == 1

        # Test for controllers being present in the controller_map, but not the
        # controller state map
        common.log.transcript = []
        _update_worker_states(common, modules, run_name, controllers, {}, allvms)
        warnings = [warning for warning in common.log.transcript if warning[0] == "WARNING"]
        _, warning = warnings[-1]
        assert warning.find("in list of controllers, but no state available.") != -1
コード例 #2
0
    def test_update_worker_parents(self):
        from epumgmt.main.em_core_status import _update_worker_parents
        from epumgmt.api.exceptions import ProgrammingError
        from mocks.common import FakeCommon
        from mocks.modules import FakeModules
        from mocks.state import EPUControllerState, WorkerInstanceState


        controllers = []
        controller_state_map = {}
        allvms = []

        common = FakeCommon()
        modules = FakeModules()

        run_name = "test_run"

        controller_0 = "epu_controller_sleeper1"
        controllers.append(controller_0)

        controller_0_state = EPUControllerState()

        worker_0 = WorkerInstanceState()
        worker_0_nodeid = "x-qwertyuiop"
        worker_0.nodeid = worker_0_nodeid

        worker_0_vm = epumgmt.api.RunVM()
        worker_0_vm.nodeid = worker_0_nodeid

        controller_0_state.instances.append(worker_0)
        controller_state_map[controller_0] = controller_0_state

        # Test when there's WorkerInstance that doesn't appear in the list of VMs
        _update_worker_parents(common, modules, run_name, controllers, controller_state_map, allvms)
        warnings = [warning for warning in common.log.transcript if warning[0] == "WARNING"]
        assert len(warnings) > 0
        _, log_message = warnings[0]
        assert log_message.find("knows about worker we have no IaaS id for yet") != -1


        # Test the normal case
        allvms.append(worker_0_vm)
        _update_worker_parents(common, modules, run_name, controllers, controller_state_map, allvms)

        assert worker_0_vm.parent == controller_0
        assert modules.persistence.vm_store[run_name][0] == worker_0_vm


        # Test when the VM's parent isn't the controller that owns it
        worker_0_vm.parent = "some_other_controller"
        try:
            _update_worker_parents(common, modules, run_name, controllers, controller_state_map, allvms)
        except ProgrammingError:
            programming_error_raised = True

        assert programming_error_raised

        # Test for controllers being present in the controller_map, but not the
        # controller state map
        common.log.transcript = []
        _update_worker_parents(common, modules, run_name, controllers, {}, allvms)
        warnings = [warning for warning in common.log.transcript if warning[0] == "WARNING"]
        _, warning = warnings[-1]
        assert warning.find("in list of controllers, but no state available.") != -1