MCPcopy
hub / github.com/grafana/tempo / TestSearchCachedMetrics

Function TestSearchCachedMetrics

modules/frontend/search_handlers_test.go:681–762  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

679}
680
681func TestSearchCachedMetrics(t *testing.T) {
682 // set up backend
683 tenant := "foo"
684 meta := &backend.BlockMeta{
685 StartTime: time.Unix(15, 0),
686 EndTime: time.Unix(16, 0),
687 Size_: defaultTargetBytesPerRequest,
688 TotalRecords: 1,
689 BlockID: backend.MustParse("00000000-0000-0000-0000-000000000123"),
690 }
691 rdr := &mockReader{
692 metas: []*backend.BlockMeta{meta},
693 }
694
695 // set up cache
696 c := test.NewMockClient()
697 p := test.NewMockProvider()
698 err := p.AddCache(cache.RoleFrontendSearch, c)
699 require.NoError(t, err)
700 f := frontendWithSettings(t, nil, rdr, nil, p)
701
702 // set up query
703 query := "{}"
704 hash := hashForSearchRequest(&tempopb.SearchRequest{Query: query, Limit: 3, SpansPerSpanSet: 2})
705 start := uint32(10)
706 end := uint32(20)
707 cacheKey := searchJobCacheKey(tenant, hash, time.Unix(int64(start), 0), time.Unix(int64(end), 0), meta, 0, 1)
708
709 // confirm cache key doesn't exist
710 _, bufs, _ := c.Fetch(context.Background(), []string{cacheKey})
711 require.Equal(t, 0, len(bufs))
712
713 // execute query
714 path := fmt.Sprintf("/?start=%d&end=%d&q=%s&limit=3&spss=2", start, end, query)
715 req := httptest.NewRequest("GET", path, nil)
716 ctx := req.Context()
717 ctx = user.InjectOrgID(ctx, tenant)
718 req = req.WithContext(ctx)
719 respWriter := httptest.NewRecorder()
720 f.SearchHandler.ServeHTTP(respWriter, req)
721 resp := respWriter.Result()
722 require.Equal(t, 200, resp.StatusCode)
723
724 // parse response
725 actualResp := &tempopb.SearchResponse{}
726 bytesResp, err := io.ReadAll(resp.Body)
727 require.NoError(t, err)
728 err = jsonpb.Unmarshal(bytes.NewReader(bytesResp), actualResp)
729 require.NoError(t, err)
730
731 // verify metrics are collected
732 require.Equal(t, uint64(1), actualResp.Metrics.InspectedBytes)
733 require.Equal(t, uint32(1), actualResp.Metrics.InspectedTraces)
734 require.Equal(t, uint64(0), actualResp.Metrics.InspectedSpans)
735 require.Equal(t, uint32(1), actualResp.Metrics.CompletedJobs)
736 require.Equal(t, uint32(1), actualResp.Metrics.TotalJobs)
737 require.Equal(t, uint32(1), actualResp.Metrics.TotalBlocks)
738 require.Equal(t, uint64(defaultTargetBytesPerRequest), actualResp.Metrics.TotalBlockBytes)

Callers

nothing calls this directly

Calls 14

ContextMethod · 0.95
MustParseFunction · 0.92
NewMockClientFunction · 0.92
NewMockProviderFunction · 0.92
frontendWithSettingsFunction · 0.85
hashForSearchRequestFunction · 0.85
searchJobCacheKeyFunction · 0.85
AddCacheMethod · 0.65
FetchMethod · 0.65
ResultMethod · 0.65
ReadAllMethod · 0.65
UnmarshalMethod · 0.65

Tested by

no test coverage detected