|
@@ -248,6 +248,20 @@ class OozieMockBase(object):
|
|
|
Link(parent=action3, child=self.wf.end, name="ok").save()
|
|
Link(parent=action3, child=self.wf.end, name="ok").save()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+ def create_noop_workflow(self, name='noop-test'):
|
|
|
|
|
+ wf = Workflow.objects.new_workflow(self.user)
|
|
|
|
|
+ wf.name = name
|
|
|
|
|
+ wf.save()
|
|
|
|
|
+ wf.start.workflow = wf
|
|
|
|
|
+ wf.end.workflow = wf
|
|
|
|
|
+ wf.start.save()
|
|
|
|
|
+ wf.end.save()
|
|
|
|
|
+ Kill.objects.create(name='kill', workflow=wf, node_type=Kill.node_type)
|
|
|
|
|
+ Link.objects.create(parent=wf.start, child=wf.end, name='related')
|
|
|
|
|
+ Link.objects.create(parent=wf.start, child=wf.end, name="to")
|
|
|
|
|
+ return wf
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
class OozieBase(OozieServerProvider):
|
|
class OozieBase(OozieServerProvider):
|
|
|
requires_hadoop = True
|
|
requires_hadoop = True
|
|
|
|
|
|
|
@@ -398,6 +412,55 @@ class TestAPI(OozieMockBase):
|
|
|
response = self.c.post(reverse('oozie:workflow_save', kwargs={'workflow': self.wf.pk}), data={'workflow': workflow_json}, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
response = self.c.post(reverse('oozie:workflow_save', kwargs={'workflow': self.wf.pk}), data={'workflow': workflow_json}, HTTP_X_REQUESTED_WITH='XMLHttpRequest')
|
|
|
assert_equal(200, response.status_code)
|
|
assert_equal(200, response.status_code)
|
|
|
|
|
|
|
|
|
|
+ def test_workflow_save_subworkflow(self):
|
|
|
|
|
+ subworkflow_name = "subworkflow-1"
|
|
|
|
|
+ subworkflow_id = "subworkflow:1"
|
|
|
|
|
+ subworkflow_json = """{
|
|
|
|
|
+ "description": "",
|
|
|
|
|
+ "workflow": %(workflow)d,
|
|
|
|
|
+ "child_links": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "",
|
|
|
|
|
+ "name": "ok",
|
|
|
|
|
+ "parent": "%(id)s",
|
|
|
|
|
+ "child": %(end)d
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "",
|
|
|
|
|
+ "name": "error",
|
|
|
|
|
+ "parent": "%(id)s",
|
|
|
|
|
+ "child": %(kill)d
|
|
|
|
|
+ }
|
|
|
|
|
+ ],
|
|
|
|
|
+ "node_type": "subworkflow",
|
|
|
|
|
+ "sub_workflow": %(subworkflow)d,
|
|
|
|
|
+ "job_properties": "[]",
|
|
|
|
|
+ "name": "%(name)s",
|
|
|
|
|
+ "id": "%(id)s",
|
|
|
|
|
+ "propagate_configuration": true
|
|
|
|
|
+ }"""
|
|
|
|
|
+
|
|
|
|
|
+ wf = self.create_noop_workflow()
|
|
|
|
|
+ subworkflow_json = subworkflow_json % {
|
|
|
|
|
+ 'workflow': wf.id,
|
|
|
|
|
+ 'subworkflow': self.wf.id,
|
|
|
|
|
+ 'end': wf.end.id,
|
|
|
|
|
+ 'kill': Kill.objects.get(workflow=wf).id,
|
|
|
|
|
+ 'name': subworkflow_name,
|
|
|
|
|
+ 'id': subworkflow_id
|
|
|
|
|
+ }
|
|
|
|
|
+ workflow_dict = workflow_to_dict(wf)
|
|
|
|
|
+ workflow_dict['nodes'].append(json.loads(subworkflow_json))
|
|
|
|
|
+ workflow_dict['nodes'][0]['child_links'][1]['child'] = subworkflow_id
|
|
|
|
|
+ del workflow_dict['nodes'][0]['child_links'][1]['id']
|
|
|
|
|
+ workflow_json = json.dumps(workflow_dict)
|
|
|
|
|
+
|
|
|
|
|
+ response = self.c.post(reverse('oozie:workflow_save', kwargs={'workflow': wf.pk}), data={'workflow': workflow_json})
|
|
|
|
|
+ test_response_json = response.content
|
|
|
|
|
+ test_response_json_object = json.loads(test_response_json)
|
|
|
|
|
+ assert_equal(0, test_response_json_object['status'], workflow_json)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
def test_workflow(self):
|
|
def test_workflow(self):
|
|
|
response = self.c.get(reverse('oozie:workflow', kwargs={'workflow': self.wf.pk}))
|
|
response = self.c.get(reverse('oozie:workflow', kwargs={'workflow': self.wf.pk}))
|
|
|
test_response_json = response.content
|
|
test_response_json = response.content
|