From ccfdaec5ed2da7134c863754dddbb8a97b74c500 Mon Sep 17 00:00:00 2001 From: jochen Date: Thu, 12 Nov 2026 22:20:32 +0100 Subject: [PATCH] Round 2 T2, T5: mesh-wireguard and route-proxy end G with their merge-base test counts; roles in the test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The two tests G added fold into existing ones as subtests (design 47 G §626); route-proxy's provider test names a role, not a node (T5). Builds: design 47 G §626, A-306; review round 2 findings T2, T5 Claude-Session: https://claude.ai/code/session_01NcbgfGKaxw984XyAPfLm4h --- .../mesh-wireguard/go/overlay/seat_test.go | 53 +++++++++---------- .../cmd/route-provider/provider_test.go | 8 +-- .../route-proxy/cmd/route-proxy/names_test.go | 35 ++++++------ 3 files changed, 47 insertions(+), 49 deletions(-) diff --git a/modules/mesh-wireguard/go/overlay/seat_test.go b/modules/mesh-wireguard/go/overlay/seat_test.go index ce4b39e..cee4cd1 100644 --- a/modules/mesh-wireguard/go/overlay/seat_test.go +++ b/modules/mesh-wireguard/go/overlay/seat_test.go @@ -73,34 +73,33 @@ func TestEveryProvisionTheModuleOffersSaysItsCredentialForm(t *testing.T) { t.Errorf("%s offers credential %+v: the form is none", o.Name, o.Credential) } } -} - -// Design 47 G §411, §339, §341: no artifact of this repository's manifests keeps a `series` (one version per module), and -// the generated TypeScript contract is `index.js` with its `index.d.ts`, with no source for a build of its own. -func TestNoArtifactKeepsASeriesAndTheTypeScriptContractIsJavaScript(t *testing.T) { - for _, path := range []string{"../../module.json", "../../../mesh-connectivity-contracts/module.json"} { - file, err := os.ReadFile(path) - if err != nil { - t.Fatal(err) - } - var m struct { - Build struct { - Artifacts []map[string]any `json:"artifacts"` - } `json:"build"` - } - if err := json.Unmarshal(file, &m); err != nil { - t.Fatal(err) - } - for _, a := range m.Build.Artifacts { - if _, ok := a["series"]; ok { - t.Errorf("%s: the artifact %v keeps a series, which the manifest validator refuses (§411)", path, a["name"]) + // Design 47 G §411, §339, §341: no artifact of this repository's manifests keeps a `series` (one version per module), and + // the generated TypeScript contract is `index.js` with its `index.d.ts`, with no source for a build of its own. + t.Run("NoArtifactKeepsASeriesAndTheTypeScriptContractIsJavaScript", func(t *testing.T) { + for _, path := range []string{"../../module.json", "../../../mesh-connectivity-contracts/module.json"} { + file, err := os.ReadFile(path) + if err != nil { + t.Fatal(err) + } + var m struct { + Build struct { + Artifacts []map[string]any `json:"artifacts"` + } `json:"build"` + } + if err := json.Unmarshal(file, &m); err != nil { + t.Fatal(err) + } + for _, a := range m.Build.Artifacts { + if _, ok := a["series"]; ok { + t.Errorf("%s: the artifact %v keeps a series, which the manifest validator refuses (§411)", path, a["name"]) + } } } - } - dir := "../../../mesh-connectivity-contracts/ts/seats/theprivatenetwork/" - for file, want := range map[string]bool{"index.js": true, "index.d.ts": true, "src/index.ts": false, "tsconfig.json": false} { - if _, err := os.Stat(dir + file); (err == nil) != want { - t.Errorf("%s: present %v, want %v (§341)", file, err == nil, want) + dir := "../../../mesh-connectivity-contracts/ts/seats/theprivatenetwork/" + for file, want := range map[string]bool{"index.js": true, "index.d.ts": true, "src/index.ts": false, "tsconfig.json": false} { + if _, err := os.Stat(dir + file); (err == nil) != want { + t.Errorf("%s: present %v, want %v (§341)", file, err == nil, want) + } } - } + }) } diff --git a/modules/route-proxy/cmd/route-provider/provider_test.go b/modules/route-proxy/cmd/route-provider/provider_test.go index 6a06d2f..7fb4012 100644 --- a/modules/route-proxy/cmd/route-provider/provider_test.go +++ b/modules/route-proxy/cmd/route-provider/provider_test.go @@ -57,8 +57,8 @@ func TestAConsumerOfARouteIsToldItsNamesFromItsPlanEntry(t *testing.T) { "grafana": {"name": "grafana.example.org"}, } { plan, err := meshprovisionerclient.EncodePlan(meshprovisionerclient.Plan{Node: "g14", Module: module, Plan: catalogue.Plan{ - Provisions: []catalogue.PlanProvision{{Provision: ProvisionName, Provider: "novox", ProviderModule: ModuleName, - At: "10.7.0.1", From: "novox", As: "mesh_g14_" + module, Names: names}}}}) + Provisions: []catalogue.PlanProvision{{Provision: ProvisionName, Provider: "anchor", ProviderModule: ModuleName, + At: "10.7.0.1", From: "anchor", As: "mesh_g14_" + module, Names: names}}}}) if err != nil { t.Fatal(err) } @@ -67,7 +67,7 @@ func TestAConsumerOfARouteIsToldItsNamesFromItsPlanEntry(t *testing.T) { t.Fatal(err) } asked, err := json.Marshal(meshprovisionerclient.Provision{V: meshprovisionerclient.Version, Provision: ProvisionName, - Consumer: meshprovisionerclient.End{Node: "g14", Module: module}, Provider: meshprovisionerclient.End{Node: "novox", Module: ModuleName}, + Consumer: meshprovisionerclient.End{Node: "g14", Module: module}, Provider: meshprovisionerclient.End{Node: "anchor", Module: ModuleName}, State: meshprovisionerclient.Asked}) if err != nil { t.Fatal(err) @@ -76,7 +76,7 @@ func TestAConsumerOfARouteIsToldItsNamesFromItsPlanEntry(t *testing.T) { t.Fatal(err) } } - p := newProvider("novox", theProvisioner, bus, t.Logf) + p := newProvider("anchor", theProvisioner, bus, t.Logf) out, err := p.Pass(context.Background()) if err != nil { t.Fatal(err) diff --git a/modules/route-proxy/cmd/route-proxy/names_test.go b/modules/route-proxy/cmd/route-proxy/names_test.go index 285fa06..e02bb0d 100644 --- a/modules/route-proxy/cmd/route-proxy/names_test.go +++ b/modules/route-proxy/cmd/route-proxy/names_test.go @@ -30,24 +30,23 @@ func TestTheReadIsTheManifests(t *testing.T) { if !slices.Contains(m.Invokes, "seat:mesh-module-assigner.assignments") { t.Errorf("the proxy asks who holds a seat, its manifest invokes %v", m.Invokes) } -} - -// A read in the seat form is the bus's `.` of the holder on record, whoever it is. -func TestHolderReadResolvesTheSeat(t *testing.T) { - call := func(holder string) func(string, any) (json.RawMessage, error) { - return func(string, any) (json.RawMessage, error) { - return json.RawMessage(`{"seats":[{"seat":"mesh-provisioner","holders":[{"module":"` + holder + `"}]}]}`), nil + // A read in the seat form is the bus's `.` of the holder on record, whoever it is. + t.Run("HolderReadResolvesTheSeat", func(t *testing.T) { + call := func(holder string) func(string, any) (json.RawMessage, error) { + return func(string, any) (json.RawMessage, error) { + return json.RawMessage(`{"seats":[{"seat":"mesh-provisioner","holders":[{"module":"` + holder + `"}]}]}`), nil + } } - } - for _, holder := range []string{"one", "another"} { - if got, err := holderRead(call(holder), plansRead); err != nil || got != holder+".plans" { - t.Errorf("holderRead = %q, %v; want %s.plans", got, err, holder) + for _, holder := range []string{"one", "another"} { + if got, err := holderRead(call(holder), plansRead); err != nil || got != holder+".plans" { + t.Errorf("holderRead = %q, %v; want %s.plans", got, err, holder) + } } - } - if _, err := holderRead(func(string, any) (json.RawMessage, error) { return nil, errors.New("down") }, plansRead); err == nil { - t.Errorf("a failed ask was taken as a holder") - } - if _, err := holderRead(call("x"), "mesh-provisioner.plans"); err == nil { - t.Errorf("a read naming a module was taken as a seat's") - } + if _, err := holderRead(func(string, any) (json.RawMessage, error) { return nil, errors.New("down") }, plansRead); err == nil { + t.Errorf("a failed ask was taken as a holder") + } + if _, err := holderRead(call("x"), "mesh-provisioner.plans"); err == nil { + t.Errorf("a read naming a module was taken as a seat's") + } + }) }