mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
[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:
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user