예제 #1
0
    def test_revert_raises_for_unordered_in_linear(self):
        flow = lf.Flow('p-root').add(
            utils.ProgressingTask(name='task1'),
            utils.ProgressingTask(name='task2'),
            uf.Flow('p-inner').add(
                utils.ProgressingTask(name='task3'),
                utils.NastyFailingTask(name='nasty')
            )
        )
        engine = self._make_engine(flow)
        with utils.CaptureListener(engine,
                                   capture_flow=False,
                                   skip_tasks=['nasty']) as capturer:
            self.assertFailuresRegexp(RuntimeError, '^Gotcha', engine.run)

        # NOTE(imelnikov): we don't know if task 3 was run, but if it was,
        # it should have been reverted in correct order.
        possible_values = ['task1.t RUNNING', 'task1.t SUCCESS(5)',
                           'task2.t RUNNING', 'task2.t SUCCESS(5)',
                           'task3.t RUNNING', 'task3.t SUCCESS(5)',
                           'task3.t REVERTING',
                           'task3.t REVERTED']
        self.assertIsSuperAndSubsequence(possible_values, capturer.values)
        possible_values_no_task3 = ['task1.t RUNNING', 'task2.t RUNNING']
        self.assertIsSuperAndSubsequence(capturer.values,
                                         possible_values_no_task3)
예제 #2
0
 def test_revert_raises_for_linear_in_unordered(self):
     flow = uf.Flow('p-root').add(
         utils.SaveOrderTask(name='task1'),
         lf.Flow('p-inner').add(utils.SaveOrderTask(name='task2'),
                                utils.NastyFailingTask()))
     engine = self._make_engine(flow)
     self.assertFailuresRegexp(RuntimeError, '^Gotcha', engine.run)
     self.assertNotIn('task2 reverted(5)', self.values)
예제 #3
0
 def test_revert_raises_for_linear_in_unordered(self):
     flow = uf.Flow('p-root').add(
         utils.ProgressingTask(name='task1'),
         lf.Flow('p-inner').add(utils.ProgressingTask(name='task2'),
                                utils.NastyFailingTask()))
     engine = self._make_engine(flow)
     with utils.CaptureListener(engine, capture_flow=False) as capturer:
         self.assertFailuresRegexp(RuntimeError, '^Gotcha', engine.run)
     self.assertNotIn('task2.t REVERTED', capturer.values)
예제 #4
0
    def test_revert_raises_for_unordered_in_linear(self):
        flow = lf.Flow('p-root').add(
            utils.SaveOrderTask(name='task1'),
            utils.SaveOrderTask(name='task2'),
            uf.Flow('p-inner').add(utils.SaveOrderTask(name='task3'),
                                   utils.NastyFailingTask()))
        engine = self._make_engine(flow)
        self.assertFailuresRegexp(RuntimeError, '^Gotcha', engine.run)

        # NOTE(imelnikov): we don't know if task 3 was run, but if it was,
        # it should have been reverted in correct order.
        possible_values = ['task1', 'task2', 'task3', 'task3 reverted(5)']
        self.assertIsSuperAndSubsequence(possible_values, self.values)
        possible_values_no_task3 = ['task1', 'task2']
        self.assertIsSuperAndSubsequence(self.values, possible_values_no_task3)
예제 #5
0
 def test_nasty_failing_task_exception_reraised(self):
     flow = utils.NastyFailingTask()
     engine = self._make_engine(flow)
     self.assertFailuresRegexp(RuntimeError, '^Gotcha', engine.run)