- 新增 script/playable_soak.sh:先做 soak 配置/资源校验,无 --allow-gameplay 只校验不启动客户端;N(>=10) 次独立正常退出运行 + 墙钟 soak,失败即停止后续 运行并记 BLOCKED;写本批次 release-manifest.json 后聚合 - run_client_gate.sh:确认的故障代理对所有 suite 启动(共享场景的退出运行也经代理); soak 超时下限只约束 soak 客户端(validate_soak 增加 soak_client 参数) - 新增本地 127.0.0.1 故障代理、RSS 采样/内存判定、窗口/指标/流程模块及其测试 - forest_mob_render_test 输出 PASS/FAIL 标记,供 rendering_batch_test.sh 识别 - 新增 docs/FIRST-MAC-PLAYABLE-STATUS.md:如实记录 PASS/BLOCKED、已知问题与环境需求 - .gitignore 排除本地场景配置、凭据文件与运行输出 离线回归:rendering_batch_test.sh failures=0,playable_gate_test.sh PASS, node 夹具测试 PASS。未联网运行,未重建候选包。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ft3kXpNdLbKEfg5uDLfqVF
35 lines
2.3 KiB
Bash
35 lines
2.3 KiB
Bash
#!/usr/bin/env bash
|
|
# Repeatable, non-network regression sweep; logs retain failures and warnings.
|
|
set -uo pipefail
|
|
cd "$(dirname "$0")/.."
|
|
run_dir="$(pwd)/build/rendering/batch-$(date +%Y%m%d-%H%M%S)-$$"
|
|
mkdir -p "$run_dir"
|
|
failed=0
|
|
run_test() {
|
|
local mode="$1" test_script="$2" log="$run_dir/$1-${2%.gd}.log"
|
|
local options=(--path project)
|
|
if [ "$mode" = headless ]; then options+=(--headless); fi
|
|
"${GODOT:-godot}" "${options[@]}" --script "$test_script" --quit-after 1800 >"$log" 2>&1
|
|
local status=$?
|
|
if [ "$status" -ne 0 ] || grep -qE 'SCRIPT ERROR|Parse Error|^FAIL:|check\(s\) failed' "$log" || ! grep -qE 'PASS|failures=0' "$log"; then
|
|
echo "FAIL $mode $test_script (exit=$status): $log"
|
|
failed=$((failed + 1))
|
|
else
|
|
echo "PASS $mode $test_script"
|
|
fi
|
|
if grep -q 'leaked at exit' "$log"; then echo "WARN resource leak: $log"; fi
|
|
}
|
|
for test_script in animation_cache_test.gd target_effect_test.gd effect_space_test.gd effect_faces_test.gd motion_effect_anchor_test.gd mob_winding_test.gd water_reference_test.gd effect_texture_animation_test.gd dds_lifecycle_test.gd effect_color_operation_test.gd effect_color_test.gd effect_scale_test.gd effect_rotation_test.gd effect_surface_test.gd effect_emission_test.gd effect_render_regression_test.gd effect_playback_test.gd fx_test.gd skill_fx_test.gd player_skill_test.gd skill_test.gd damage_effect_test.gd combat_fx_test.gd app_flow_lifecycle_test.gd playable_harness_test.gd playable_adapter_test.gd playable_combat_test.gd gamescene_test.gd equip_model_test.gd equip_rules_test.gd race_motion_assembly_test.gd character_winding_test.gd mob_view_test.gd net_world_vis_test.gd forest_viewpoints_test.gd playable_metrics_test.gd; do
|
|
run_test headless "$test_script"
|
|
done
|
|
for test_script in effect_faces_test.gd effect_lie_test.gd effect_texture_animation_test.gd effect_color_operation_test.gd effect_surface_test.gd effect_emission_test.gd effect_rotation_test.gd model_render_test.gd gpu_lod_attachment_test.gd gpu_pose_bounds_test.gd forest_mob_render_test.gd; do
|
|
run_test metal "$test_script"
|
|
done
|
|
for mode in headless metal; do
|
|
MT_TREE_OUTPUT="$run_dir/native-trees-$mode" run_test "$mode" native_tree_test.gd
|
|
run_test "$mode" effect_random_rotation_test.gd
|
|
run_test "$mode" fly_target_bounds_test.gd
|
|
done
|
|
echo "BATCH failures=$failed logs=$run_dir"
|
|
test "$failed" -eq 0
|