Beispiel #1
0
 def validate(self):
     """
     Validate the current workflow template. At that point, we already know
     the underlying DAG is valid. This method ensures there's a single root
     task and all task names are registered tasks.
     If not valid, this method should raise either `WorkflowRootTaskError`
     or `UnknownTaskName` exceptions.
     """
     root_nodes = len(self.dag.root_nodes())
     if root_nodes != 1:
         raise WorkflowRootTaskError(root_nodes)
     for task in self.tasks:
         TaskRegistry.get(task.name)
     return True
Beispiel #2
0
 def validate(self):
     """
     Validate the current workflow template. At that point, we already know
     the underlying DAG is valid. This method ensures there's a single root
     task and all task names are registered tasks.
     If not valid, this method should raise either `WorkflowRootTaskError`
     or `UnknownTaskName` exceptions.
     """
     root_nodes = len(self.dag.root_nodes())
     if root_nodes != 1:
         raise WorkflowRootTaskError(root_nodes)
     for task in self.tasks:
         TaskRegistry.get(task.name)
     return True
Beispiel #3
0
 def test_register_basic_class(self):
     """
     A class that does not inherit from `TaskHolder` is still a valid task
     holder if registered properly.
     """
     register('basic-task', 'mycoro')(BasicTaskHolder)
     klass, coro_fn = TaskRegistry.get('basic-task')
     self.assertIs(klass, BasicTaskHolder)
     self.assertIs(coro_fn, BasicTaskHolder.mycoro)
Beispiel #4
0
 def test_register_basic_class(self):
     """
     A class that does not inherit from `TaskHolder` is still a valid task
     holder if registered properly.
     """
     register('basic-task', 'mycoro')(BasicTaskHolder)
     klass, coro_fn = TaskRegistry.get('basic-task')
     self.assertIs(klass, BasicTaskHolder)
     self.assertIs(coro_fn, BasicTaskHolder.mycoro)
Beispiel #5
0
    def test_valid_registrations(self):
        """
        Check the current registry (provisioned by registered task holder and
        coroutine) holds the right references.
        """
        # A task holder is registered as a tuple made of (klass, coro_fn)
        register('my-task-holder', 'do_it')(MyTaskHolder)
        klass, coro_fn = TaskRegistry.get('my-task-holder')
        self.assertIs(klass, MyTaskHolder)
        self.assertIs(coro_fn, MyTaskHolder.do_it)
        self.assertEqual(MyTaskHolder.TASK_NAME, 'my-task-holder')

        # A coroutine is registered as a tuple made of (None, coro_fn)
        register('my-coro-task')(my_coro_task)
        klass, coro_fn = TaskRegistry.get('my-coro-task')
        self.assertIs(klass, None)
        self.assertIs(coro_fn, my_coro_task)

        # A coroutine can be registered sevral times with distinct names.
        # Note that an extra parameter passed to register will be ignored.
        register('other-coro-task', 'dummy')(my_coro_task)
        klass, coro_fn = TaskRegistry.get('other-coro-task')
        self.assertIs(klass, None)
        self.assertIs(coro_fn, my_coro_task)
Beispiel #6
0
    def test_valid_registrations(self):
        """
        Check the current registry (provisioned by registered task holder and
        coroutine) holds the right references.
        """
        # A task holder is registered as a tuple made of (klass, coro_fn)
        register('my-task-holder', 'do_it')(MyTaskHolder)
        klass, coro_fn = TaskRegistry.get('my-task-holder')
        self.assertIs(klass, MyTaskHolder)
        self.assertIs(coro_fn, MyTaskHolder.do_it)
        self.assertEqual(MyTaskHolder.TASK_NAME, 'my-task-holder')

        # A coroutine is registered as a tuple made of (None, coro_fn)
        register('my-coro-task')(my_coro_task)
        klass, coro_fn = TaskRegistry.get('my-coro-task')
        self.assertIs(klass, None)
        self.assertIs(coro_fn, my_coro_task)

        # A coroutine can be registered sevral times with distinct names.
        # Note that an extra parameter passed to register will be ignored.
        register('other-coro-task', 'dummy')(my_coro_task)
        klass, coro_fn = TaskRegistry.get('other-coro-task')
        self.assertIs(klass, None)
        self.assertIs(coro_fn, my_coro_task)
Beispiel #7
0
 def test_registry_get_unknown(self):
     """
     Looking for an unknown Tukio task must raise a `KeyError` exception
     """
     with self.assertRaises(UnknownTaskName):
         TaskRegistry.get('dummy')
Beispiel #8
0
 def test_registry_get_unknown(self):
     """
     Looking for an unknown Tukio task must raise a `KeyError` exception
     """
     with self.assertRaises(UnknownTaskName):
         TaskRegistry.get('dummy')