diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go index 9c5e1c07..51ec80bb 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/integration_test.go @@ -952,7 +952,7 @@ func (s bedStore) history(string, string) ([]stdio.StateRevision, error) { retur func TestAProposalIsAnsweredApprovedAndWritten(t *testing.T) { b := startBed(t, "") if _, err := b.js.CreateStream(b.ctx, jetstream.StreamConfig{Name: "MOD_" + delivery.AssignerModule + "_placement", - Subjects: []string{process.ModuleStreamSubject(delivery.AssignerModule, ">")}}); err != nil { + Subjects: placementSubjects()}); err != nil { // the seat's four events: the views family has a stream of its own t.Fatal(err) } heard := make(chan delivery.PlacementEvent, 16) @@ -1257,3 +1257,12 @@ func (s bedSource) Get(key string) (*views.Entry, bool, error) { } return &views.Entry{Value: e.Value(), Revision: e.Revision()}, true, nil } + +// placementSubjects are the subjects of the seat's four events on the assigner's stream placement. +func placementSubjects() []string { + var out []string + for _, e := range delivery.PlacementEvents { + out = append(out, process.ModuleStreamSubject(delivery.AssignerModule, e)) + } + return out +} diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go index 76c6a818..6cac6878 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go @@ -29,6 +29,7 @@ import ( "git.novox.be/novox/mesh-sdk/go/provisions" "git.novox.be/novox/mesh-delivery/sdk/graph" + "git.novox.be/novox/mesh-delivery/sdk/views" "mesh-delivery-assigner/internal/assign" ) @@ -99,6 +100,7 @@ var keptStates = []announce.State{ {Name: health.FindingsState, Readable: true}, {Name: delivery.AssignerPoliciesState, Readable: true}, {Name: delivery.SeatHoldersState, Readable: true}, + {Name: views.MarksState, Readable: true}, // what its views family said each state up to (views.go) } // buckets is every bucket the assigner opened, by name. diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main_test.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main_test.go index 9c94e403..89aee0ce 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main_test.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main_test.go @@ -67,7 +67,7 @@ func TestOpensWhatItsManifestNames(t *testing.T) { for _, s := range keptStates { kept = append(kept, m.Module+"_"+s.Name) } - if got, want := slices.Sorted(slices.Values(kept)), slices.Sorted(slices.Values(ownBuckets)); !reflect.DeepEqual(got, want) { + if got, want := slices.Sorted(slices.Values(kept)), slices.Sorted(slices.Values(append(slices.Clone(ownBuckets), marksBucket))); !reflect.DeepEqual(got, want) { t.Errorf("the program announces %v, keeps %v", got, want) } // ADR 0546: whatever keeps the puts' bucket from opening (not there, not granted, no answer in time), the assigner opens