// Package examples checks the bundles shipped in this directory. // // **Nothing checked them before.** `substrate-first-node.lock` is what a machine becomes when // there is no mesh to ask — the one declaration applied with nothing to verify it against — and // it was edited by hand and read by nobody but a running host. package examples import ( "os" "sort" "strings" "testing" "github.com/novox/mesh-host/internal/declaration" ) func bundle(t *testing.T) *declaration.Declaration { t.Helper() raw, err := os.ReadFile("substrate-first-node.lock") if err != nil { t.Fatal(err) } d, err := declaration.ParseFileTrusted(raw) if err != nil { t.Fatalf("the bundle a first node applies does not parse: %v", err) } return d } // Defends novox/hq ADR 0028: the substrate supplies the control plane and nothing else. // // The object store was substrate for months on the strength of "it cannot grant itself a bucket", // which answers half the test. The control plane never needed one, and nothing noticed because // nothing counted what the bundle holds. func TestTheBundleCarriesTheSubstrateAndTheControlPlaneAndNothingElse(t *testing.T) { var images []string for _, r := range bundle(t).Resources { c, ok := r.(*declaration.Container) if !ok { continue } // The registry the images come from is the lab's, and is not what this asserts. name := c.Image if i := strings.LastIndex(name, "/"); i >= 0 { name = name[i+1:] } images = append(images, strings.SplitN(name, "@", 2)[0]) } sort.Strings(images) want := []string{"lavinmq", "mesh-control", "postgres"} if strings.Join(images, ",") != strings.Join(want, ",") { t.Fatalf("the bundle carries %v; expected exactly %v.\n\n"+ "Adding one is a change to what every first node becomes, and to ADR 0006's "+ "membership — take it deliberately, not by editing a lock file.", images, want) } } // The control plane is in the bundle, and the design overlooked it once by reasoning about // substrate services rather than counting containers (novox/hq 03-DESIGN/01-to-be/07). func TestTheControlPlaneIsCarriedToo(t *testing.T) { for _, r := range bundle(t).Resources { if c, ok := r.(*declaration.Container); ok && strings.Contains(c.Image, "mesh-control") { return } } t.Fatal("nothing in the bundle starts the control plane, so the machine would raise a " + "substrate and stop") }