After the build role moved to node-build-agent, nothing would hold it until build-agent is registered — and registering build-agent needs a build outcome that only the running builder could produce, bound as it was to the old seat by name. One binary, two roles: the seat a machine serves is the first its credential claims, as the mesh writes the claims beside the credential it issues (ADR 0159); the old builder keeps draining mesh-build-machine, a build-agent takes node-build-agent, and what each says about a build goes out as that seat's events, so an outcome is heard where the asker of that seat listens. A credential naming no claim serves the current role.
33 lines
1.5 KiB
Go
33 lines
1.5 KiB
Go
package link
|
|
|
|
import "testing"
|
|
|
|
// A build machine serves the seat its credential claims (novox/hq ADR 0190 handover): the old
|
|
// `builder` keeps the old role, a `build-agent` takes the new, from one binary and no flag.
|
|
func TestABuildMachineServesTheSeatItsCredentialClaims(t *testing.T) {
|
|
if got := BuildSeatClaimed([]string{"mesh-build-machine"}); got != "mesh-build-machine" {
|
|
t.Errorf("a credential claiming the old role serves %q", got)
|
|
}
|
|
if got := BuildSeatClaimed([]string{"node-build-agent"}); got != TheBuildMachine {
|
|
t.Errorf("a credential claiming the new role serves %q", got)
|
|
}
|
|
if got := BuildSeatClaimed(nil); got != TheBuildMachine {
|
|
t.Errorf("a credential claiming nothing serves %q, want the current role", got)
|
|
}
|
|
if got := BuildSeatClaimed([]string{"", "node-build-agent"}); got != TheBuildMachine {
|
|
t.Errorf("an empty claim is skipped; got %q", got)
|
|
}
|
|
}
|
|
|
|
// What a machine says about a build is the event of the seat it took the build from, so an outcome
|
|
// is heard where the asker of that seat listens.
|
|
func TestABuildsEventsAreItsSeats(t *testing.T) {
|
|
if BuildOutcomeOf(TheBuildMachineBefore) != "mesh.seat.mesh-build-machine.event.built" {
|
|
t.Error(BuildOutcomeOf(TheBuildMachineBefore))
|
|
}
|
|
if BuildWorkOf(TheBuildMachine) != BuildWork() || BuildOutcomeOf(TheBuildMachine) != BuildOutcome() ||
|
|
BuildStartedOf(TheBuildMachine) != BuildStarted() || BuildLogOf(TheBuildMachine, "b1") != BuildLog("b1") {
|
|
t.Error("the no-argument forms must name the current role")
|
|
}
|
|
}
|