47 lines
3.0 KiB
Diff
47 lines
3.0 KiB
Diff
--- agents/rocko/work/vikunja-502/run-mutants.baseline.py 2026-10-21 23:53:18.260554870 -0500
|
|
+++ agents/rocko/work/vikunja-502/run-mutants.py 2026-10-22 00:00:01.232405637 -0500
|
|
@@ -3,7 +3,7 @@
|
|
from pathlib import Path
|
|
import argparse, hashlib, json, os, re, signal, subprocess, sys, time
|
|
packet = Path(__file__).resolve().parent
|
|
-root = Path('/mnt/storage/scratch/rocko-r191-r3')
|
|
+root = Path('/mnt/storage/scratch/rocko-v502')
|
|
all_sites = json.loads((packet/'all-mutants.json').read_text())
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('ids', nargs='*')
|
|
@@ -104,11 +104,15 @@
|
|
'failing':re.findall(r'^\s*not ok \d+ - (.*)$',text,re.M),
|
|
'counts':{k:int(v) for k,v in re.findall(r'^# (tests|pass|fail|skipped|cancelled) (\d+)\s*$',text,re.M)}}
|
|
|
|
-def timeout_cause(site):
|
|
+def timeout_cause(site, control=None):
|
|
if site['id']=='SR08':
|
|
return ('runtimes.mjs:333 loops on now() <= deadline; stop-run.test.mjs:106-108 '
|
|
'gives the second host a fixed fake clock with a real sleep. Removing the join '
|
|
'branch enters the delivery loop without advancing that clock. Original log: TAP header only.')
|
|
+ if not control or control.get('passed') is not True:
|
|
+ return ('Mutated '+site['file']+' timed out after 90s; no passing same-file control '
|
|
+ 'exists in this invocation. Detection is not established. '
|
|
+ 'Detailed cause must be recorded before review.')
|
|
return ('Mutated '+site['file']+' timed out after 90s while the same whole test file '
|
|
'passed unmutated in this invocation. Detailed cause must be recorded before review.')
|
|
|
|
@@ -138,7 +142,7 @@
|
|
if not old or old['status']!='timeout' or old['test']!=args.control_file or old['failing']:
|
|
raise SystemExit('historical timeout does not match approved control')
|
|
if Path(old['log']).read_text().strip()!='TAP version 13': raise SystemExit('historical timeout log changed')
|
|
- adjudication = {**old,'status':'killed-by-timeout','cause':timeout_cause(site),'control':controls[args.control_file],
|
|
+ adjudication = {**old,'status':'killed-by-timeout','cause':timeout_cause(site, controls[args.control_file]),'control':controls[args.control_file],
|
|
'original_log_sha256':hashlib.sha256(Path(old['log']).read_bytes()).hexdigest()}
|
|
(packet/'SR08-timeout-adjudication.json').write_text(json.dumps(adjudication,indent=2)+'\n')
|
|
print('TIMEOUT_KILL SR08',adjudication['cause'],flush=True)
|
|
@@ -162,7 +166,7 @@
|
|
elif observed['failing'] and expected: status = 'assertion-killed'
|
|
else: status = 'invalid-failure'
|
|
row = {**{k:s[k] for k in ['id','file','test','pattern','check']},**observed,'status':status}
|
|
- if observed['timeout']: row.update(cause=timeout_cause(s),control=control)
|
|
+ if observed['timeout']: row.update(cause=timeout_cause(s, control),control=control)
|
|
results.append(row)
|
|
result_file.write_text(json.dumps(results,indent=2)+'\n')
|
|
print(status,flush=True)
|