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
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