From fbb50f8fcd2ac26db45281fc649aa56e4e46201e Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 2 Nov 2026 18:58:18 +0100 Subject: [PATCH] mesh-delivery-checker: run check asks in its tests with the Go build module's real runner MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ADR 0593 §1: the step runner left mesh-sdk for mesh-build-go's buildstep package, so the examiner's unit tests and the module's integration test require it by the group's version (as the builder does) rather than an imitation of its plan and kept-verdict rules. Claude-Session: https://claude.ai/code/session_01NcbgfJ9Gum47zkFKWRaovL --- .../cmd/mesh-delivery-checker/integration_test.go | 14 +++++++------- modules/mesh-delivery-checker/go.mod | 1 + .../internal/check/examiner_test.go | 10 +++++----- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/modules/mesh-delivery-checker/cmd/mesh-delivery-checker/integration_test.go b/modules/mesh-delivery-checker/cmd/mesh-delivery-checker/integration_test.go index 3a65048..f42d8ec 100644 --- a/modules/mesh-delivery-checker/cmd/mesh-delivery-checker/integration_test.go +++ b/modules/mesh-delivery-checker/cmd/mesh-delivery-checker/integration_test.go @@ -22,9 +22,9 @@ import ( "github.com/nats-io/nats.go" "github.com/nats-io/nats.go/jetstream" + gobuild "git.novox.be/novox/mesh-catalog/modules/mesh-build-go/buildstep" "git.novox.be/novox/mesh-delivery/modules/mesh-delivery-builder/buildrun" "git.novox.be/novox/mesh-sdk/go/announce" - "git.novox.be/novox/mesh-sdk/go/buildstep" "git.novox.be/novox/mesh-sdk/go/delivery" "git.novox.be/novox/mesh-sdk/go/process" @@ -88,7 +88,7 @@ type fakeBuildModules struct { calls map[string]int // by `.` testTool *testing.T // beside is, by workspace, the siblings the fetch placed in it as ` `, sorted: a digest echoes them - // (1929/AC2; mesh-sdk buildstep.besideOf), or the level runs whole and keeps nothing. + // (1929/AC2; mesh-build-go buildstep.besideOf), or the level runs whole and keeps nothing. beside map[string][]string // names are the nodes' names the last check ask carried, for the names check (ADR 0567 §12). names []string @@ -156,11 +156,11 @@ func (f *fakeBuildModules) serve(t *testing.T, module string, kept jetstream.Key t.Fatal(err) } language := strings.TrimPrefix(module, "mesh-build-") - if err := buildstep.DeclareAskWorkers(f.ctx, f.js, language, 30*time.Second); err != nil { + if err := gobuild.DeclareAskWorkers(f.ctx, f.js, language, 30*time.Second); err != nil { t.Fatal(err) } prefix := map[string]string{"mesh-build-go": "build_go_", "mesh-build-node": "build_node_"}[module] - call := func(name string) buildstep.StepFunc { + call := func(name string) gobuild.StepFunc { return func(ctx context.Context, args map[string]any) (any, error) { tool := prefix + name f.mu.Lock() @@ -169,7 +169,7 @@ func (f *fakeBuildModules) serve(t *testing.T, module string, kept jetstream.Key return f.result(t, tool, args), nil } } - steps := buildstep.AskSteps{Fetch: call("fetch"), Test: call("test"), + steps := gobuild.AskSteps{Fetch: call("fetch"), Test: call("test"), Kept: func(ctx context.Context, level, digest string) (int, bool, error) { key, err := delivery.KeptKey(level, digest) if err != nil { @@ -192,7 +192,7 @@ func (f *fakeBuildModules) serve(t *testing.T, module string, kept jetstream.Key raw, _ := value.(json.RawMessage) return kv.Put(f.ctx, key, raw) } - p := &buildstep.Puller{Source: &buildstep.JetStreamAsks{JS: f.js, Language: language}, Language: language, Node: "n1", Put: put, + p := &gobuild.Puller{Source: &gobuild.JetStreamAsks{JS: f.js, Language: language}, Language: language, Node: "n1", Put: put, Capacity: func() int { return 2 }, PullWait: 200 * time.Millisecond, Run: func(ctx context.Context, a delivery.StepAsk) (any, error) { if a.Check != nil { @@ -200,7 +200,7 @@ func (f *fakeBuildModules) serve(t *testing.T, module string, kept jetstream.Key f.names = a.Check.NodeNames f.mu.Unlock() } - return buildstep.RunAsk(ctx, steps, a) + return gobuild.RunAsk(ctx, steps, a) }} go func() { _ = p.Pull(f.ctx) }() } diff --git a/modules/mesh-delivery-checker/go.mod b/modules/mesh-delivery-checker/go.mod index d8a8fe7..fd9ebb3 100644 --- a/modules/mesh-delivery-checker/go.mod +++ b/modules/mesh-delivery-checker/go.mod @@ -3,6 +3,7 @@ module mesh-delivery-checker go 1.26.0 require ( + git.novox.be/novox/mesh-catalog/modules/mesh-build-go/buildstep v0.0.0-20261102182241-9c57f7afb339 git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261102112556-abf5eace7791 github.com/nats-io/nats-server/v2 v2.11.17 github.com/nats-io/nats.go v1.54.0 diff --git a/modules/mesh-delivery-checker/internal/check/examiner_test.go b/modules/mesh-delivery-checker/internal/check/examiner_test.go index 8a4ea45..1eedd5d 100644 --- a/modules/mesh-delivery-checker/internal/check/examiner_test.go +++ b/modules/mesh-delivery-checker/internal/check/examiner_test.go @@ -18,8 +18,8 @@ import ( "time" "unicode/utf8" + gobuild "git.novox.be/novox/mesh-catalog/modules/mesh-build-go/buildstep" "git.novox.be/novox/mesh-delivery/modules/mesh-delivery-builder/buildrun" - "git.novox.be/novox/mesh-sdk/go/buildstep" "git.novox.be/novox/mesh-sdk/go/composer" "git.novox.be/novox/mesh-sdk/go/delivery" ) @@ -136,12 +136,12 @@ func refsOf(v any) []BesideRef { // toolPrefix is the start of each build module's tool names, as the fake build modules answer them. var toolPrefix = map[string]string{buildrun.GoBuildModule: "build_go_", buildrun.NodeBuildModule: "build_node_"} -// answer runs a check ask as the build module that pulls it does (buildstep.RunAsk), with the fake tools on shanks and the +// answer runs a check ask as the build module that pulls it does (gobuild.RunAsk), with the fake tools on shanks and the // bench's kept verdicts, and answers the step it writes. func (b *bench) answer(a delivery.StepAsk) delivery.Step { module, _ := delivery.BuildModuleOf(a.Language) const node = "shanks" - tool := func(name string) buildstep.StepFunc { + tool := func(name string) gobuild.StepFunc { return func(ctx context.Context, args map[string]any) (any, error) { raw, err := b.steps.Run(ctx, module, node, toolPrefix[module]+name, args) if err != nil { @@ -150,7 +150,7 @@ func (b *bench) answer(a delivery.StepAsk) delivery.Step { return raw, nil } } - steps := buildstep.AskSteps{Fetch: tool("fetch"), Test: tool("test"), + steps := gobuild.AskSteps{Fetch: tool("fetch"), Test: tool("test"), Kept: func(ctx context.Context, level, digest string) (int, bool, error) { k, found, err := (Kept{Store: b.kept}).Lookup(ctx, level, digest) return k.Tests, found, err @@ -168,7 +168,7 @@ func (b *bench) answer(a delivery.StepAsk) delivery.Step { } steps.Has = func(string) bool { return true } } - out, err := buildstep.RunAsk(context.Background(), steps, a) + out, err := gobuild.RunAsk(context.Background(), steps, a) step := delivery.Step{ID: a.ID, Tool: a.Kind + " ask", Node: node, State: delivery.StepPassed, Started: began, Ended: began.Add(2 * time.Second)} if err != nil { step.State, step.Reason = delivery.StepFailed, err.Error()