MCPcopy Create free account
hub / github.com/coder/coder / setupMCPForTestWithName

Function setupMCPForTestWithName

aibridge/internal/integrationtest/mockmcp.go:51–82  ·  view source on GitHub ↗
(t *testing.T, name string, tracer trace.Tracer)

Source from the content-addressed store, hash-verified

49}
50
51func setupMCPForTestWithName(t *testing.T, name string, tracer trace.Tracer) *mockMCP {
52 t.Helper()
53
54 srv, acc := createMockMCPSrv(t)
55 mcpSrv := httptest.NewServer(srv)
56 t.Cleanup(mcpSrv.Close) // FIRST registered → runs LAST (LIFO)
57
58 logger := slogtest.Make(t, &slogtest.Options{IgnoreErrors: false}).Leveled(slog.LevelDebug)
59 // Use a dedicated HTTP client so MCP mocks don't use http.DefaultTransport,
60 // which can break when httptest.Server calls CloseIdleConnections in parallel
61 // resulting in error `init MCP client: failed to send initialized notification: failed to send request: failed to send request: Post "http://127.0.0.1:43843": net/http: HTTP/1.x transport connection broken: http: CloseIdleConnections called`
62 // https://github.com/golang/go/blob/44ec057a3e89482cf775f5eaaf03b0b5fcab1fa4/src/net/http/httptest/server.go#L268
63 httpTransport := &http.Transport{}
64 t.Cleanup(httpTransport.CloseIdleConnections)
65 httpClient := &http.Client{Transport: httpTransport}
66 proxy, err := mcp.NewStreamableHTTPServerProxy(name, mcpSrv.URL, nil, nil, nil, logger, tracer, transport.WithHTTPBasicClient(httpClient))
67 require.NoError(t, err)
68
69 mgr := mcp.NewServerProxyManager(map[string]mcp.ServerProxier{proxy.Name(): proxy}, tracer)
70 t.Cleanup(func() {
71 ctx, cancel := context.WithTimeout(context.Background(), testutil.WaitShort)
72 defer cancel()
73 require.NoError(t, mgr.Shutdown(ctx))
74 })
75
76 ctx, cancel := context.WithTimeout(t.Context(), testutil.WaitLong)
77 t.Cleanup(cancel)
78 require.NoError(t, mgr.Init(ctx))
79 require.NotEmpty(t, mgr.ListTools(), "mock MCP server should expose tools after init")
80
81 return &mockMCP{ServerProxier: mgr, calls: acc}
82}
83
84func newNoopMCPManager() mcp.ServerProxier {
85 return mcp.NewServerProxyManager(nil, noop.NewTracerProvider().Tracer(""))

Callers 2

setupMCPForTestFunction · 0.85

Calls 11

NameMethod · 0.95
ShutdownMethod · 0.95
InitMethod · 0.95
ListToolsMethod · 0.95
NewServerProxyManagerFunction · 0.92
NotEmptyMethod · 0.80
createMockMCPSrvFunction · 0.70
HelperMethod · 0.65
CleanupMethod · 0.65
ContextMethod · 0.65

Tested by 1