[oozie] Add test to validate graph with multiple generic actions
@@ -1189,6 +1189,48 @@ class TestExternalWorkflowGraph(object):
assert_equal(workflow_data['layout'][0]['rows'][1]['widgets'][0]['widgetType'], 'generic-widget')
assert_true(len(workflow_data['workflow']['nodes'][1]['children']) == 2)
+ def test_gen_workflow_data_for_xml_with_multiple_generic_nodes(self):
+ self.wf.definition = """<workflow-app name="Test" xmlns="uri:oozie:workflow:0.5" xmlns:sla="uri:oozie:sla:0.2">
+ <start to="email-1"/>
+ <kill name="Kill">
+ <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
+ </kill>
+ <action name="email-1">
+ <generic_action xmlns="uri:oozie:email-action:0.2">
+ <to>test</to>
+ <subject>test</subject>
+ <body>test</body>
+ <content_type>text/plain</content_type>
+ </generic_action>
+ <ok to="email-2"/>
+ <error to="Kill"/>
+ <sla:info>
+ <sla:nominal-time>${nominal_time}</sla:nominal-time>
+ <sla:should-start>10</sla:should-start>
+ <sla:should-end>${30 * MINUTES}</sla:should-end>
+ </sla:info>
+ </action>
+ <action name="email-2">
+ <generic_action2 xmlns="uri:oozie:email-action:0.2">
+ <to>test</to>
+ <subject>test</subject>
+ <body>test</body>
+ <content_type>text/plain</content_type>
+ </generic_action2>
+ <ok to="End"/>
+ <error to="Kill"/>
+ </action>
+ <end name="End"/>
+ </workflow-app>
+ """
+
+ workflow_data = Workflow.gen_workflow_data_from_xml(self.user, self.wf)
+
+ assert_true(len(workflow_data['layout'][0]['rows']) == 5)
+ assert_true(len(workflow_data['workflow']['nodes']) == 5)
+ assert_equal(workflow_data['layout'][0]['rows'][1]['widgets'][0]['widgetType'], 'generic-widget')
+ assert_true(len(workflow_data['workflow']['nodes'][1]['children']) == 2)
+
class TestModelAPI(OozieMockBase):
def setUp(self):
