Feat: manage failing tasks in scheduler
This commit is contained in:
@@ -8,6 +8,6 @@ def success_worker(args, deps, output):
|
||||
return Message(0, [f"SUCCESS - {args} - {deps} - {output}"], [])
|
||||
|
||||
|
||||
def fail_worker():
|
||||
def fail_worker(args, deps, output):
|
||||
return Message(1, [f"FAILURE - {args} - {deps} - {output}"], [])
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ def test_schedule_one_task():
|
||||
assert result.err == []
|
||||
|
||||
assert scheduler.tasks == []
|
||||
assert scheduler.done == ["end"]
|
||||
assert scheduler.output_done == ["end"]
|
||||
|
||||
|
||||
def test_schedule_one_task_with_args():
|
||||
@@ -45,7 +45,7 @@ def test_schedule_one_task_with_args():
|
||||
assert result.err == []
|
||||
|
||||
assert scheduler.tasks == []
|
||||
assert scheduler.done == ["one"]
|
||||
assert scheduler.output_done == ["one"]
|
||||
|
||||
|
||||
def test_schedule_multiple_tasks():
|
||||
@@ -61,17 +61,17 @@ def test_schedule_multiple_tasks():
|
||||
result = scheduler.next_task()
|
||||
assert result.status == 0
|
||||
assert scheduler.tasks == [t2, t3]
|
||||
assert scheduler.done == ["one"]
|
||||
assert scheduler.output_done == ["one"]
|
||||
|
||||
result = scheduler.next_task()
|
||||
assert result.status == 0
|
||||
assert scheduler.tasks == [t3]
|
||||
assert scheduler.done == ["one", "two"]
|
||||
assert scheduler.output_done == ["one", "two"]
|
||||
|
||||
result = scheduler.next_task()
|
||||
assert result.status == 0
|
||||
assert scheduler.tasks == []
|
||||
assert scheduler.done == ["one", "two", "three"]
|
||||
assert scheduler.output_done == ["one", "two", "three"]
|
||||
|
||||
|
||||
def test_schedule_multiple_tasks_with_dependencies():
|
||||
@@ -87,19 +87,19 @@ def test_schedule_multiple_tasks_with_dependencies():
|
||||
result = scheduler.next_task()
|
||||
assert result.status == 0
|
||||
assert scheduler.tasks == [t1, t2]
|
||||
assert scheduler.done == ["three"]
|
||||
assert scheduler.output_done == ["three"]
|
||||
assert scheduler.doable_tasks == [t1]
|
||||
|
||||
result = scheduler.next_task()
|
||||
assert result.status == 0
|
||||
assert scheduler.tasks == [t2]
|
||||
assert scheduler.done == ["three", "one"]
|
||||
assert scheduler.output_done == ["three", "one"]
|
||||
assert scheduler.doable_tasks == [t2]
|
||||
|
||||
result = scheduler.next_task()
|
||||
assert result.status == 0
|
||||
assert scheduler.tasks == []
|
||||
assert scheduler.done == ["three", "one", "two"]
|
||||
assert scheduler.output_done == ["three", "one", "two"]
|
||||
|
||||
|
||||
def test_schedule_multiple_tasks_with_dependencies_loop():
|
||||
@@ -112,7 +112,7 @@ def test_schedule_multiple_tasks_with_dependencies_loop():
|
||||
for task in scheduler.backlog():
|
||||
pass
|
||||
|
||||
assert scheduler.done == ["three", "one", "two"]
|
||||
assert scheduler.output_done == ["three", "one", "two"]
|
||||
|
||||
|
||||
def test_schedule_empty_task():
|
||||
@@ -135,5 +135,27 @@ def test_schedule_multiple_tasks_with_undoable_dependencies():
|
||||
pass
|
||||
|
||||
assert scheduler.tasks == [t1]
|
||||
assert scheduler.done == ["two"]
|
||||
assert scheduler.output_done == ["two"]
|
||||
assert scheduler.doable_tasks == []
|
||||
|
||||
|
||||
def test_schedule_multiple_tasks_with_failling_tasks():
|
||||
scheduler = Scheduler(dispatcher=fake_dispatcher)
|
||||
t1 = Task(action="FAILURE", args={"task": "one"}, deps=["three"], output="one")
|
||||
t2 = Task(action="FAKE", args={"task": "two"}, deps=["one"], output="two")
|
||||
t3 = Task(action="FAKE", args={"task": "three"}, deps=[], output="three")
|
||||
t4 = Task(action="FAILURE", args={"task": "four"}, deps=[], output="four")
|
||||
scheduler.append([t1, t2, t3, t4])
|
||||
|
||||
assert scheduler.doable_tasks == [t3, t4]
|
||||
assert scheduler.is_finishable()
|
||||
|
||||
status = []
|
||||
for message in scheduler.backlog():
|
||||
status.append(message.status)
|
||||
|
||||
assert status == [0, 1, 1]
|
||||
assert scheduler.tasks == [t2]
|
||||
assert scheduler.failed_tasks == [t1, t4]
|
||||
assert scheduler.output_done == ["three"]
|
||||
assert scheduler.doable_tasks == []
|
||||
|
||||
Reference in New Issue
Block a user