package link import ( "strings" "testing" ) // **The old bus announces a build under both names, and that is not belt-and-braces.** // // A build's outcome belongs to the role now, so a catalogue built from the current manifests listens // for the role's name — and a catalogue already running listens for the module's, because that is what // it was told when it was installed. A rename on a live bus needs publisher and subscriber to change // together, which a deployment cannot promise: one arrives first, and in that window the module graph // silently stops being updated. // // Caught by asking what merging this would do to the mesh that is actually running, which is the only // place the question could have been asked — the tests were green and both buses were self-consistent. func TestTheOldBusAnnouncesABuildUnderBothNames(t *testing.T) { // The routing key a catalogue installed before the change is bound to. if KeyModuleBuilt != "module.builder.built" { t.Fatalf("the module's own name is %q; a catalogue already running is bound to the old one", KeyModuleBuilt) } // And the local name a catalogue built from the current manifests declares, which the old bus's // client turns into `module..built`. if KeyRoleBuilt != "built" { t.Fatalf("the role's event is %q, and a holder emits its verbs bare", KeyRoleBuilt) } if TheBuildMachine != "mesh-build-machine" { t.Fatalf("the role is %q", TheBuildMachine) } // The two must differ, or one publish would serve both and this doubling would be pointless. if strings.HasSuffix(KeyModuleBuilt, "."+TheBuildMachine+"."+KeyRoleBuilt) { t.Fatal("the two names are the same, so nothing was renamed and this is dead weight") } }