Summary
tests/lim/testdata/info_test.txt (the info_test step in the smoke suite) times out at the 5-minute -timewait waiting for the pattern
InfoContent.dinfo.systemAdapter.status.ports.ifname:.*eth[01].*
…even though the device is healthy, posting info messages, and those messages contain exactly that data.
This test passed in <5 s on April 22 against the same eve-api/go proto version (v0.0.0-20260114160322-5feda2767927 in eden, v0.0.0-20260420100351-253db6a73b76 in pillar). It now hangs and times out against the same proto versions, in a fresh smoke run.
Repro
Standard smoke run against a COVER=y EVE built from lf-edge/eve master + the test-coverage PRs (#5901, #5914, #5915, #5922, #5923, #5925), with eden master + #1152, #1162, #1163 (ctrl_encrypt_cert_change), #1164, #1165 (nim-eden-tests), #1161 merged. (None of these touch the systemAdapter info-publish path.)
Adam: locally-built lfedge/adam:0.0.65-pr152 (lf-edge/adam#152 merged on top of master).
Diagnostics
EVE-side: 7 info POSTs to adam during the 5-min test window. 26 of those across the run are ZiDevice messages, every one of them contains dinfo.systemAdapter.
Decoded JSON of a stored ZiDevice info entry from redis (xrange INFO_EVE_<uuid>):
"systemAdapter": {
"status": [
{
"version": 1,
"key": "lastresort",
"lastSucceeded": "2026-05-10T07:48:27...",
"ports": [
{ "ifname": "eth0", "name": "eth0", "isMgmt": true, ... },
{ "ifname": "eth1", "name": "eth1", "isMgmt": true, ... }
]
}
]
}
So dinfo.systemAdapter.status[0].ports[0].ifname == "eth0" and ports[1].ifname == "eth1" — exactly what the test pattern asks for.
lim.test log:
=== RUN TestInfo
lim_test.go:274: time: 2026-05-10T09:53:44+02:00 out: Wait for info of ... number=1 timewait=5m0s
testContext.go:291: WaitForProc terminated by timeout 5m0s
testContext.go:274: WaitForProcWithErrorCallback terminated by timeout 5m0s
--- FAIL: TestInfo (300.00s)
Hypotheses
- The proto-path resolver in
lim.test (or one of its einfo helpers) treats systemAdapter as a repeated message (i.e. expects dinfo.systemAdapter[].status...) when the proto actually wraps it as a singular message containing a repeated status field. The wrapper would explain why the path no longer resolves even though the data is present.
- Alternatively, a recent change to
einfo.InfoNew (or wherever the live-stream watcher demultiplexes incoming entries from adam's redis stream) may be skipping ZiDevice messages or applying a stricter type check.
Both other lim.test tests in smoke (log_test, ssh, eve_restart) passed normally, so basic adam ↔ lim.test ↔ controller wiring is fine — the regression appears specific to dinfo.systemAdapter path resolution / matching.
Workaround
For coverage runs, the failure is cosmetic: the rest of smoke and downstream suites continue without it. Treating it as a known flake until it's diagnosed.
Asks
- Identify whether the regression lives in the proto-path resolver or in
einfo.InfoNew (or in the walker that decides which paths inside systemAdapter are addressable).
- Add a unit test for the resolver against a recorded
ZiDevice fixture so future regressions on this path don't bisect-bisect through 5-minute timeouts.
Summary
tests/lim/testdata/info_test.txt(theinfo_teststep in the smoke suite) times out at the 5-minute-timewaitwaiting for the pattern…even though the device is healthy, posting info messages, and those messages contain exactly that data.
This test passed in <5 s on April 22 against the same
eve-api/goproto version (v0.0.0-20260114160322-5feda2767927in eden,v0.0.0-20260420100351-253db6a73b76in pillar). It now hangs and times out against the same proto versions, in a fresh smoke run.Repro
Standard smoke run against a
COVER=yEVE built fromlf-edge/evemaster + the test-coverage PRs (#5901, #5914, #5915, #5922, #5923, #5925), with eden master + #1152, #1162, #1163 (ctrl_encrypt_cert_change), #1164, #1165 (nim-eden-tests), #1161 merged. (None of these touch the systemAdapter info-publish path.)Adam: locally-built
lfedge/adam:0.0.65-pr152(lf-edge/adam#152 merged on top of master).Diagnostics
EVE-side: 7 info POSTs to adam during the 5-min test window. 26 of those across the run are
ZiDevicemessages, every one of them containsdinfo.systemAdapter.Decoded JSON of a stored
ZiDeviceinfo entry from redis (xrange INFO_EVE_<uuid>):So
dinfo.systemAdapter.status[0].ports[0].ifname == "eth0"andports[1].ifname == "eth1"— exactly what the test pattern asks for.lim.testlog:Hypotheses
lim.test(or one of itseinfohelpers) treatssystemAdapteras a repeated message (i.e. expectsdinfo.systemAdapter[].status...) when the proto actually wraps it as a singular message containing a repeatedstatusfield. The wrapper would explain why the path no longer resolves even though the data is present.einfo.InfoNew(or wherever the live-stream watcher demultiplexes incoming entries from adam's redis stream) may be skippingZiDevicemessages or applying a stricter type check.Both other lim.test tests in smoke (
log_test,ssh,eve_restart) passed normally, so basic adam ↔ lim.test ↔ controller wiring is fine — the regression appears specific todinfo.systemAdapterpath resolution / matching.Workaround
For coverage runs, the failure is cosmetic: the rest of smoke and downstream suites continue without it. Treating it as a known flake until it's diagnosed.
Asks
einfo.InfoNew(or in the walker that decides which paths insidesystemAdapterare addressable).ZiDevicefixture so future regressions on this path don't bisect-bisect through 5-minute timeouts.