def test_update_trigger_rules(self): oozie_node = ET.Element("dummy") op1 = parsed_node.ParsedNode(dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task1")) op1.downstream_names = ["task2", "task3"] op1.error_xml = "fail1" op2 = parsed_node.ParsedNode(dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task2")) op2.downstream_names = ["task3"] op2.error_xml = "fail1" op3 = parsed_node.ParsedNode(dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task3")) op3.downstream_names = ["end1"] op3.error_xml = "fail1" end = parsed_node.ParsedNode(dummy_mapper.DummyMapper(oozie_node=oozie_node, name="end1")) fail = parsed_node.ParsedNode(dummy_mapper.DummyMapper(oozie_node=oozie_node, name="fail1")) op_dict = {"task1": op1, "task2": op2, "task3": op3, "end1": end, "fail1": fail} self.parser.workflow.nodes.update(op_dict) self.parser.create_relations() self.parser.update_trigger_rules() self.assertFalse(op1.is_ok) self.assertFalse(op1.is_error) self.assertTrue(op2.is_ok) self.assertFalse(op2.is_error) self.assertTrue(op3.is_ok) self.assertFalse(op2.is_error) self.assertTrue(end.is_ok) self.assertFalse(end.is_error) self.assertFalse(fail.is_ok) self.assertTrue(fail.is_error)
def test_convert_relations(self): oozie_node = ET.Element("dummy") op1 = parsed_action_node.ParsedActionNode( dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task1", dag_name="DAG_NAME_B1"), tasks=[self._create_task("task1")], ) op1.downstream_names = ["task2", "task3"] op1.error_xml = "fail1" op2 = parsed_action_node.ParsedActionNode( dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task2", dag_name="DAG_NAME_B2"), tasks=[self._create_task("task2")], ) op2.downstream_names = ["task3", "task4"] op2.error_xml = "fail1" op3 = parsed_action_node.ParsedActionNode( dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task3", dag_name="DAG_NAME_B3"), tasks=[self._create_task("task3")], ) op3.downstream_names = ["end1"] op3.error_xml = "fail1" op4 = mock.Mock( **{ "first_task_id": "task4_first", "last_task_id": "task4_last", "get_downstreams.return_value": ["task1", "task2", "task3"], "get_error_downstream_name.return_value": "fail1", } ) end = parsed_action_node.ParsedActionNode( dummy_mapper.DummyMapper(oozie_node=oozie_node, name="end1", dag_name="DAG_NAME_B4"), tasks=[self._create_task("end1")], ) fail = parsed_action_node.ParsedActionNode( dummy_mapper.DummyMapper(oozie_node=oozie_node, name="fail1", dag_name="DAG_NAME_B5"), tasks=[self._create_task("fail1")], ) op_dict = {"task1": op1, "task2": op2, "task3": op3, "task4": op4, "end1": end, "fail1": fail} workflow = self._create_workflow(nodes=op_dict) converter = self._create_converter() workflow.relations = set() converter.convert_relations(workflow) self.assertEqual( workflow.relations, { Relation(from_task_id="task1", to_task_id="fail1", is_error=True), Relation(from_task_id="task1", to_task_id="task2"), Relation(from_task_id="task1", to_task_id="task3"), Relation(from_task_id="task2", to_task_id="fail1", is_error=True), Relation(from_task_id="task2", to_task_id="task3"), Relation(from_task_id="task2", to_task_id="task4_first"), Relation(from_task_id="task3", to_task_id="end1"), Relation(from_task_id="task3", to_task_id="fail1", is_error=True), Relation(from_task_id="task4_last", to_task_id="fail1", is_error=True), Relation(from_task_id="task4_last", to_task_id="task1"), Relation(from_task_id="task4_last", to_task_id="task2"), Relation(from_task_id="task4_last", to_task_id="task3"), }, )
def test_update_trigger_rules(self): oozie_node = ET.Element("dummy") op1 = parsed_action_node.ParsedActionNode( dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task1", dag_name="DAG_NAME_B"), tasks=[self._create_task("task1")], ) op1.downstream_names = ["task2", "task3"] op1.error_xml = "fail1" op2 = parsed_action_node.ParsedActionNode( dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task2", dag_name="DAG_NAME_B"), tasks=[self._create_task("task2")], ) op2.downstream_names = ["task3"] op2.error_xml = "fail1" op3 = parsed_action_node.ParsedActionNode( dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task3", dag_name="DAG_NAME_B"), tasks=[self._create_task("task3")], ) op3.downstream_names = ["end1"] op3.error_xml = "fail1" end = parsed_action_node.ParsedActionNode( dummy_mapper.DummyMapper(oozie_node=oozie_node, name="end1", dag_name="DAG_NAME_B"), tasks=[self._create_task("end1")], ) fail = parsed_action_node.ParsedActionNode( dummy_mapper.DummyMapper(oozie_node=oozie_node, name="fail1", dag_name="DAG_NAME_B"), tasks=[self._create_task("fail1")], ) op_dict = {"task1": op1, "task2": op2, "task3": op3, "end1": end, "fail1": fail} workflow = self._create_workflow(nodes=op_dict) converter = self._create_converter() workflow.relations = set() converter.convert_relations(workflow) converter.update_trigger_rules(workflow) self.assertFalse(op1.is_ok) self.assertFalse(op1.is_error) self.assertTrue(op2.is_ok) self.assertFalse(op2.is_error) self.assertTrue(op3.is_ok) self.assertFalse(op2.is_error) self.assertTrue(end.is_ok) self.assertFalse(end.is_error) self.assertFalse(fail.is_ok) self.assertTrue(fail.is_error)
def test_create_relations(self): oozie_node = ET.Element("dummy") op1 = parsed_node.ParsedNode(dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task1")) op1.downstream_names = ["task2", "task3"] op1.error_xml = "fail1" op2 = parsed_node.ParsedNode(dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task2")) op2.downstream_names = ["task3", "task4"] op2.error_xml = "fail1" op3 = parsed_node.ParsedNode(dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task3")) op3.downstream_names = ["end1"] op3.error_xml = "fail1" op4 = mock.Mock( **{ "first_task_id": "task4_first", "last_task_id": "task4_last", "get_downstreams.return_value": ["task1", "task2", "task3"], "get_error_downstream_name.return_value": "fail1", } ) end = parsed_node.ParsedNode(dummy_mapper.DummyMapper(oozie_node=oozie_node, name="end1")) fail = parsed_node.ParsedNode(dummy_mapper.DummyMapper(oozie_node=oozie_node, name="fail1")) op_dict = {"task1": op1, "task2": op2, "task3": op3, "task4": op4, "end1": end, "fail1": fail} self.parser.workflow.nodes.update(op_dict) self.parser.create_relations() self.assertEqual( self.parser.workflow.relations, { Relation(from_task_id="task1", to_task_id="fail1"), Relation(from_task_id="task1", to_task_id="task2"), Relation(from_task_id="task1", to_task_id="task3"), Relation(from_task_id="task2", to_task_id="fail1"), Relation(from_task_id="task2", to_task_id="task3"), Relation(from_task_id="task2", to_task_id="task4_first"), Relation(from_task_id="task3", to_task_id="end1"), Relation(from_task_id="task3", to_task_id="fail1"), Relation(from_task_id="task4_last", to_task_id="fail1"), Relation(from_task_id="task4_last", to_task_id="task1"), Relation(from_task_id="task4_last", to_task_id="task2"), Relation(from_task_id="task4_last", to_task_id="task3"), }, )
def _get_dummy_mapper(self): return dummy_mapper.DummyMapper(oozie_node=self.oozie_node, name="test_id", trigger_rule=TriggerRule.DUMMY)
def _get_dummy_mapper(self): return dummy_mapper.DummyMapper(oozie_node=self.oozie_node, name="test_id", dag_name="DAG_NAME_B")
def setUp(self): oozie_node = Element("dummy") op1 = dummy_mapper.DummyMapper(oozie_node=oozie_node, name="task1") self.p_node = parsed_action_node.ParsedActionNode(op1)