diff --git a/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/integration_test.go b/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/integration_test.go index 6c231fb..96c9d54 100644 --- a/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/integration_test.go +++ b/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/integration_test.go @@ -22,6 +22,9 @@ import ( "github.com/nats-io/nats.go" "github.com/nats-io/nats.go/jetstream" + // The build runner the build modules pull and run asks with: mesh-build-go's own package (novox/hq ADR 0593 ยง1), + // another repository's, by its published version, so the builder is tested against the real pulling code. + runner "git.novox.be/novox/mesh-catalog/modules/mesh-build-go/buildstep" "git.novox.be/novox/mesh-sdk/go/buildstep" "git.novox.be/novox/mesh-sdk/go/buscompose" "git.novox.be/novox/mesh-sdk/go/delivery" @@ -53,7 +56,7 @@ const ( ) // fakeBuildModules are the build modules on the nodes as the real ones run since R4g (ADR 0525; issue 1887 A4): each pulls -// its build seat's asks on its nodes (buildstep.Puller over the seat's workers) and runs an ask's job with step bodies that +// its build seat's asks on its nodes (runner.Puller over the seat's workers) and runs an ask's job with step bodies that // answer as the real tools do, ending the step on . of its steps bucket. type fakeBuildModules struct { js jetstream.JetStream @@ -68,14 +71,14 @@ type fakeBuildModules struct { // closed, while set, keeps every node's capacity at 0: no ask is pulled until open is called (a test of the asks // waiting in their streams). closed atomic.Bool - pullers []*buildstep.Puller + pullers []*runner.Puller } // open lets the nodes pull again and wakes their pullers. func (f *fakeBuildModules) open() { f.closed.Store(false) f.mu.Lock() - ps := append([]*buildstep.Puller(nil), f.pullers...) + ps := append([]*runner.Puller(nil), f.pullers...) f.mu.Unlock() for _, p := range ps { p.Wake() @@ -139,26 +142,26 @@ func (f *fakeBuildModules) serve(t *testing.T, module string, nodes ...string) { 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 := runner.DeclareAskWorkers(f.ctx, f.js, language, 30*time.Second); err != nil { t.Fatal(err) } put := func(key string, value any) (uint64, error) { raw, _ := value.(json.RawMessage) return kv.Put(f.ctx, key, raw) } - call := func(name string) buildstep.StepFunc { + call := func(name string) runner.StepFunc { return func(ctx context.Context, args map[string]any) (any, error) { return f.step(module, name, args) } } - steps := buildstep.AskSteps{Fetch: call("fetch"), Build: call("build"), Copy: call("copy")} + steps := runner.AskSteps{Fetch: call("fetch"), Build: call("build"), Copy: call("copy")} for _, node := range nodes { - p := &buildstep.Puller{Source: &buildstep.JetStreamAsks{JS: f.js, Language: language}, Language: language, Node: node, Put: put, + p := &runner.Puller{Source: &runner.JetStreamAsks{JS: f.js, Language: language}, Language: language, Node: node, Put: put, Capacity: func() int { if f.closed.Load() { return 0 } return 2 }, PullWait: 200 * time.Millisecond, - Run: func(ctx context.Context, a delivery.StepAsk) (any, error) { return buildstep.RunAsk(ctx, steps, a) }} + Run: func(ctx context.Context, a delivery.StepAsk) (any, error) { return runner.RunAsk(ctx, steps, a) }} f.mu.Lock() f.pullers = append(f.pullers, p) f.mu.Unlock() diff --git a/modules/mesh-delivery-builder/go.mod b/modules/mesh-delivery-builder/go.mod index 6451820..0fe6d56 100644 --- a/modules/mesh-delivery-builder/go.mod +++ b/modules/mesh-delivery-builder/go.mod @@ -9,6 +9,7 @@ require ( ) require ( + git.novox.be/novox/mesh-catalog/modules/mesh-build-go/buildstep v0.0.0-20261102182241-9c57f7afb339 git.novox.be/novox/mesh-delivery/modules/mesh-delivery-builder/buildrun v0.0.0-00010101000000-000000000000 github.com/antithesishq/antithesis-sdk-go v0.7.0-default-no-op // indirect github.com/google/go-tpm v0.9.8 // indirect