Renaming 'on-finish' to 'on-complete' in task spec
* Renamed 'on-finish' to 'on-complete' * Added unit tests * Renamed obsolete LinearWorkflowHandlerTest to DirectWorkflowHandlerTest Change-Id: Ia88a1f6c0ebc4cd81cb1de7cd8b8deb18d105251
This commit is contained in:
committed by
Nikolay Mahotkin
parent
534c193e16
commit
f2a29c29e3
@@ -65,6 +65,21 @@ Workflows:
|
||||
workflow: wf1 name="John Doe" age=32 param1="Bonnie" param2="Clyde"
|
||||
workflow-parameters:
|
||||
param1: val1
|
||||
on-error:
|
||||
task4: $.my_val = 1
|
||||
on-success:
|
||||
task5: $.my_val = 2
|
||||
on-complete:
|
||||
task6: $.my_val = 3
|
||||
|
||||
task4:
|
||||
action: std.echo output="Task 4 echo"
|
||||
|
||||
task5:
|
||||
action: std.echo output="Task 5 echo"
|
||||
|
||||
task6:
|
||||
action: std.echo output="Task 6 echo"
|
||||
"""
|
||||
|
||||
# TODO(rakhmerov): Add more tests when v2 spec is complete.
|
||||
@@ -156,7 +171,7 @@ class DSLv2ModelTest(base.BaseTest):
|
||||
self.assertEqual('2.0', wf2_spec.get_version())
|
||||
self.assertEqual('wf2', wf2_spec.get_name())
|
||||
self.assertEqual('direct', wf2_spec.get_type())
|
||||
self.assertEqual(1, len(wf2_spec.get_tasks()))
|
||||
self.assertEqual(4, len(wf2_spec.get_tasks()))
|
||||
self.assertEqual('task3', wf2_spec.get_start_task().get_name())
|
||||
|
||||
task3_spec = wf2_spec.get_tasks().get('task3')
|
||||
@@ -183,6 +198,18 @@ class DSLv2ModelTest(base.BaseTest):
|
||||
{'param1': 'val1'},
|
||||
task3_spec.get_workflow_parameters()
|
||||
)
|
||||
self.assertDictEqual(
|
||||
{'task4': '$.my_val = 1'},
|
||||
task3_spec.get_on_error()
|
||||
)
|
||||
self.assertDictEqual(
|
||||
{'task5': '$.my_val = 2'},
|
||||
task3_spec.get_on_success()
|
||||
)
|
||||
self.assertDictEqual(
|
||||
{'task6': '$.my_val = 3'},
|
||||
task3_spec.get_on_complete()
|
||||
)
|
||||
|
||||
def test_to_dict(self):
|
||||
wb_spec = spec_parser.get_workbook_spec_from_yaml(VALID_WB)
|
||||
|
||||
@@ -38,7 +38,7 @@ Workflows:
|
||||
action: std.echo output="Hey"
|
||||
publish:
|
||||
res1: $
|
||||
on-finish:
|
||||
on-complete:
|
||||
- task2: $.res1 = 'Hey'
|
||||
- task3: $.res1 = 'Not Hey'
|
||||
|
||||
@@ -50,9 +50,9 @@ Workflows:
|
||||
"""
|
||||
|
||||
|
||||
class LinearWorkflowHandlerTest(base.BaseTest):
|
||||
class DirectWorkflowHandlerTest(base.BaseTest):
|
||||
def setUp(self):
|
||||
super(LinearWorkflowHandlerTest, self).setUp()
|
||||
super(DirectWorkflowHandlerTest, self).setUp()
|
||||
|
||||
wb_spec = spec_parser.get_workbook_spec_from_yaml(WORKBOOK)
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ class TaskSpec(base.BaseSpec):
|
||||
"publish": {"type": ["object", "null"]},
|
||||
"policies": {"type": ["object", "null"]},
|
||||
"requires": {"type": ["string", "array", "null"]},
|
||||
"on-finish": {"type": ["string", "object", "array", "null"]},
|
||||
"on-complete": {"type": ["string", "object", "array", "null"]},
|
||||
"on-success": {"type": ["string", "object", "array", "null"]},
|
||||
"on-error": {"type": ["string", "object", "array", "null"]}
|
||||
},
|
||||
@@ -154,8 +154,8 @@ class TaskSpec(base.BaseSpec):
|
||||
|
||||
return self._requires
|
||||
|
||||
def get_on_finish(self):
|
||||
return self._get_as_dict("on-finish")
|
||||
def get_on_complete(self):
|
||||
return self._get_as_dict("on-complete")
|
||||
|
||||
def get_on_success(self):
|
||||
return self._get_as_dict("on-success")
|
||||
|
||||
@@ -47,7 +47,7 @@ class DirectWorkflowHandler(base.WorkflowHandler):
|
||||
def _find_next_tasks(self, task_db):
|
||||
"""Finds tasks that should run after completing given task.
|
||||
|
||||
Expression 'on_finish' is not mutually exclusive to 'on_success'
|
||||
Expression 'on_complete' is not mutually exclusive to 'on_success'
|
||||
and 'on_error'.
|
||||
:param task_db: Task DB model.
|
||||
:return: List of task specifications.
|
||||
@@ -74,10 +74,10 @@ class DirectWorkflowHandler(base.WorkflowHandler):
|
||||
task_specs = self._get_tasks_to_schedule(on_success, ctx)
|
||||
|
||||
if states.is_finished(t_state):
|
||||
on_finish = tasks_spec[t_name].get_on_finish()
|
||||
on_complete = tasks_spec[t_name].get_on_complete()
|
||||
|
||||
if on_finish:
|
||||
task_specs += self._get_tasks_to_schedule(on_finish, ctx)
|
||||
if on_complete:
|
||||
task_specs += self._get_tasks_to_schedule(on_complete, ctx)
|
||||
|
||||
LOG.debug("Found tasks: %s" % task_specs)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user