MCPcopy Create free account
hub / github.com/coder/aibridge / newBridgeTestServer

Function newBridgeTestServer

internal/integrationtest/setupbridge.go:133–193  ·  view source on GitHub ↗

newBridgeTestServer creates a fully configured test server running a RequestBridge with sensible defaults: - All standard providers (unless withProvider / withCustomProvider) - NoopMCPManager (unless withMCP) - slogtest debug logger - defaultTracer (unless withTracer) - defaultActorID (unless withAc

(
	ctx context.Context,
	t *testing.T,
	upstreamURL string,
	opts ...bridgeOption,
)

Source from the content-addressed store, hash-verified

131// - defaultTracer (unless withTracer)
132// - defaultActorID (unless withActor)
133func newBridgeTestServer(
134 ctx context.Context,
135 t *testing.T,
136 upstreamURL string,
137 opts ...bridgeOption,
138) *bridgeTestServer {
139 t.Helper()
140
141 cfg := &bridgeConfig{
142 userID: defaultActorID,
143 }
144 for _, o := range opts {
145 o(cfg)
146 }
147 if cfg.tracer == nil {
148 cfg.tracer = defaultTracer
149 }
150 cfg.logger = newLogger(t)
151 if cfg.mcpProxy == nil {
152 cfg.mcpProxy = newNoopMCPManager()
153 }
154
155 // Resolve providers: use explicit builders when provided, otherwise
156 // create default providers for every supported type.
157 var providers []aibridge.Provider
158 if len(cfg.providerBuilders) > 0 {
159 for _, b := range cfg.providerBuilders {
160 providers = append(providers, b(upstreamURL))
161 }
162 } else {
163 providers = []aibridge.Provider{
164 newDefaultProvider(config.ProviderAnthropic, upstreamURL),
165 newDefaultProvider(config.ProviderOpenAI, upstreamURL),
166 }
167 }
168
169 mockRec := &testutil.MockRecorder{}
170 rec := aibridge.NewRecorder(cfg.logger, cfg.tracer, func() (aibridge.Recorder, error) {
171 return mockRec, nil
172 })
173
174 bridge, err := aibridge.NewRequestBridge(
175 ctx, providers, rec, cfg.mcpProxy,
176 cfg.logger, cfg.metrics, cfg.tracer,
177 )
178 require.NoError(t, err)
179
180 actorID, md := cfg.userID, cfg.metadata
181 srv := httptest.NewUnstartedServer(bridge)
182 srv.Config.BaseContext = func(_ net.Listener) context.Context {
183 return aibcontext.AsActor(ctx, actorID, md)
184 }
185 srv.Start()
186 t.Cleanup(srv.Close)
187
188 return &bridgeTestServer{
189 Server: srv,
190 Recorder: mockRec,

Calls 6

NewRecorderFunction · 0.92
NewRequestBridgeFunction · 0.92
newLoggerFunction · 0.85
newNoopMCPManagerFunction · 0.85
newDefaultProviderFunction · 0.85
StartMethod · 0.80