def test_task_finish_with_daemon_ephemerals(): p = TaskPlanner(empty_task(processes=[p1, p2(daemon=True, ephemeral=True, max_failures=2)])) assert not p.is_complete() p.set_running('p1') p.set_running('p2') assert not p.is_complete() p.add_success('p1') assert p.is_complete()
def test_task_construction(): p = TaskPlanner(empty_task) assert p.runnable == empty assert p.is_complete() p = TaskPlanner(unordered_task) assert p.runnable == _('p1', 'p2', 'p3') assert not p.is_complete() p = TaskPlanner(ordered_task) assert p.runnable == _('p1') assert not p.is_complete()
def test_task_failed_predecessor_does_not_make_process_runnable(): p = TaskPlanner(empty_task(processes=[p1, p2], constraints=[{'order': ['p1', 'p2']}])) p.set_running('p1') p.add_success('p1') assert 'p2' in p.runnable assert not p.is_complete() p = TaskPlanner(empty_task(processes=[p1, p2], constraints=[{'order': ['p1', 'p2']}])) p.set_running('p1') p.add_failure('p1') assert 'p2' not in p.runnable assert not p.is_complete()
def test_task_finish_with_ephemerals(): pure_ephemeral = empty_task(processes=[p1(ephemeral=True)]) p = TaskPlanner(pure_ephemeral) assert p.is_complete() p.set_running('p1') assert p.is_complete() p.add_failure('p1') assert p.is_complete() assert not p.failed assert p.finished == _('p1') with_ephemeral = empty_task(processes=[p1, p2(ephemeral=True)]) p = TaskPlanner(with_ephemeral) assert not p.is_complete() assert p.runnable == _('p1', 'p2') p.set_running('p1') assert not p.is_complete() p.add_failure('p1') assert p.is_complete() p.set_running('p2') assert p.is_complete() p.add_failure('p2') assert p.is_complete() assert p.failed == _('p1')
def test_task_finish_with_daemons(): # Daemon is still restricted to the failure limit p = TaskPlanner(empty_task(processes=[p1(daemon=True)])) assert not p.is_complete() p.set_running('p1') assert not p.is_complete() p.add_failure('p1') assert p.is_complete() # Resilient to two failures p = TaskPlanner(empty_task(processes=[p1(daemon=True, max_failures=2)])) assert not p.is_complete() p.set_running('p1') assert not p.is_complete() p.add_failure('p1') assert not p.is_complete() p.set_running('p1') assert not p.is_complete() p.add_failure('p1') assert p.is_complete() # Can swallow successes p = TaskPlanner(empty_task(processes=[p1(daemon=True, max_failures=2)])) assert not p.is_complete() p.set_running('p1') assert not p.is_complete() p.add_failure('p1') assert not p.is_complete() p.set_running('p1') assert not p.is_complete() p.add_success('p1') assert not p.is_complete() p.set_running('p1') assert not p.is_complete() p.add_failure('p1') assert p.is_complete()