MCPcopy
hub / github.com/ory/keto / UseDynamicPorts

Function UseDynamicPorts

internal/driver/testhelpers.go:19–68  ·  view source on GitHub ↗
(ctx context.Context, t testing.TB, r Registry)

Source from the content-addressed store, hash-verified

17type GetAddr = func(t testing.TB, endpoint string) (host string, port string, fullAddr string)
18
19func UseDynamicPorts(ctx context.Context, t testing.TB, r Registry) GetAddr {
20 t.Helper()
21
22 listenDir := t.TempDir()
23 readListenFile := fmt.Sprintf("%s/read.addr", listenDir)
24 writeListenFile := fmt.Sprintf("%s/write.addr", listenDir)
25 metricsListenFile := fmt.Sprintf("%s/metrics.addr", listenDir)
26 oplListenFile := fmt.Sprintf("%s/opl.addr", listenDir)
27
28 require.NoError(t, r.Config(ctx).Set(config.KeyReadAPIPort, 0))
29 require.NoError(t, r.Config(ctx).Set(config.KeyReadAPIListenFile, "file://"+readListenFile))
30 require.NoError(t, r.Config(ctx).Set(config.KeyWriteAPIPort, 0))
31 require.NoError(t, r.Config(ctx).Set(config.KeyWriteAPIListenFile, "file://"+writeListenFile))
32 require.NoError(t, r.Config(ctx).Set(config.KeyMetricsPort, 0))
33 require.NoError(t, r.Config(ctx).Set(config.KeyMetricsListenFile, "file://"+metricsListenFile))
34 require.NoError(t, r.Config(ctx).Set(config.KeyOPLSyntaxAPIPort, 0))
35 require.NoError(t, r.Config(ctx).Set(config.KeyOPLSyntaxListenFile, "file://"+oplListenFile))
36
37 return func(t testing.TB, endpoint string) (string, string, string) {
38 fp := ""
39 switch endpoint {
40 case "read":
41 fp = readListenFile
42 case "write":
43 fp = writeListenFile
44 case "metrics":
45 fp = metricsListenFile
46 case "opl":
47 fp = oplListenFile
48 default:
49 t.Fatalf("unknown endpoint: %q", endpoint)
50 }
51
52 var addr []byte
53 var host, port string
54
55 require.EventuallyWithT(t, func(t *assert.CollectT) {
56 var err error
57 addr, err = os.ReadFile(fp)
58 require.NotEmpty(t, addr)
59 require.NoError(t, err)
60 host, port, err = net.SplitHostPort(string(addr))
61 require.NoError(t, err)
62 require.NotEmpty(t, host)
63 require.NotEmpty(t, port)
64 }, 2*time.Second, 10*time.Millisecond)
65
66 return host, port, string(addr)
67 }
68}

Callers 3

newInitializedRegFunction · 0.92
TestScrapingEndpointFunction · 0.85
TestPanicRecoveryFunction · 0.85

Calls 3

FatalfMethod · 0.80
ConfigMethod · 0.65
SetMethod · 0.45

Tested by 2

TestScrapingEndpointFunction · 0.68
TestPanicRecoveryFunction · 0.68