mesh/merge-gate head 9fad90ee890a merged into trunk b714eab995a5 — pass: builds mesh-delivery-builder → novox; no bus step; the change touches no module of…
mesh/repo-check head 9fad90ee890a merged into trunk b714eab995a5 — pass: its merge-check.sh passed
mesh/delivery delivered
mesh/delivery-group group fix/1886-builder-says-references merged: every member is merged
mesh/check failed: integration: github.com/novox/mesh-controller/internal/identity.TestACertificateChainsToTheMeshsOwnAuthority: authority_test.go:45:…
The references come from the build modules' own pushes, so a new builder beside an old build module writes none; saying it at start would send the controller to keys that fail not stored.
47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/nats-io/nats.go/jetstream"
|
|
)
|
|
|
|
type saysOf map[string]string
|
|
|
|
func (s saysOf) Put(_ context.Context, key string, value []byte) (uint64, error) {
|
|
s[key] = string(value)
|
|
return 1, nil
|
|
}
|
|
|
|
func (s saysOf) Delete(_ context.Context, key string, _ ...jetstream.KVDeleteOpt) error {
|
|
delete(s, key)
|
|
return nil
|
|
}
|
|
|
|
// 1886/AC5: a builder says, under its node, that it writes references only once every build module it calls answered
|
|
// one; stopped, it says nothing any more.
|
|
func TestTheBuilderSaysItWritesReferencesOnceEveryBuildModuleAnsweredOne(t *testing.T) {
|
|
s := saysOf{}
|
|
say := newSayer(t.Context(), s, "shanks", []string{"mesh-build-go", "mesh-build-node", "mesh-build-image"}, t.Logf)
|
|
say.Answered("mesh-build-go")
|
|
say.Answered("mesh-build-node")
|
|
if v, ok := s["shanks"]; ok {
|
|
t.Fatalf("said before the image build module answered a reference: %q", v)
|
|
}
|
|
say.Answered("mesh-build-image")
|
|
var v struct {
|
|
Writes []string `json:"writes"`
|
|
}
|
|
if err := json.Unmarshal([]byte(s["shanks"]), &v); err != nil || len(v.Writes) != 1 || v.Writes[0] != "references" {
|
|
t.Fatalf("the builder's say: %q %v", s["shanks"], err)
|
|
}
|
|
if err := say.unsay(t.Context()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if _, ok := s["shanks"]; ok {
|
|
t.Fatalf("the stopped builder still says: %v", s)
|
|
}
|
|
}
|