def test_task_waits(): dt = p1(daemon=True, max_failures=0) p = TaskPlanner( empty_task(processes=[ dt(name='d3', min_duration=3), dt(name='d5', min_duration=5), dt(name='d7', min_duration=7) ])) assert p.runnable_at(timestamp=0) == _('d3', 'd5', 'd7') assert p.min_wait(timestamp=0) == 0 p.set_running('d3') p.add_success('d3', timestamp=0) assert p.runnable_at(timestamp=0) == _('d5', 'd7') assert p.waiting_at(timestamp=0) == _('d3') assert approx_equal(p.get_wait('d3', timestamp=0), 3) assert approx_equal(p.min_wait(timestamp=0), 0) assert approx_equal(p.min_wait(timestamp=1), 0) assert p.waiting_at(timestamp=3) == empty assert p.runnable_at(timestamp=3) == _('d3', 'd5', 'd7') p.set_running('d3') p.set_running('d7') p.add_success('d7', timestamp=1) assert approx_equal(p.min_wait(timestamp=2), 0) p.set_running('d5') assert approx_equal(p.min_wait(timestamp=2), 6) p.add_success('d5', timestamp=2) p.add_success('d3', timestamp=2) assert approx_equal(p.min_wait(timestamp=3), 2) assert p.runnable_at(timestamp=2) == empty assert p.runnable_at(timestamp=5) == _('d3') assert p.runnable_at(timestamp=7) == _('d3', 'd5') assert p.runnable_at(timestamp=8) == _('d3', 'd5', 'd7')
def test_task_waits(): dt = p1(daemon=True, max_failures=0) p = TaskPlanner(empty_task(processes=[dt(name='d3', min_duration=3), dt(name='d5', min_duration=5), dt(name='d7', min_duration=7)])) assert p.runnable_at(timestamp=0) == _('d3', 'd5', 'd7') assert p.min_wait(timestamp=0) == 0 p.set_running('d3') p.add_success('d3', timestamp=0) assert p.runnable_at(timestamp=0) == _('d5', 'd7') assert p.waiting_at(timestamp=0) == _('d3') assert approx_equal(p.get_wait('d3', timestamp=0), 3) assert approx_equal(p.min_wait(timestamp=0), 0) assert approx_equal(p.min_wait(timestamp=1), 0) assert p.waiting_at(timestamp=3) == empty assert p.runnable_at(timestamp=3) == _('d3', 'd5', 'd7') p.set_running('d3') p.set_running('d7') p.add_success('d7', timestamp=1) assert approx_equal(p.min_wait(timestamp=2), 0) p.set_running('d5') assert approx_equal(p.min_wait(timestamp=2), 6) p.add_success('d5', timestamp=2) p.add_success('d3', timestamp=2) assert approx_equal(p.min_wait(timestamp=3), 2) assert p.runnable_at(timestamp=2) == empty assert p.runnable_at(timestamp=5) == _('d3') assert p.runnable_at(timestamp=7) == _('d3', 'd5') assert p.runnable_at(timestamp=8) == _('d3', 'd5', 'd7')