Check the provider applied before reading what its file says

The mesh withdrawing a route and the machine acting on it are different things,
and a test that reads the file without checking the second reports the first
wrongly whenever the machine is behind for any unrelated reason. On failure it
now also prints what the mesh would send now, which is what separates 'the mesh
still thinks this contributes' from 'the machine never applied'.
This commit is contained in:
2026-08-31 03:34:51 +02:00
parent 56de227673
commit eaa7cdea79
+11 -1
View File
@@ -941,9 +941,19 @@ test("a route is a grant: a workload is reached by the name it asked for", {
await mesh("push"); await mesh("push");
await new Promise((r) => setTimeout(r, 20_000)); await new Promise((r) => setTimeout(r, 20_000));
// The provider has to have applied before the file means anything. **The mesh withdrawing a
// route and the machine acting on it are different things**, and a test that reads the file
// without checking the second reports the first wrongly whenever the machine is behind for any
// unrelated reason.
const applied = await mesh("status");
assert.doesNotMatch(applied, /anchor\s+(failed|refused)/,
`the provider did not apply, so what its file says is not what the mesh decided:\n${applied}`);
const after = await must("anchor", `cat /etc/frontdoor/routes.json`); const after = await must("anchor", `cat /etc/frontdoor/routes.json`);
assert.doesNotMatch(after, /shop\.mesh\.test/, assert.doesNotMatch(after, /shop\.mesh\.test/,
`the route outlived the module that asked for it:\n${after}`); `the route outlived the module that asked for it:\n${after}\n\n` +
`what the mesh would send now:\n` +
`${(await on("anchor", `docker exec mesh-control /mesh-control plan anchor --files`)).out}`);
let gone = false; let gone = false;
for (let i = 0; i < 15 && !gone; i++) { for (let i = 0; i < 15 && !gone; i++) {