MCPcopy Create free account
hub / github.com/cortexproject/cortex / TestReportQueryStatsFormat

Function TestReportQueryStatsFormat

pkg/frontend/transport/handler_test.go:455–585  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

453}
454
455func TestReportQueryStatsFormat(t *testing.T) {
456 outputBuf := bytes.NewBuffer(nil)
457 logger := log.NewSyncLogger(log.NewLogfmtLogger(outputBuf))
458 userID := "fake"
459 req, _ := http.NewRequest(http.MethodGet, "http://localhost:8080/prometheus/api/v1/query", nil)
460 resp := &http.Response{ContentLength: 1000}
461 responseTime := time.Second
462 statusCode := http.StatusOK
463
464 type testCase struct {
465 queryString url.Values
466 queryStats *querier_stats.QueryStats
467 header http.Header
468 responseErr error
469 expectedLog string
470 enabledRulerQueryStatsLog bool
471 source string
472 }
473
474 tests := map[string]testCase{
475 "should not include query and header details if empty": {
476 expectedLog: `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=0 response_series_count=0 fetched_series_count=0 fetched_chunks_count=0 fetched_samples_count=0 fetched_chunks_bytes=0 fetched_data_bytes=0 split_queries=0 status_code=200 response_size=1000 samples_scanned=0`,
477 source: requestmeta.SourceAPI,
478 },
479 "should include query length and string at the end": {
480 queryString: url.Values(map[string][]string{"query": {"up"}}),
481 expectedLog: `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=0 response_series_count=0 fetched_series_count=0 fetched_chunks_count=0 fetched_samples_count=0 fetched_chunks_bytes=0 fetched_data_bytes=0 split_queries=0 status_code=200 response_size=1000 samples_scanned=0 query_length=2 param_query=up`,
482 source: requestmeta.SourceAPI,
483 },
484 "should include query stats": {
485 queryStats: &querier_stats.QueryStats{
486 QueryResponseSeries: 100,
487 Stats: querier_stats.Stats{
488 WallTime: 3 * time.Second,
489 QueryStorageWallTime: 100 * time.Minute,
490 FetchedSeriesCount: 100,
491 FetchedChunksCount: 200,
492 FetchedSamplesCount: 300,
493 FetchedChunkBytes: 1024,
494 FetchedDataBytes: 2048,
495 SplitQueries: 10,
496 },
497 },
498 expectedLog: `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=3 response_series_count=100 fetched_series_count=100 fetched_chunks_count=200 fetched_samples_count=300 fetched_chunks_bytes=1024 fetched_data_bytes=2048 split_queries=10 status_code=200 response_size=1000 samples_scanned=0 query_storage_wall_time_seconds=6000`,
499 source: requestmeta.SourceAPI,
500 },
501 "should include user agent": {
502 header: http.Header{"User-Agent": []string{"Grafana"}},
503 expectedLog: `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=0 response_series_count=0 fetched_series_count=0 fetched_chunks_count=0 fetched_samples_count=0 fetched_chunks_bytes=0 fetched_data_bytes=0 split_queries=0 status_code=200 response_size=1000 samples_scanned=0 user_agent=Grafana`,
504 source: requestmeta.SourceAPI,
505 },
506 "should include engine type": {
507 header: http.Header{http.CanonicalHeaderKey(engine.TypeHeader): []string{string(engine.Thanos)}},
508 expectedLog: `level=info msg="query stats" component=query-frontend method=GET path=/prometheus/api/v1/query response_time=1s query_wall_time_seconds=0 response_series_count=0 fetched_series_count=0 fetched_chunks_count=0 fetched_samples_count=0 fetched_chunks_bytes=0 fetched_data_bytes=0 split_queries=0 status_code=200 response_size=1000 samples_scanned=0 engine_type=thanos`,
509 source: requestmeta.SourceAPI,
510 },
511 "should include block store type": {
512 header: http.Header{http.CanonicalHeaderKey(querier.BlockStoreTypeHeader): []string{"parquet"}},

Callers

nothing calls this directly

Calls 5

reportQueryStatsMethod · 0.95
ContextWithRequestSourceFunction · 0.92
NewHandlerFunction · 0.85
RunMethod · 0.65
EqualMethod · 0.65

Tested by

no test coverage detected