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: wf1 name="John Doe" age=32 param1="Bonnie" param2="Clyde"
|
||||||
workflow-parameters:
|
workflow-parameters:
|
||||||
param1: val1
|
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.
|
# 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('2.0', wf2_spec.get_version())
|
||||||
self.assertEqual('wf2', wf2_spec.get_name())
|
self.assertEqual('wf2', wf2_spec.get_name())
|
||||||
self.assertEqual('direct', wf2_spec.get_type())
|
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())
|
self.assertEqual('task3', wf2_spec.get_start_task().get_name())
|
||||||
|
|
||||||
task3_spec = wf2_spec.get_tasks().get('task3')
|
task3_spec = wf2_spec.get_tasks().get('task3')
|
||||||
@@ -183,6 +198,18 @@ class DSLv2ModelTest(base.BaseTest):
|
|||||||
{'param1': 'val1'},
|
{'param1': 'val1'},
|
||||||
task3_spec.get_workflow_parameters()
|
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):
|
def test_to_dict(self):
|
||||||
wb_spec = spec_parser.get_workbook_spec_from_yaml(VALID_WB)
|
wb_spec = spec_parser.get_workbook_spec_from_yaml(VALID_WB)
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ Workflows:
|
|||||||
action: std.echo output="Hey"
|
action: std.echo output="Hey"
|
||||||
publish:
|
publish:
|
||||||
res1: $
|
res1: $
|
||||||
on-finish:
|
on-complete:
|
||||||
- task2: $.res1 = 'Hey'
|
- task2: $.res1 = 'Hey'
|
||||||
- task3: $.res1 = 'Not Hey'
|
- task3: $.res1 = 'Not Hey'
|
||||||
|
|
||||||
@@ -50,9 +50,9 @@ Workflows:
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
class LinearWorkflowHandlerTest(base.BaseTest):
|
class DirectWorkflowHandlerTest(base.BaseTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(LinearWorkflowHandlerTest, self).setUp()
|
super(DirectWorkflowHandlerTest, self).setUp()
|
||||||
|
|
||||||
wb_spec = spec_parser.get_workbook_spec_from_yaml(WORKBOOK)
|
wb_spec = spec_parser.get_workbook_spec_from_yaml(WORKBOOK)
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ class TaskSpec(base.BaseSpec):
|
|||||||
"publish": {"type": ["object", "null"]},
|
"publish": {"type": ["object", "null"]},
|
||||||
"policies": {"type": ["object", "null"]},
|
"policies": {"type": ["object", "null"]},
|
||||||
"requires": {"type": ["string", "array", "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-success": {"type": ["string", "object", "array", "null"]},
|
||||||
"on-error": {"type": ["string", "object", "array", "null"]}
|
"on-error": {"type": ["string", "object", "array", "null"]}
|
||||||
},
|
},
|
||||||
@@ -154,8 +154,8 @@ class TaskSpec(base.BaseSpec):
|
|||||||
|
|
||||||
return self._requires
|
return self._requires
|
||||||
|
|
||||||
def get_on_finish(self):
|
def get_on_complete(self):
|
||||||
return self._get_as_dict("on-finish")
|
return self._get_as_dict("on-complete")
|
||||||
|
|
||||||
def get_on_success(self):
|
def get_on_success(self):
|
||||||
return self._get_as_dict("on-success")
|
return self._get_as_dict("on-success")
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ class DirectWorkflowHandler(base.WorkflowHandler):
|
|||||||
def _find_next_tasks(self, task_db):
|
def _find_next_tasks(self, task_db):
|
||||||
"""Finds tasks that should run after completing given task.
|
"""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'.
|
and 'on_error'.
|
||||||
:param task_db: Task DB model.
|
:param task_db: Task DB model.
|
||||||
:return: List of task specifications.
|
:return: List of task specifications.
|
||||||
@@ -74,10 +74,10 @@ class DirectWorkflowHandler(base.WorkflowHandler):
|
|||||||
task_specs = self._get_tasks_to_schedule(on_success, ctx)
|
task_specs = self._get_tasks_to_schedule(on_success, ctx)
|
||||||
|
|
||||||
if states.is_finished(t_state):
|
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:
|
if on_complete:
|
||||||
task_specs += self._get_tasks_to_schedule(on_finish, ctx)
|
task_specs += self._get_tasks_to_schedule(on_complete, ctx)
|
||||||
|
|
||||||
LOG.debug("Found tasks: %s" % task_specs)
|
LOG.debug("Found tasks: %s" % task_specs)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user