(ctx context.Context, t *testing.T)
| 1366 | } |
| 1367 | |
| 1368 | func mockTelemetryServer(ctx context.Context, t *testing.T) (*url.URL, chan *telemetry.Deployment, chan *telemetry.Snapshot) { |
| 1369 | t.Helper() |
| 1370 | deployment := make(chan *telemetry.Deployment, 64) |
| 1371 | snapshot := make(chan *telemetry.Snapshot, 64) |
| 1372 | r := chi.NewRouter() |
| 1373 | r.Post("/deployment", func(w http.ResponseWriter, r *http.Request) { |
| 1374 | require.Equal(t, buildinfo.Version(), r.Header.Get(telemetry.VersionHeader)) |
| 1375 | dd := &telemetry.Deployment{} |
| 1376 | err := json.NewDecoder(r.Body).Decode(dd) |
| 1377 | require.NoError(t, err) |
| 1378 | ok := testutil.AssertSend(ctx, t, deployment, dd) |
| 1379 | if !ok { |
| 1380 | w.WriteHeader(http.StatusInternalServerError) |
| 1381 | return |
| 1382 | } |
| 1383 | // Ensure the header is sent only after deployment is sent |
| 1384 | w.WriteHeader(http.StatusAccepted) |
| 1385 | }) |
| 1386 | r.Post("/snapshot", func(w http.ResponseWriter, r *http.Request) { |
| 1387 | require.Equal(t, buildinfo.Version(), r.Header.Get(telemetry.VersionHeader)) |
| 1388 | ss := &telemetry.Snapshot{} |
| 1389 | err := json.NewDecoder(r.Body).Decode(ss) |
| 1390 | require.NoError(t, err) |
| 1391 | ok := testutil.AssertSend(ctx, t, snapshot, ss) |
| 1392 | if !ok { |
| 1393 | w.WriteHeader(http.StatusInternalServerError) |
| 1394 | return |
| 1395 | } |
| 1396 | // Ensure the header is sent only after snapshot is sent |
| 1397 | w.WriteHeader(http.StatusAccepted) |
| 1398 | }) |
| 1399 | server := httptest.NewServer(r) |
| 1400 | t.Cleanup(server.Close) |
| 1401 | serverURL, err := url.Parse(server.URL) |
| 1402 | require.NoError(t, err) |
| 1403 | |
| 1404 | return serverURL, deployment, snapshot |
| 1405 | } |
| 1406 | |
| 1407 | func collectSnapshot( |
| 1408 | ctx context.Context, |
no test coverage detected