MCPcopy Index your code
hub / github.com/coder/coder / startTestAIBridgeDaemon

Function startTestAIBridgeDaemon

enterprise/coderd/aibridge_reload_test.go:59–88  ·  view source on GitHub ↗

startTestAIBridgeDaemon wires an in-process aibridged daemon onto the supplied API and subscribes it to ai_providers change events. This mirrors what cli/server.go does in production so /api/v2/aibridge requests dispatch through the real pool and reloader.

(t *testing.T, api *coderd.API)

Source from the content-addressed store, hash-verified

57// This mirrors what cli/server.go does in production so /api/v2/aibridge
58// requests dispatch through the real pool and reloader.
59func startTestAIBridgeDaemon(t *testing.T, api *coderd.API) *aibridged.Metrics {
60 t.Helper()
61
62 ctx := context.Background()
63 logger := slogtest.Make(t, nil).Named("aibridged").Leveled(slog.LevelDebug)
64 cfg := api.DeploymentValues.AI.BridgeConfig
65 tracer := otel.Tracer("aibridge-reload-test")
66
67 providers, _, err := cli.BuildProviders(ctx, api.Database, cfg, logger)
68 require.NoError(t, err)
69
70 pool, err := aibridged.NewCachedBridgePool(aibridged.DefaultPoolOptions, providers, logger.Named("pool"), nil, tracer)
71 require.NoError(t, err)
72 t.Cleanup(func() { _ = pool.Shutdown(context.Background()) })
73
74 metrics := aibridged.NewMetrics(prometheus.NewRegistry())
75 reloader := &testPoolReloader{pool: pool, db: api.Database, cfg: cfg, logger: logger.Named("reloader"), metrics: metrics}
76 unsubscribe, err := aibridged.SubscribeProviderReload(ctx, api.Pubsub, reloader, logger.Named("subscriber"))
77 require.NoError(t, err)
78 t.Cleanup(unsubscribe)
79
80 srv, err := aibridged.New(ctx, pool, func(dialCtx context.Context) (aibridged.DRPCClient, error) {
81 return api.CreateInMemoryAIBridgeServer(dialCtx)
82 }, logger, tracer)
83 require.NoError(t, err)
84 t.Cleanup(func() { _ = srv.Close() })
85
86 api.RegisterInMemoryAIBridgedHTTPHandler(srv)
87 return metrics
88}
89
90type testPoolReloader struct {
91 pool *aibridged.CachedBridgePool

Callers 1

Calls 13

ShutdownMethod · 0.95
BuildProvidersFunction · 0.92
NewCachedBridgePoolFunction · 0.92
NewMetricsFunction · 0.92
SubscribeProviderReloadFunction · 0.92
NewFunction · 0.92
NamedMethod · 0.80
TracerMethod · 0.80
HelperMethod · 0.65
CleanupMethod · 0.65

Tested by

no test coverage detected