[MG_Test, CI] (P6): the last two readers the role split left behind

build-linux-verify could not compile PipeStatsTest: RoleDerivedJsonDumpPathForTesting is DISAGGREGATED-only and the verify flavour is deliberately monolith. The case name stays registered and GTEST_SKIPs there, matching the PIPE_PUSH pattern, so ctest -N still matches between flavours.

runtime_mode_proof.py logs opened MOBILEGL_LOG_FILE_PATH as a file. After the split that name is a base and the sink writes <base>.client.log / <base>.server.log, so the inproc proof died on FileNotFoundError after a green lane. It now reads through split_log_paths' role helpers and names the paths it looked for when none exist.
This commit is contained in:
2026-09-22 04:40:03 -04:00
parent 35b3283bd9
commit 9043442454
2 changed files with 21 additions and 1 deletions
+7
View File
@@ -165,6 +165,12 @@ namespace {
// base name must not exist as a file, so a reader that was not updated gets ENOENT and says so
// rather than a file that looks like a complete run and is half of one.
TEST_F(PipeStatsTest, JsonDumpPathIsRoleDerivedAndTheBaseNameIsNeverOpened) {
#if !MOBILEGL_BUILD_DISAGGREGATED
// RoleDerivedJsonDumpPathForTesting is compiled only with two roles (gate G1: a monolith
// build has one and needs no derivation). The NAME stays registered in every build so
// ctest -N matches between flavours; the body only exists where the collision does.
GTEST_SKIP() << "role-derived dump paths only exist with two roles (MOBILEGL_BUILD_DISAGGREGATED=OFF)";
#else
using MobileGL::MG_Util::Debug::LogRole;
const String saved = MobileGL::MG_Config::Features.PipeStatsFile;
@@ -195,6 +201,7 @@ namespace {
"that is the trunc-versus-trunc collision this derivation exists to prevent";
MobileGL::MG_Config::Features.PipeStatsFile = saved;
#endif
}
TEST_F(PipeStatsTest, GateHitsAndMissesAreSeparateCounters) {
+14 -1
View File
@@ -70,8 +70,21 @@ def logs_proof(discovery, junit):
logs = helper.marker_log_paths(lane)
proof = {}
for name in sorted(RSP_CASES):
# P6 splits the library log per role: MOBILEGL_LOG_FILE_PATH is a BASE NAME and the
# files that exist are <base>.client.log / <base>.server.log. Reading the base directly
# is FileNotFoundError after the split - the same class of reader the role-split
# landing already fixed everywhere else.
path = Path(logs[name])
proof[name] = {'private_log': str(path), **inproc_log_proof(path.read_text(encoding='utf-8', errors='replace'))}
if not helper.any_role_file(path):
raise RuntimeError(
f'{name}: no role log under {path} '
f'(looked for {helper.role_paths(path)}); the library never opened the sink')
text = helper.read_role_logs(path)
proof[name] = {
'private_log': str(path),
'role_logs': helper.role_paths(path),
**inproc_log_proof(text),
}
return proof