events: an e2e test — an emitted event reaches the audit trail over the mesh's broker #2
@@ -939,20 +939,24 @@ test("a route is a grant: a workload is reached by the name it asked for", {
|
|||||||
// fails more visibly than a stale grant, so it must not survive the module leaving.
|
// fails more visibly than a stale grant, so it must not survive the module leaving.
|
||||||
await mesh("unassign laptop storefront");
|
await mesh("unassign laptop storefront");
|
||||||
await mesh("push");
|
await mesh("push");
|
||||||
await new Promise((r) => setTimeout(r, 20_000));
|
|
||||||
|
|
||||||
// The provider has to have applied before the file means anything. **The mesh withdrawing a
|
// **Waited for, not slept through.** The mesh withdrawing a route and the machine acting on it
|
||||||
// route and the machine acting on it are different things**, and a test that reads the file
|
// are different things, and a fixed sleep between them tests whichever the clock happened to
|
||||||
// without checking the second reports the first wrongly whenever the machine is behind for any
|
// land on — this assertion passed twice and failed once on nothing but timing.
|
||||||
// unrelated reason.
|
//
|
||||||
const applied = await mesh("status");
|
// A machine that has not applied yet is also not a machine that failed, so `status` cannot
|
||||||
assert.doesNotMatch(applied, /anchor\s+(failed|refused)/,
|
// stand in for this: "not yet" and "never" look identical there, and only one of them is worth
|
||||||
`the provider did not apply, so what its file says is not what the mesh decided:\n${applied}`);
|
// failing over.
|
||||||
|
let after = "";
|
||||||
const after = await must("anchor", `cat /etc/frontdoor/routes.json`);
|
let withdrawn = false;
|
||||||
assert.doesNotMatch(after, /shop\.mesh\.test/,
|
for (let i = 0; i < 20 && !withdrawn; i++) {
|
||||||
|
after = await must("anchor", `cat /etc/frontdoor/routes.json`);
|
||||||
|
withdrawn = !after.includes("shop.mesh.test");
|
||||||
|
if (!withdrawn) await new Promise((r) => setTimeout(r, 3000));
|
||||||
|
}
|
||||||
|
assert.ok(withdrawn,
|
||||||
`the route outlived the module that asked for it:\n${after}\n\n` +
|
`the route outlived the module that asked for it:\n${after}\n\n` +
|
||||||
`what the mesh would send now:\n` +
|
`the machine did apply — this is what the mesh would send now:\n` +
|
||||||
`${(await on("anchor", `docker exec mesh-control /mesh-control plan anchor --files`)).out}`);
|
`${(await on("anchor", `docker exec mesh-control /mesh-control plan anchor --files`)).out}`);
|
||||||
|
|
||||||
let gone = false;
|
let gone = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user