def setUp(self): super(FunctionalTestWithSetup, self).setUp() self.fake_goal1 = obj_utils.get_test_goal(self.context, id=1, uuid=utils.generate_uuid(), name="dummy_1") self.fake_goal2 = obj_utils.get_test_goal(self.context, id=2, uuid=utils.generate_uuid(), name="dummy_2") self.fake_goal1.create() self.fake_goal2.create() self.fake_strategy1 = obj_utils.get_test_strategy( self.context, id=1, uuid=utils.generate_uuid(), name="strategy_1", goal_id=self.fake_goal1.id) self.fake_strategy2 = obj_utils.get_test_strategy( self.context, id=2, uuid=utils.generate_uuid(), name="strategy_2", goal_id=self.fake_goal2.id) self.fake_strategy1.create() self.fake_strategy2.create()
def test_execute_with_exception(self, m_send_update, m_execution, m_get_actionplan, m_get_strategy): m_get_actionplan.return_value = obj_utils.get_test_action_plan( self.context, id=0) m_get_strategy.return_value = obj_utils.get_test_strategy( self.context, id=1) actions = [] third = self.create_action("no_exist", {'message': 'next'}) second = self.create_action("sleep", {'duration': 0.0}) first = self.create_action("nop", {'message': 'hello'}) self.check_action_state(first, objects.action.State.PENDING) self.check_action_state(second, objects.action.State.PENDING) self.check_action_state(third, objects.action.State.PENDING) actions.append(first) actions.append(second) actions.append(third) self.engine.execute(actions) self.check_action_state(first, objects.action.State.SUCCEEDED) self.check_action_state(second, objects.action.State.SUCCEEDED) self.check_action_state(third, objects.action.State.FAILED)
def setUp(self): super(FunctionalTestWithSetup, self).setUp() self.fake_goal1 = obj_utils.get_test_goal( self.context, id=1, uuid=utils.generate_uuid(), name="DUMMY_1") self.fake_goal2 = obj_utils.get_test_goal( self.context, id=2, uuid=utils.generate_uuid(), name="DUMMY_2") self.fake_goal1.create() self.fake_goal2.create() self.fake_strategy1 = obj_utils.get_test_strategy( self.context, id=1, uuid=utils.generate_uuid(), name="STRATEGY_1", goal_id=self.fake_goal1.id) self.fake_strategy2 = obj_utils.get_test_strategy( self.context, id=2, uuid=utils.generate_uuid(), name="STRATEGY_2", goal_id=self.fake_goal2.id) self.fake_strategy1.create() self.fake_strategy2.create()
def test_execute_with_action_failed(self, m_make_action, m_send_update, m_send_execution, m_get_actionplan, m_get_strategy): m_get_actionplan.return_value = obj_utils.get_test_action_plan( self.context, id=0) m_get_strategy.return_value = obj_utils.get_test_strategy( self.context, id=1) actions = [self.create_action("fake_action", {})] m_make_action.return_value = FakeAction(mock.Mock()) self.engine.execute(actions) self.check_action_state(actions[0], objects.action.State.FAILED)
def test_execute_with_one_action(self, mock_send_update, mock_execution_notification, m_get_actionplan, m_get_strategy): m_get_actionplan.return_value = obj_utils.get_test_action_plan( self.context, id=0) m_get_strategy.return_value = obj_utils.get_test_strategy( self.context, id=1) actions = [self.create_action("nop", {'message': 'test'})] try: self.engine.execute(actions) self.check_actions_state(actions, objects.action.State.SUCCEEDED) except Exception as exc: self.fail(exc)
def test_policy_disallow_create(self): fake_goal1 = obj_utils.get_test_goal( self.context, id=1, uuid=utils.generate_uuid(), name="dummy_1") fake_goal1.create() fake_strategy1 = obj_utils.get_test_strategy( self.context, id=1, uuid=utils.generate_uuid(), name="strategy_1", goal_id=fake_goal1.id) fake_strategy1.create() audit_template_dict = post_get_test_audit_template( goal=fake_goal1.uuid, strategy=fake_strategy1.uuid) self._common_policy_check( "audit_template:create", self.post_json, '/audit_templates', audit_template_dict, expect_errors=True)
def test_policy_disallow_create(self): fake_goal1 = obj_utils.get_test_goal( self.context, id=1, uuid=utils.generate_uuid(), name="dummy_1") fake_goal1.create() fake_strategy1 = obj_utils.get_test_strategy( self.context, id=1, uuid=utils.generate_uuid(), name="strategy_1", goal_id=fake_goal1.id) fake_strategy1.create() audit_template_dict = post_get_test_audit_template( goal=fake_goal1.uuid, strategy=fake_strategy1.uuid) self._common_policy_check( "audit_template:create", self.post_json, '/audit_templates', audit_template_dict, expect_errors=True)
def test_execute_with_two_actions(self, m_send_update, m_execution, m_get_actionplan, m_get_strategy): m_get_actionplan.return_value = obj_utils.get_test_action_plan( self.context, id=0) m_get_strategy.return_value = obj_utils.get_test_strategy( self.context, id=1) actions = [] second = self.create_action("sleep", {'duration': 0.0}) first = self.create_action("nop", {'message': 'test'}) actions.append(first) actions.append(second) try: self.engine.execute(actions) self.check_actions_state(actions, objects.action.State.SUCCEEDED) except Exception as exc: self.fail(exc)
def test_execute_nop_sleep(self, mock_send_update, mock_execution_notification, m_get_actionplan, m_get_strategy): m_get_actionplan.return_value = obj_utils.get_test_action_plan( self.context, id=0) m_get_strategy.return_value = obj_utils.get_test_strategy( self.context, id=1) actions = [] first_nop = self.create_action("nop", {'message': 'test'}) second_nop = self.create_action("nop", {'message': 'second test'}) sleep = self.create_action("sleep", {'duration': 0.0}, parents=[first_nop.uuid, second_nop.uuid]) actions.extend([first_nop, second_nop, sleep]) try: self.engine.execute(actions) self.check_actions_state(actions, objects.action.State.SUCCEEDED) except Exception as exc: self.fail(exc)
def test_execute_with_parents(self, mock_send_update, mock_execution_notification, m_get_actionplan, m_get_strategy): m_get_actionplan.return_value = obj_utils.get_test_action_plan( self.context, id=0) m_get_strategy.return_value = obj_utils.get_test_strategy( self.context, id=1) actions = [] first_nop = self.create_action( "nop", {'message': 'test'}, uuid='bc7eee5c-4fbe-4def-9744-b539be55aa19') second_nop = self.create_action( "nop", {'message': 'second test'}, uuid='0565bd5c-aa00-46e5-8d81-2cb5cc1ffa23') first_sleep = self.create_action( "sleep", {'duration': 0.0}, parents=[first_nop.uuid, second_nop.uuid], uuid='be436531-0da3-4dad-a9c0-ea1d2aff6496') second_sleep = self.create_action( "sleep", {'duration': 0.0}, parents=[first_sleep.uuid], uuid='9eb51e14-936d-4d12-a500-6ba0f5e0bb1c') actions.extend([first_nop, second_nop, first_sleep, second_sleep]) expected_nodes = [ {'uuid': 'bc7eee5c-4fbe-4def-9744-b539be55aa19', 'input_parameters': {u'message': u'test'}, 'action_plan_id': 0, 'state': u'PENDING', 'parents': [], 'action_type': u'nop', 'id': 1}, {'uuid': '0565bd5c-aa00-46e5-8d81-2cb5cc1ffa23', 'input_parameters': {u'message': u'second test'}, 'action_plan_id': 0, 'state': u'PENDING', 'parents': [], 'action_type': u'nop', 'id': 2}, {'uuid': 'be436531-0da3-4dad-a9c0-ea1d2aff6496', 'input_parameters': {u'duration': 0.0}, 'action_plan_id': 0, 'state': u'PENDING', 'parents': [u'bc7eee5c-4fbe-4def-9744-b539be55aa19', u'0565bd5c-aa00-46e5-8d81-2cb5cc1ffa23'], 'action_type': u'sleep', 'id': 3}, {'uuid': '9eb51e14-936d-4d12-a500-6ba0f5e0bb1c', 'input_parameters': {u'duration': 0.0}, 'action_plan_id': 0, 'state': u'PENDING', 'parents': [u'be436531-0da3-4dad-a9c0-ea1d2aff6496'], 'action_type': u'sleep', 'id': 4}] expected_edges = [ ('action_type:nop uuid:0565bd5c-aa00-46e5-8d81-2cb5cc1ffa23', 'action_type:sleep uuid:be436531-0da3-4dad-a9c0-ea1d2aff6496'), ('action_type:nop uuid:bc7eee5c-4fbe-4def-9744-b539be55aa19', 'action_type:sleep uuid:be436531-0da3-4dad-a9c0-ea1d2aff6496'), ('action_type:sleep uuid:be436531-0da3-4dad-a9c0-ea1d2aff6496', 'action_type:sleep uuid:9eb51e14-936d-4d12-a500-6ba0f5e0bb1c')] try: flow = self.engine.execute(actions) actual_nodes = sorted([x[0]._db_action.as_dict() for x in flow.iter_nodes()], key=lambda x: x['id']) for expected, actual in zip(expected_nodes, actual_nodes): for key in expected.keys(): self.assertIn(expected[key], actual.values()) actual_edges = [(u.name, v.name) for (u, v, _) in flow.iter_links()] for edge in expected_edges: self.assertIn(edge, actual_edges) self.check_actions_state(actions, objects.action.State.SUCCEEDED) except Exception as exc: self.fail(exc)