mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-11 07:18:28 +01:00
Fix some celery queue realted ci failure
fix: #8403 1. remove some of the flaky mark 2. In `get_result` make sure the celery task is completed.
This commit is contained in:
@@ -11,64 +11,54 @@ def to_dict(tasks):
|
||||
return status_dict
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def success_tasks(tmp_dir, dvc, scm, test_queue, exp_stage):
|
||||
queue_length = 3
|
||||
name_list = []
|
||||
for i in range(queue_length):
|
||||
name = f"success{i}"
|
||||
name_list.append(name)
|
||||
dvc.experiments.run(
|
||||
exp_stage.addressing, params=[f"foo={i}"], queue=True, name=name
|
||||
)
|
||||
dvc.experiments.run(run_all=True)
|
||||
return name_list
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def failed_tasks(tmp_dir, dvc, scm, test_queue, failed_exp_stage):
|
||||
queue_length = 3
|
||||
name_list = []
|
||||
for i in range(queue_length):
|
||||
name = f"failed{i}"
|
||||
name_list.append(name)
|
||||
dvc.experiments.run(
|
||||
failed_exp_stage.addressing,
|
||||
params=[f"foo={i+queue_length}"],
|
||||
queue=True,
|
||||
name=name,
|
||||
)
|
||||
dvc.experiments.run(run_all=True)
|
||||
return name_list
|
||||
|
||||
|
||||
@pytest.mark.xfail(strict=False, reason="pytest-celery flaky")
|
||||
@pytest.mark.parametrize("follow", [True, False])
|
||||
def test_celery_logs(
|
||||
tmp_dir,
|
||||
scm,
|
||||
dvc,
|
||||
failed_exp_stage,
|
||||
test_queue,
|
||||
follow,
|
||||
capsys,
|
||||
):
|
||||
celery_queue = dvc.experiments.celery_queue
|
||||
dvc.experiments.run(failed_exp_stage.addressing, queue=True)
|
||||
dvc.experiments.run(run_all=True)
|
||||
|
||||
queue = dvc.experiments.celery_queue
|
||||
done_result = first(queue.iter_done())
|
||||
done_result = first(celery_queue.iter_done())
|
||||
|
||||
name = done_result.entry.stash_rev
|
||||
captured = capsys.readouterr()
|
||||
queue.logs(name, follow=follow)
|
||||
celery_queue.logs(name, follow=follow)
|
||||
captured = capsys.readouterr()
|
||||
assert "failed to reproduce 'failed-copy-file'" in captured.out
|
||||
|
||||
|
||||
@pytest.mark.xfail(strict=False, reason="pytest-celery flaky")
|
||||
def test_queue_remove_done(dvc, failed_tasks, success_tasks):
|
||||
assert len(dvc.experiments.celery_queue.failed_stash) == 3
|
||||
status = to_dict(dvc.experiments.celery_queue.status())
|
||||
def test_queue_remove_done(
|
||||
dvc,
|
||||
exp_stage,
|
||||
failed_exp_stage,
|
||||
):
|
||||
queue_length = 3
|
||||
success_tasks = []
|
||||
failed_tasks = []
|
||||
celery_queue = dvc.experiments.celery_queue
|
||||
for i in range(queue_length):
|
||||
name = f"success{i}"
|
||||
success_tasks.append(name)
|
||||
dvc.experiments.run(
|
||||
exp_stage.addressing, params=[f"foo={i}"], queue=True, name=name
|
||||
)
|
||||
name_fail = f"failed{i}"
|
||||
failed_tasks.append(name_fail)
|
||||
dvc.experiments.run(
|
||||
failed_exp_stage.addressing,
|
||||
params=[f"foo={i+queue_length}"],
|
||||
queue=True,
|
||||
name=name_fail,
|
||||
)
|
||||
dvc.experiments.run(run_all=True)
|
||||
assert len(celery_queue.failed_stash) == 3
|
||||
status = to_dict(celery_queue.status())
|
||||
assert len(status) == 6
|
||||
for name in failed_tasks:
|
||||
assert status[name] == "Failed"
|
||||
@@ -76,27 +66,21 @@ def test_queue_remove_done(dvc, failed_tasks, success_tasks):
|
||||
assert status[name] == "Success"
|
||||
|
||||
with pytest.raises(InvalidArgumentError):
|
||||
dvc.experiments.celery_queue.remove(failed_tasks[:2] + ["non-exist"])
|
||||
assert len(dvc.experiments.celery_queue.status()) == 6
|
||||
celery_queue.remove(failed_tasks[:2] + ["non-exist"])
|
||||
assert len(celery_queue.status()) == 6
|
||||
|
||||
to_remove = [failed_tasks[0], success_tasks[2]]
|
||||
assert set(dvc.experiments.celery_queue.remove(to_remove)) == set(
|
||||
to_remove
|
||||
)
|
||||
assert set(celery_queue.remove(to_remove)) == set(to_remove)
|
||||
|
||||
assert len(dvc.experiments.celery_queue.failed_stash) == 2
|
||||
status = to_dict(dvc.experiments.celery_queue.status())
|
||||
assert len(celery_queue.failed_stash) == 2
|
||||
status = to_dict(celery_queue.status())
|
||||
assert set(status) == set(failed_tasks[1:] + success_tasks[:2])
|
||||
|
||||
assert dvc.experiments.celery_queue.clear(failed=True) == failed_tasks[1:]
|
||||
assert set(celery_queue.clear(failed=True)) == set(failed_tasks[1:])
|
||||
|
||||
assert len(dvc.experiments.celery_queue.failed_stash) == 0
|
||||
assert set(to_dict(dvc.experiments.celery_queue.status())) == set(
|
||||
success_tasks[:2]
|
||||
)
|
||||
assert len(celery_queue.failed_stash) == 0
|
||||
assert set(to_dict(celery_queue.status())) == set(success_tasks[:2])
|
||||
|
||||
assert (
|
||||
dvc.experiments.celery_queue.clear(success=True) == success_tasks[:2]
|
||||
)
|
||||
assert set(celery_queue.clear(success=True)) == set(success_tasks[:2])
|
||||
|
||||
assert dvc.experiments.celery_queue.status() == []
|
||||
assert celery_queue.status() == []
|
||||
|
||||
Reference in New Issue
Block a user