From 2870daa2aa0e536aa4c53b5ef51d167fae11825a Mon Sep 17 00:00:00 2001 From: ScottW514 Date: Wed, 23 Sep 2026 16:59:11 -0400 Subject: [PATCH] logs.routing: forgeext is one of the loggers The extension host has had its own logger (log_forgeext_disk and log_forgeext_remote, a block in the rendered rules, and /data/log/forgefirm/forgeext/) since it joined the image, and GET /logs reports it. The test's list of loggers never gained it, so the first run of logs.routing on an image that carries forgeext failed on the bench reference (image 20260923084705): "loggers reported: [... 'forgeext' ...]". The list now names forgeext, so the test also holds its rules block, its effective levels, and its directory, and a stray program's line must not land in forgeext.log either. logs.routing PASS on the bench with this file mounted; forgetest's unit tests 452 OK. --- forgetest/forgetest/suite/logs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/forgetest/forgetest/suite/logs.py b/forgetest/forgetest/suite/logs.py index bd278fb..e3e98dc 100644 --- a/forgetest/forgetest/suite/logs.py +++ b/forgetest/forgetest/suite/logs.py @@ -169,7 +169,7 @@ _ROUTING_COVERS = [("forgectrl", "src/logs.*"), ("forgectrl", "src/fflog.*"), (" ("forgefirm-app", "forgefirm-app/ffmachine.py"), ("forgefirm-app", "forgefirm-app/gfcloud.py"), ("forgefirm-app", "forgefirm-app/gfhome.py")] -LOGGERS =("forgectrl", "grblhal", "gfcloud", "gfhome", "kernel", "system") +LOGGERS =("forgectrl", "grblhal", "gfcloud", "gfhome", "forgeext", "kernel", "system") _LINE_RE = re.compile(r"^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d(\.\d+)?[+-]\d\d:\d\d (?P[A-Za-z0-9_.-]+)\[(?P[-\d]+)\] " r"(?PEMERG|ALERT|CRIT|ERR|WARNING|NOTICE|INFO|DEBUG) (?P.*)$") _SEV_RANK = {"off": -1, "error": 3, "warning": 4, "notice": 5, "info": 6, "debug": 7} @@ -284,7 +284,7 @@ def routing(ctx): # a probe under another name must NOT leak into these files rc, out = hw.run(["logger", "-t", "forgetest-stray", "-p", "daemon.err", "%s stray" % nonce]) time.sleep(1.5) - for name in ("grblhal", "gfhome", "forgectrl"): + for name in ("grblhal", "gfhome", "forgectrl", "forgeext"): path = os.path.join(LOGS_ROOT, name, name + ".log") ctx.check(not any((nonce + " stray") in l for l in _tail_lines(path, 100)), "a stray program's line landed in %s", path)