def test_create_agent(self): factory = InfrastructureAgentFactory() agent = factory.create_agent('ec2') self.assertEquals(type(agent), type(EC2Agent())) agent = factory.create_agent('euca') self.assertEquals(type(agent), type(EucalyptusAgent())) try: factory.create_agent('bogus') self.fail('No exception thrown for invalid infrastructure') except NameError: pass except Exception: self.fail('Unexpected exception thrown for invalid infrastructure')
def test_describe_vms(self): agent_exception = AgentRuntimeException("Runtime Exception") vm_info_return = (['public-ip'], ['private-ip'], ['i-id']) mocked_agent = EC2Agent() mocked_agent.describe_instances= MagicMock(side_effect=[vm_info_return, agent_exception]) # Test describe vms returns values. expected = vm_info_return actual = iaas.InstancesHandler._describe_vms(mocked_agent, full_params) self.assertEquals(actual, expected) # Test describe vms runs into exception. with self.assertRaises(AgentRuntimeException): iaas.InstancesHandler._describe_vms(mocked_agent, full_params) self.assertEquals(actual, expected)
def test_kill_vms(self): agent_exception = AgentRuntimeException("Runtime Exception") mocked_agent = EC2Agent() mocked_agent.terminate_instances = MagicMock( side_effect=[None, agent_exception]) initial_status_info = { 'success': False, 'reason': 'received kill request', 'state': iaas.InstancesHandler.STATE_PENDING, 'vm_info': None } iaas.operation_ids['op_id'] = initial_status_info terminate_params = full_params.copy() terminate_params['instance_ids'] = ['i-foobar'] iaas.InstancesHandler._kill_vms(mocked_agent, terminate_params, 'op_id') result_status_info = { 'success': True, 'reason': 'received kill request', 'state': iaas.InstancesHandler.STATE_SUCCESS, 'vm_info': None } self.assertEqual(iaas.operation_ids['op_id'], result_status_info) initial_status_info = { 'success': False, 'reason': 'received kill request', 'state': iaas.InstancesHandler.STATE_PENDING, 'vm_info': None } iaas.operation_ids['op_id_2'] = initial_status_info iaas.InstancesHandler._kill_vms(mocked_agent, terminate_params, 'op_id_2') result_status_info = { 'success': False, 'reason': str(agent_exception), 'state': iaas.InstancesHandler.STATE_FAILED, 'vm_info': None } self.assertEqual(iaas.operation_ids['op_id_2'], result_status_info)
def test_spawn_vms(self): no_vms = ([], [], []) vm_info_return = (['i-id'], ['public-ip'], ['private-ip']) describe_vms_return = (['public-ip'], ['private-ip'], ['i-id']) agent_exception = AgentRuntimeException("Runtime Exception") mocked_agent = EC2Agent() mocked_agent.assert_credentials_are_valid = MagicMock() mocked_agent.run_instances = MagicMock(side_effect=[vm_info_return, agent_exception, agent_exception]) mocked_agent.describe_instances = MagicMock(side_effect=[no_vms, describe_vms_return]) mocked_agent.configure_instance_security = MagicMock() initial_status_info = { 'success': False, 'reason': 'received run request', 'state': iaas.InstancesHandler.STATE_PENDING } iaas.operation_ids['op_id'] = initial_status_info iaas.InstancesHandler._spawn_vms(mocked_agent, 1, full_params, 'op_id') vm_info = { 'public_ips': ['public-ip'], 'private_ips': ['private-ip'], 'instance_ids': ['i-id'] } result_status_info = { 'success': True, 'reason': 'received run request', 'state': iaas.InstancesHandler.STATE_SUCCESS, 'vm_info': vm_info } self.assertEqual(iaas.operation_ids['op_id'], result_status_info) # Exception happened but vms were started. mocked_agent.describe_instances = MagicMock(side_effect=[no_vms, describe_vms_return]) initial_status_info = { 'success': False, 'reason': 'received run request', 'state': iaas.InstancesHandler.STATE_PENDING } iaas.operation_ids['op_id_2'] = initial_status_info iaas.InstancesHandler._spawn_vms(mocked_agent, 1, full_params, 'op_id_2') result_status_info = { 'success': False, 'reason': str(agent_exception), 'state': iaas.InstancesHandler.STATE_SUCCESS, 'vm_info': vm_info } self.assertEqual(iaas.operation_ids['op_id_2'], result_status_info) # Exception happened but vms were not started. mocked_agent.describe_instances = MagicMock(side_effect=[no_vms, no_vms]) initial_status_info = { 'success': False, 'reason': 'received run request', 'state': iaas.InstancesHandler.STATE_PENDING } iaas.operation_ids['op_id_3'] = initial_status_info iaas.InstancesHandler._spawn_vms(mocked_agent, 1, full_params, 'op_id_3') result_status_info = { 'success': False, 'reason': str(agent_exception), 'state': iaas.InstancesHandler.STATE_FAILED, } self.assertEqual(iaas.operation_ids['op_id_3'], result_status_info)