A mesh seat's holder answers for the machine it runs on (hq ADR 0197) #42
@@ -299,7 +299,9 @@ func indexOn(conn *bus.Conn) (*index, error) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
for _, n := range m.On {
|
for _, n := range m.On {
|
||||||
if !announced[m.Module][n] {
|
// A holder of a seat held once for the mesh announces no machine — the seat is the mesh's,
|
||||||
|
// not a machine's — so what it announced without one answers for wherever it is assigned.
|
||||||
|
if !announced[m.Module][n] && !announced[m.Module][""] {
|
||||||
l.NotAnswering = append(l.NotAnswering, m.Module+" on "+n)
|
l.NotAnswering = append(l.NotAnswering, m.Module+" on "+n)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,11 +91,12 @@ func TestTheMeshsToolsAreFoundByAddress(t *testing.T) {
|
|||||||
serve("modules", func() any {
|
serve("modules", func() any {
|
||||||
return out(fmt.Sprintf(`[{"module":"alpha","on":["desk"],"tools":true},{"module":"beta","on":["desk"],"tools":true},`+
|
return out(fmt.Sprintf(`[{"module":"alpha","on":["desk"],"tools":true},{"module":"beta","on":["desk"],"tools":true},`+
|
||||||
`{"module":"gamma","on":%s,"tools":true},{"module":"delta","on":["desk"],"tools":false},`+
|
`{"module":"gamma","on":%s,"tools":true},{"module":"delta","on":["desk"],"tools":false},`+
|
||||||
`{"module":"epsilon","on":["bench"],"tools":true}]`, gammaOn.Load().(string)))
|
`{"module":"epsilon","on":["bench"],"tools":true},{"module":"mesh-controller","on":["bench"],"tools":true}]`, gammaOn.Load().(string)))
|
||||||
})
|
})
|
||||||
stopAnn, err := announce.Serve(controller, announce.Service{Name: "mesh-controller", ID: "bench"}, func() []announce.Endpoint {
|
stopAnn, err := announce.Serve(controller, announce.Service{Name: "mesh-controller", ID: "bench"}, func() []announce.Endpoint {
|
||||||
return []announce.Endpoint{{Kind: announce.KindSeat, Module: "mesh-controller", Seat: "mesh-controller", Scope: "mesh",
|
return []announce.Endpoint{{Kind: announce.KindSeat, Module: "mesh-controller", Seat: "mesh-controller", Scope: "mesh",
|
||||||
Tool: "nodes", Node: "bench", Description: "Every machine the mesh knows.", Schema: json.RawMessage(`{}`),
|
// As the live controller announces: a mesh seat's holder names no machine.
|
||||||
|
Tool: "nodes", Node: "", Description: "Every machine the mesh knows.", Schema: json.RawMessage(`{}`),
|
||||||
Subject: "mesh.seat.mesh-controller.tool.nodes"}}
|
Subject: "mesh.seat.mesh-controller.tool.nodes"}}
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -136,6 +137,9 @@ func TestTheMeshsToolsAreFoundByAddress(t *testing.T) {
|
|||||||
}
|
}
|
||||||
// Silence is named only where tools should have answered: epsilon declares tools on bench and
|
// Silence is named only where tools should have answered: epsilon declares tools on bench and
|
||||||
// nothing there announced it; delta declares none and is never a name.
|
// nothing there announced it; delta declares none and is never a name.
|
||||||
|
if strings.Contains(overview, "mesh-controller on bench") {
|
||||||
|
t.Errorf("a mesh seat's holder that announced no machine is called silent on its machine:\n%s", overview)
|
||||||
|
}
|
||||||
if !strings.Contains(overview, "epsilon on bench") || strings.Contains(overview, "delta") {
|
if !strings.Contains(overview, "epsilon on bench") || strings.Contains(overview, "delta") {
|
||||||
t.Errorf("not answering: %s", overview)
|
t.Errorf("not answering: %s", overview)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user