Compose where a declaration was sent: secrets, credentials, acceptances, the hub's peers, adoption, assignments and the bus's user list (issue 1945, B2, B6)
Each act that changed what a node runs now writes that node's compositions, and its wants follow by the assigner's rules; a bus upgrade composes the bus's machines and answers the want the operator writes, since the assigner never moves the bus (ADR 0539 clauses 5, 7 and 15). A node-engine may ask its own backup holder before a data module moves.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
sdkdelivery "git.novox.be/novox/mesh-sdk/go/delivery"
|
||||
)
|
||||
|
||||
// 1945/AC7: a bus upgrade answers, for each machine, the want the operator writes: the assigner's bucket, the
|
||||
// machine's key for the bus module, and a want naming the bus's fingerprint and that machine's composition of it. It
|
||||
// sends nothing: nothing it calls publishes on a node's declaration subject (busWants composes no send at all).
|
||||
func TestABusUpgradeAnswersTheWantTheOperatorWrites(t *testing.T) {
|
||||
fp := sdkdelivery.SourcePrefix2 + strings.Repeat("b", 64)
|
||||
digests := map[string]string{"novox": "sha256:" + strings.Repeat("1", 64), "ace": "sha256:" + strings.Repeat("2", 64)}
|
||||
lines, err := busWants("nats", fp, []string{"ace", "novox"}, func(node string) (string, error) { return digests[node], nil })
|
||||
if err != nil || len(lines) != 2 {
|
||||
t.Fatalf("busWants = %v, %v", lines, err)
|
||||
}
|
||||
for i, node := range []string{"ace", "novox"} {
|
||||
parts := strings.SplitN(lines[i], " ", 3)
|
||||
if len(parts) != 3 || parts[0] != sdkdelivery.AssignerWantsBucket || parts[1] != "want."+node+".nats" {
|
||||
t.Fatalf("line %q", lines[i])
|
||||
}
|
||||
w, err := sdkdelivery.DecodeWant([]byte(parts[2]))
|
||||
if err != nil || w.FP != fp || w.Composed != digests[node] {
|
||||
t.Errorf("%s's want = %+v, %v", node, w, err)
|
||||
}
|
||||
}
|
||||
if _, err := busWants("nats", fp, []string{"ace"}, func(string) (string, error) { return "", nil }); err == nil {
|
||||
t.Errorf("a want naming no composition was answered")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user