R-1209 closed: the decoy suite gets 600 s in script-tests (the others keep 300 s; a time-out still fails) — it timed out on every CI push tonight
gates / gates (push) Successful in 15m40s

This commit is contained in:
2026-10-22 00:26:53 +02:00
parent f576d7f7ba
commit c2c130ecbb
4 changed files with 28 additions and 4 deletions
+11 -2
View File
@@ -35,6 +35,14 @@ for _stream in (sys.stdout, sys.stderr):
MARK = "FELHOM_SCRIPT_TESTS_GATE"
TIMEOUT_S = 300
# R-1209 (2026-10-21 night): the decoy suite runs every gate's decoys and took 250–255 s on the CI runner on green runs,
# then over 300 s on every push that night (CI jobs 2177–2189) — ~155 s on DooPlex. A time-out is still a FAILURE (rc
# „timeout"); only this one suite gets a longer limit. Pinned by test_script_tests_gate.py (timeout_for).
SUITE_TIMEOUT_S = {"scripts/test_gate_decoys.py": 600}
def timeout_for(rel):
return SUITE_TIMEOUT_S.get(rel.replace(os.sep, "/"), TIMEOUT_S)
SKIP_DIRS = {"__pycache__", ".git", "node_modules"}
@@ -62,12 +70,13 @@ def main(argv):
for s in suites:
rel = os.path.relpath(s, root)
t0 = time.time()
limit = timeout_for(rel)
try:
p = subprocess.run([sys.executable, "-W", "ignore", s], cwd=root, env=env,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, timeout=TIMEOUT_S)
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, timeout=limit)
rc, tail = p.returncode, p.stdout.decode("utf-8", "replace").strip().splitlines()[-3:]
except subprocess.TimeoutExpired:
rc, tail = "timeout", ["(killed after %d s)" % TIMEOUT_S]
rc, tail = "timeout", ["(killed after %d s)" % limit]
verdict = "OK " if rc == 0 else "FAIL"
print(" %s %-55s %5.1fs rc=%s" % (verdict, rel, time.time() - t0, rc))
if rc != 0:
+10
View File
@@ -47,8 +47,18 @@ CASES = [
]
def timeouts_ok():
"""R-1209: only the decoy suite gets the longer limit; every other suite keeps 300 s, and a time-out still fails."""
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import script_tests_gate as g
return (g.timeout_for("scripts/test_gate_decoys.py") == 600 and g.timeout_for("scripts/test_other.py") == g.TIMEOUT_S == 300)
def main():
bad = 0
t_ok = timeouts_ok()
bad += not t_ok
print("%s %-32s" % ("ok " if t_ok else "FAIL", "per-suite time limits (R-1209)"))
for name, files, nested, want in CASES:
got = gate(fake_repo(files), nested)
ok = got == want