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

Function newMockUpstream

aibridge/internal/integrationtest/mockupstream.go:117–144  ·  view source on GitHub ↗

newMockUpstream creates a started httptest.Server that replays fixture responses. Responses are returned in order: first call → first response. The test fails if the number of requests doesn't match the number of responses (when AllowOverflow is not set, default). srv := newMockUpstream(ctx, t, ne

(ctx context.Context, t *testing.T, responses ...upstreamResponse)

Source from the content-addressed store, hash-verified

115// srv := newMockUpstream(ctx, t, newFixtureResponse(fix)) // simple
116// srv := newMockUpstream(ctx, t, newFixtureResponse(fix), newFixtureToolResponse(fix)) // multi-turn
117func newMockUpstream(ctx context.Context, t *testing.T, responses ...upstreamResponse) *mockUpstream {
118 t.Helper()
119 require.NotEmpty(t, responses, "at least one upstreamResponse required")
120
121 ms := &mockUpstream{
122 t: t,
123 responses: responses,
124 }
125
126 srv := httptest.NewUnstartedServer(http.HandlerFunc(ms.handle))
127 srv.Config.BaseContext = func(_ net.Listener) context.Context { return ctx }
128 srv.Start()
129
130 t.Cleanup(func() {
131 srv.Close()
132
133 // Verify the number of requests matches expectations.
134 calls := int(ms.Calls.Load())
135 if ms.AllowOverflow {
136 require.LessOrEqual(t, len(ms.responses), calls, "too few requests, got: %v, want at least: %v", calls, len(ms.responses))
137 } else {
138 require.Equal(t, len(ms.responses), calls, "unexpected number of requests, got: %v, want: %v", calls, len(ms.responses))
139 }
140 })
141
142 ms.Server = srv
143 return ms
144}
145
146func (ms *mockUpstream) handle(w http.ResponseWriter, r *http.Request) {
147 call := int(ms.Calls.Add(1) - 1)

Calls 7

NotEmptyMethod · 0.80
HelperMethod · 0.65
StartMethod · 0.65
CleanupMethod · 0.65
CloseMethod · 0.65
LoadMethod · 0.45
EqualMethod · 0.45