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)
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)
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)
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)
def test_nasty_failing_task_exception_reraised(self): flow = utils.NastyFailingTask() engine = self._make_engine(flow) self.assertFailuresRegexp(RuntimeError, '^Gotcha', engine.run)