Assigning networking is not being on the network
N1 assigned the module and stopped, and the mesh wrote a names file with no names in it. That is correct behaviour, not a bug: a node with no address on the network has no name, because a name resolving to nothing is worse than no name — a connection to an address that does not answer hangs, where a name that does not resolve fails at once and says so. The missing act is placement. Assigning installs the module that answers how machines reach each other; placing says where this machine is on the resulting network. The four-machine test did both and this one did neither, which is how the distinction stayed invisible. Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
This commit is contained in:
+35
-21
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"scenario": "one-node-mesh",
|
||||
"established": 14,
|
||||
"of": 18,
|
||||
"established": 11,
|
||||
"of": 20,
|
||||
"steps": [
|
||||
{
|
||||
"code": "R1",
|
||||
@@ -56,71 +56,85 @@
|
||||
"code": "P1",
|
||||
"title": "the mesh builds the shared base from source",
|
||||
"status": "pass",
|
||||
"seconds": 84,
|
||||
"seconds": 78,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "P2",
|
||||
"title": "the mesh builds and runs a store of its own",
|
||||
"status": "pass",
|
||||
"seconds": 40,
|
||||
"seconds": 50,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "P3",
|
||||
"title": "the mesh builds and runs its own catalogue",
|
||||
"status": "pass",
|
||||
"seconds": 34,
|
||||
"seconds": 25,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "P4",
|
||||
"title": "the mesh rebuilds its own control plane from source",
|
||||
"status": "pass",
|
||||
"seconds": 36,
|
||||
"seconds": 37,
|
||||
"why": ""
|
||||
},
|
||||
{
|
||||
"code": "N1",
|
||||
"title": "the mesh puts itself on a private network, and its machine has a name",
|
||||
"status": "fail",
|
||||
"seconds": 125,
|
||||
"why": "networking is assigned and no machine has a name:\n# Generated by the mesh. Do not edit — this file is replaced whenever a node\n# joins or leaves, and an edit would survive until then and vanish.\n\n127.0.0.1\tlocalhost\n::1\t\tlocalhost ip6-localhost ip6-loopback\n127.0.1.1\tanchor\n"
|
||||
},
|
||||
{
|
||||
"code": "U1",
|
||||
"title": "the mesh builds a module standing on that base",
|
||||
"status": "pass",
|
||||
"seconds": 14,
|
||||
"why": ""
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — N1 (the mesh puts itself on a private network, and its machine has a name) did not succeed"
|
||||
},
|
||||
{
|
||||
"code": "U2",
|
||||
"title": "the mesh runs a broker for that module to talk to",
|
||||
"status": "pass",
|
||||
"seconds": 24,
|
||||
"why": ""
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — U1 (the mesh builds a module standing on that base) did not succeed"
|
||||
},
|
||||
{
|
||||
"code": "U3",
|
||||
"title": "the anchor runs the module the mesh built",
|
||||
"status": "pass",
|
||||
"seconds": 6,
|
||||
"why": ""
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — U2 (the mesh runs a broker for that module to talk to) did not succeed"
|
||||
},
|
||||
{
|
||||
"code": "V1",
|
||||
"title": "the mesh can describe itself, and what it says is true",
|
||||
"status": "fail",
|
||||
"seconds": 2,
|
||||
"why": "the catalogue does not know about mesh-tools:\n{\"modules\":[{\"module\":\"amqp-ping\",\"commit\":\"af1e3afa495bac11e74c2d76cb2cf7a78167f2f6\",\"repository\":\"https://git.novox.be/novox/mesh-catalog.git\",\"path\":\"modules/amqp-ping\"},{\"module\":\"lavinmq\",\"commit\":\"af1e3afa495bac11e74c2d76cb2cf7a78167f2f6\",\"repository\":\"https://git.novox.be/novox/mesh-catalog.git\",\"path\":\"modules/lavinmq\"},{\"module\":\"mesh-control\",\"commit\":\"5062c36fc9efe159aa9706c0ca2c873351ef1ce0\",\"repository\":\"https://git.novox.be/novox/mesh-control.git\",\"path\":\"\"}]}\n"
|
||||
"title": "the control plane can describe the mesh, and what it says is true",
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — U3 (the anchor runs the module the mesh built) did not succeed"
|
||||
},
|
||||
{
|
||||
"code": "V2",
|
||||
"title": "the catalogue holds every module this mesh built",
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — V1 (the control plane can describe the mesh, and what it says is true) did not succeed"
|
||||
},
|
||||
{
|
||||
"code": "V3",
|
||||
"title": "the machine's networking is what the modules asked for",
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — V1 (the mesh can describe itself, and what it says is true) did not succeed"
|
||||
"why": "not attempted — V1 (the control plane can describe the mesh, and what it says is true) did not succeed"
|
||||
},
|
||||
{
|
||||
"code": "E1",
|
||||
"title": "a change to a module's source reaches the machine on its own",
|
||||
"status": "skip",
|
||||
"seconds": 0,
|
||||
"why": "not attempted — V2 (the machine's networking is what the modules asked for) did not succeed"
|
||||
"why": "not attempted — V3 (the machine's networking is what the modules asked for) did not succeed"
|
||||
},
|
||||
{
|
||||
"code": "E2",
|
||||
|
||||
@@ -600,6 +600,13 @@ before(async () => {
|
||||
// want.
|
||||
await step("N1", NETWORKED, CONTROL_REBUILT, async () => {
|
||||
await mesh(`assign ${CONTROL} ${NETWORK_MODULE}`);
|
||||
// **Assigned is not placed, and they are two different acts.** Assigning installs the module
|
||||
// that answers "how do machines reach each other"; placing says where THIS machine is on the
|
||||
// resulting network. Without the second the module runs and writes a names file with no names
|
||||
// in it — deliberately, because "a node with no address on the network has no name here", and a
|
||||
// name resolving to nothing is worse than no name: a connection to an address that does not
|
||||
// answer hangs, where a name that does not resolve fails at once and says so.
|
||||
await mesh(`overlay place ${CONTROL} --hub --endpoint ${ANCHOR}:51820 --site hosting`);
|
||||
await mesh(`push ${CONTROL}`, 600_000);
|
||||
// What it was assigned for. A machine on a private network with no name on it has had the
|
||||
// harder half done and the visible half not.
|
||||
|
||||
Reference in New Issue
Block a user