feat(preprocess): add resumable DWH jobs

This commit is contained in:
2026-07-12 05:34:38 +02:00
parent 2624d1d342
commit 3a9808f126
6 changed files with 323 additions and 20 deletions
+66
View File
@@ -0,0 +1,66 @@
import hashlib
from tht.jobs.dwh_pipeline import DwhPreprocessPipeline
FP = "sha256:" + hashlib.sha256(b"test").hexdigest()
def test_lsh_failure_resumes_exact_run_without_repeating_introspection(tmp_path):
calls = []
def introspect():
calls.append("introspect")
def fail_lsh():
calls.append("lsh-failed")
raise RuntimeError("database detail that must not leak")
failed = DwhPreprocessPipeline(
workspace_id="demo",
workspace_root=tmp_path,
config_fingerprint=FP,
input_fingerprint=FP,
introspect=introspect,
build_lsh=fail_lsh,
).run(("introspect", "lsh"))
assert failed.status == "failed"
resumed = DwhPreprocessPipeline(
workspace_id="demo",
workspace_root=tmp_path,
config_fingerprint=FP,
input_fingerprint=FP,
introspect=introspect,
build_lsh=lambda: calls.append("lsh-recovered"),
).run(("introspect", "lsh"), resume_run_id=failed.run_id)
assert resumed.status == "succeeded"
assert resumed.resumed_from == failed.run_id
assert calls == ["introspect", "lsh-failed", "lsh-recovered"]
def test_resume_rejects_a_different_stage_selection(tmp_path):
failed = DwhPreprocessPipeline(
workspace_id="demo",
workspace_root=tmp_path,
config_fingerprint=FP,
input_fingerprint=FP,
introspect=lambda: None,
build_lsh=lambda: (_ for _ in ()).throw(RuntimeError()),
).run(("introspect", "lsh"))
pipeline = DwhPreprocessPipeline(
workspace_id="demo",
workspace_root=tmp_path,
config_fingerprint=FP,
input_fingerprint=FP,
introspect=lambda: None,
build_lsh=lambda: None,
)
try:
pipeline.run(("lsh",), resume_run_id=failed.run_id)
except Exception as error:
assert "incompatible" in str(error)
else:
raise AssertionError("resume with different stages must fail")