diff --git a/examples/collatz/weaver_mtls.toml b/examples/collatz/weaver_mtls.toml new file mode 100644 index 000000000..909d180cb --- /dev/null +++ b/examples/collatz/weaver_mtls.toml @@ -0,0 +1,7 @@ +[serviceweaver] +binary = "./collatz" +rollout = "5m" + +[multi] +listeners.collatz = {address = "localhost:9000"} +mtls = true # For extra testing of MTLS handling diff --git a/examples/examples_test.go b/examples/examples_test.go index 4dd746f11..57a92f1bb 100644 --- a/examples/examples_test.go +++ b/examples/examples_test.go @@ -106,19 +106,29 @@ func TestExamples(t *testing.T) { }) // "weaver multi deploy" the application. - t.Run("weaver-multi", func(t *testing.T) { + t.Run("weaver-multi-nomtls", func(t *testing.T) { cmd := startCmd(ctx, t, nil, "../../cmd/weaver/weaver", "multi", "deploy", "weaver.toml") t.Cleanup(terminateCmdAndWait(t, cmd)) run(t, test) }) + // "weaver multi deploy" the application with MTLS. + t.Run("weaver-multi-mtls", func(t *testing.T) { + if os.Getenv("GITHUB_RUN_ID") != "" { + t.Skip("test takes too long (over 30s) on github") + } + cmd := startCmd(ctx, t, nil, "../../cmd/weaver/weaver", "multi", "deploy", "weaver_mtls.toml") + t.Cleanup(terminateCmdAndWait(t, cmd)) + run(t, test) + }) + // TODO: other deployers? }) } } func run(t *testing.T, test test) { - ctx, cancel := context.WithTimeout(context.Background(), 4*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) t.Cleanup(cancel) // Send a GET request to the endpoint, retrying on error. diff --git a/internal/weaver/remoteweavelet.go b/internal/weaver/remoteweavelet.go index 366320aea..3521c2530 100644 --- a/internal/weaver/remoteweavelet.go +++ b/internal/weaver/remoteweavelet.go @@ -171,6 +171,7 @@ func NewRemoteWeavelet(ctx context.Context, regs []*codegen.Registration, bootst // Initialize the component structs. for _, reg := range regs { + reg := reg c := &component{reg: reg} w.componentsByName[reg.Name] = c w.componentsByIntf[reg.Iface] = c