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