mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-24 02:31:13 +08:00
oxide_test262: 监督模式旁路失败行跨子进程重启保留 + 窗口结束归档——超时/崩溃杀子进程重启时原会删掉旁路 .fails 文件,此前子进程的全部失败记录丢失,收尾 fail_records 只剩末段(全量单窗口跑实测 9374 失败仅存 6276 条),逐文件回归差分被静默破坏;现重启只重开心跳文件、旁路失败行追加保留(写序心跳先行、旁路后追加,跨重启同一测试至多重录一条,消费侧按下标去重);窗口结束旁路文件改名归档 .fails.done 而非删除,终态落盘供逐文件差分(统计已入父进程内存,归档件纯分析用途)。单测 33/0,小集合复跑记录数与失败计数逐一吻合
This commit is contained in:
@@ -1136,9 +1136,12 @@ fn supervise_window(
|
||||
};
|
||||
|
||||
while cur < wend {
|
||||
// 心跳文件每子进程重开;旁路失败行跨重启保留(追加而非清空):
|
||||
// 超时/崩溃重启若删旁路会丢掉此前子进程的全部失败记录,收尾差分
|
||||
// 只剩末段。跨重启同一测试最多重复一条(心跳先写、旁路后追加的写序
|
||||
// 决定重跑测试至多重录一次),消费侧按下标去重即可。
|
||||
let _ = std::fs::remove_file(&hb_path);
|
||||
let _ = std::fs::remove_file(format!("{}.tmp", hb_path.display()));
|
||||
let _ = std::fs::remove_file(hb_path.with_extension("fails"));
|
||||
let max_tests = wend - cur;
|
||||
|
||||
let mut child = match Command::new(exe)
|
||||
@@ -1252,7 +1255,9 @@ fn supervise_window(
|
||||
|
||||
let _ = std::fs::remove_file(&hb_path);
|
||||
let _ = std::fs::remove_file(format!("{}.tmp", hb_path.display()));
|
||||
let _ = std::fs::remove_file(hb_path.with_extension("fails"));
|
||||
// 旁路失败行归档而非删除:统计已由心跳合并入父进程,此文件是收尾逐文件
|
||||
// 差分的终态依据(删除即永久丢记录)。
|
||||
let _ = std::fs::rename(&hb_path.with_extension("fails"), &hb_path.with_extension("fails.done"));
|
||||
stats
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user