mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 18:13:23 +09:00
[scripts] (P7): the pull-library control accepts the no-client-log sentence a pull build has produced since the per-role log rename
- retrace_pull_library_control.sh required run_trace_case.cmake's "never reported resolving it", the marker-search sentence. Since P6's one-log-per-role rename a pull library never reaches that search: it has one role and writes MOBILEGL_LOG_FILE_PATH unchanged (output/mobilegl.log, Log.h's pull arm of RoleLogPath), the runner reads output/mobilegl.client.log and stops one check earlier with "the run wrote no <client log>, so there is no evidence the transport ever resolved" - so the control's hole-2 check refused its own red and the step exited 1 on every pull-library run - measured on this tree with the real ctest, build-linux's pull library over build-split's frozen split library, SPLIT_TRANSPORT=inproc: control rc 1, "::error::the split retrace went red (ctest exit 8) ... never says the library did not resolve the transport", the runner's fatal at the no-client-log check. With this change the same run passes for its own reason on both inproc and spawn - EVIDENCE carries both sentences as grep -F's newline-separated patterns, so the evidence line the red-check perturbs is unchanged; both are the transport-identity assertion refusing the same library for the same reason, and neither is a loader failure, a missing fixture, a timeout or an SSIM drop - stub_ctest.sh gains retrace-evidence-nolog, the no-client-log fatal CMake-wrapped across lines the way the real one arrives; control_smoke_test.sh expects it to PASS (23/23); the red-check still reds "red without the transport-resolution message"
This commit is contained in:
@@ -116,6 +116,11 @@ expect FAILED "red without the transport-resolution message" -- run_retrace retr
|
||||
# The real thing - and note the stub emits it CMake-wrapped across two lines, which a line-oriented
|
||||
# grep for the literal sentence would miss.
|
||||
expect PASSED "run_trace_case.cmake's own sentence, wrapped" -- run_retrace retrace-evidence
|
||||
# The sentence a pull library ACTUALLY gets since P6's log rename: it wrote the unsuffixed
|
||||
# mobilegl.log, the runner reads mobilegl.client.log, and the no-log check fires before the marker
|
||||
# search. The control accepted only the marker sentence until B3's fix round 2, and was red on
|
||||
# every real pull-library run (measured on the B3 package tree).
|
||||
expect PASSED "the no-client-log sentence a pull library gets" -- run_retrace retrace-evidence-nolog
|
||||
# The pull library replaying green is the failure this control exists to catch.
|
||||
expect FAILED "a pull library passed the split retrace" -- run_retrace retrace-green
|
||||
|
||||
|
||||
@@ -49,9 +49,25 @@ PULL_LIBRARY="${PULL_LIBRARY:?PULL_LIBRARY must name the pull build libMobileGL.
|
||||
FROZEN_LIBRARY="${FROZEN_LIBRARY:?FROZEN_LIBRARY must name the path the cases have baked in}"
|
||||
mkdir -p "${CONTROL_TMPDIR}"
|
||||
|
||||
# run_trace_case.cmake's own sentence for "this library never resolved the transport". Anchored on
|
||||
# the distinctive clause rather than on the whole paragraph, which carries substituted paths.
|
||||
EVIDENCE='never reported resolving it'
|
||||
# run_trace_case.cmake's own sentences for "this library never resolved the transport", one per
|
||||
# line (grep -F takes its patterns newline-separated). Anchored on the distinctive clause rather
|
||||
# than on the whole paragraph, which carries substituted paths.
|
||||
#
|
||||
# TWO SENTENCES SINCE P6's LOG RENAME, and the second is the one a pull library actually gets.
|
||||
# A pull build has one log role and writes MOBILEGL_LOG_FILE_PATH unchanged - output/mobilegl.log
|
||||
# (MG_Util/Debug/Log.h, the pull arm of RoleLogPath) - while the disaggregated build's readers,
|
||||
# run_trace_case.cmake among them, read output/mobilegl.client.log. So the pull library never
|
||||
# reaches the marker search that says "never reported resolving it": the runner stops one check
|
||||
# earlier, at "the run wrote no <client log>, so there is no evidence the transport ever
|
||||
# resolved". Both are the transport-identity assertion refusing the same library for the same
|
||||
# reason (a pull build has no split log for the marker to be in); neither is a loader failure, a
|
||||
# missing fixture, a timeout or an SSIM drop, which are the reds hole 2 below exists to refuse.
|
||||
# MEASURED on the B3 package tree with the real ctest and the real pull library: with only the
|
||||
# first sentence here, the control exited 1 through hole 2 on every pull-library run - the step
|
||||
# had been red for no product reason since the rename. scripts/ci/testdata/stub_ctest.sh's
|
||||
# retrace-evidence-nolog mode reproduces the shape.
|
||||
EVIDENCE='never reported resolving it
|
||||
no evidence the transport ever resolved'
|
||||
|
||||
selector="^MobileGLTraceReplay\.${CASE}\.${BACKEND}$"
|
||||
|
||||
@@ -130,7 +146,7 @@ fi
|
||||
# indent, and a line-oriented grep for the literal finds nothing. That is not hypothetical - it is
|
||||
# the shape the stub reproduces in scripts/ci/testdata/stub_ctest.sh.
|
||||
if ! tr -s '[:space:]' ' ' < "${out}" | grep -qF "${EVIDENCE}"; then
|
||||
echo "::error::the split retrace went red (ctest exit ${control_rc}) with the pull library in place, but the failure never says the library did not resolve the transport - run_trace_case.cmake's \"${EVIDENCE}\" is absent from the output. A loader failure, a missing fixture, a timeout or an SSIM drop all land here, and none of them establishes that the transport-identity assertion is what caught the pull library. Only 'non-zero ctest' used to be checked (ID-46 finding 8b)."
|
||||
echo "::error::the split retrace went red (ctest exit ${control_rc}) with the pull library in place, but the failure never says the library did not resolve the transport - neither of run_trace_case.cmake's sentences (\"${EVIDENCE//$'\n'/\" / \"}\") is in the output. A loader failure, a missing fixture, a timeout or an SSIM drop all land here, and none of them establishes that the transport-identity assertion is what caught the pull library. Only 'non-zero ctest' used to be checked (ID-46 finding 8b)."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
+16
@@ -28,6 +28,10 @@
|
||||
# retrace-noselect `ctest -N` matches nothing; the run exits 8 the way --no-tests=error does
|
||||
# retrace-unrelated one match; the run fails without naming the transport
|
||||
# retrace-evidence one match; the run fails with run_trace_case.cmake's own sentence
|
||||
# retrace-evidence-nolog
|
||||
# one match; the run fails one check earlier, with the runner's "wrote no
|
||||
# <client log> ... no evidence the transport ever resolved" - the shape a
|
||||
# PULL library produces since P6's per-role log rename
|
||||
# retrace-green one match; the run PASSES
|
||||
#
|
||||
# EXIT GATE E2's DRAW-DROP CONTROL (scripts/ci/retrace_drop_draw_control.sh). The library's own
|
||||
@@ -291,6 +295,18 @@ case "${mode}" in
|
||||
echo ' "MOBILEGL_TRANSPORT=inproc - the MGPipe record stream".'
|
||||
exit 8
|
||||
;;
|
||||
retrace-evidence-nolog)
|
||||
# What a pull library gets since P6: it wrote output/mobilegl.log (one role, no suffix), the
|
||||
# runner reads output/mobilegl.client.log and stops at the no-log check BEFORE the marker
|
||||
# search. CMake-wrapped like the mode above, with the clause split across lines.
|
||||
echo "1/1 Test #1: MobileGLTraceReplay.OpenRA.DirectGLES ...***Failed"
|
||||
echo "CMake Error at run_trace_case.cmake:270 (message):"
|
||||
echo " MOBILEGL_TRANSPORT=inproc is set for OpenRA DirectGLES but the run wrote no"
|
||||
echo " OpenRA/DirectGLES/output/mobilegl.client.log, so there is no evidence the"
|
||||
echo " transport ever resolved. A split retrace with no library log cannot be"
|
||||
echo " counted as a split retrace."
|
||||
exit 8
|
||||
;;
|
||||
retrace-green)
|
||||
echo "100% tests passed, 0 tests failed out of 1"
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user