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()
示例#2
0
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()
示例#3
0
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()
示例#6
0
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()
示例#7
0
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_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')
示例#9
0
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()
示例#10
0
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()