Run the served rotation's verb on the bus chain the controller keeps, as its child process does (issue 1945)

This commit is contained in:
2026-10-24 21:48:30 +02:00
parent 53d9c4de19
commit 6e4bca7fce
2 changed files with 11 additions and 0 deletions
@@ -460,6 +460,9 @@ func TestServedARotationRewritesOnlyTheCompositionsThatUseIt(t *testing.T) {
before := map[string]map[string]uint64{"anchor": m.revisions(t, "anchor"), "laptop": m.revisions(t, "laptop")}
holders, _ := m.open.inventory.HoldersOf(t.Context(), "postgres-database", "")
var waited uint64
// The verb runs here as its child process runs it: its inventory takes the chain from the bus the served controller keeps it
// on (the registrations and assignments are there), not the one in memory the fixture's store was made with.
inventory.OnTheBusChainForTest(t)
said, err := capturedOutput(func() error {
if err := rotateCommand(t.Context(), []string{"postgres-database"}); err != nil {
return err
+8
View File
@@ -208,3 +208,11 @@ func (i *Inventory) PlanValuesForTest(t *testing.T) map[string][]byte {
}
return out
}
// OnTheBusChainForTest makes an inventory opened from now on on the test's store take the chain from its opener (the bus), not
// the chain in memory the test made for the store: for a test that runs a verb in this process as the controller's child
// process runs it, over the bus the serving controller keeps the chain on.
func OnTheBusChainForTest(t *testing.T) {
t.Helper()
testChains.Delete(os.Getenv(store.Variable(Name)))
}