(t *testing.T, h *util.TempoHarness, req queryRangeRequest, fn func(*tempopb.QueryRangeResponse, error))
| 759 | } |
| 760 | |
| 761 | func callQueryRange(t *testing.T, h *util.TempoHarness, req queryRangeRequest, fn func(*tempopb.QueryRangeResponse, error)) { |
| 762 | req.SetDefaults() |
| 763 | |
| 764 | apiClient := h.APIClientHTTP("") |
| 765 | fn(apiClient.MetricsQueryRange(req.Query, req.Start.UnixNano(), req.End.UnixNano(), req.Step, req.Exemplars)) |
| 766 | |
| 767 | step := time.Duration(0) |
| 768 | if req.Step != "" { |
| 769 | var err error |
| 770 | step, err = time.ParseDuration(req.Step) |
| 771 | require.NoError(t, err) |
| 772 | } |
| 773 | |
| 774 | grpcClient, ctx, err := h.APIClientGRPC("") |
| 775 | require.NoError(t, err) |
| 776 | |
| 777 | stream, err := grpcClient.MetricsQueryRange(ctx, &tempopb.QueryRangeRequest{ |
| 778 | Query: req.Query, |
| 779 | Start: uint64(req.Start.UnixNano()), |
| 780 | End: uint64(req.End.UnixNano()), |
| 781 | Step: uint64(step.Nanoseconds()), |
| 782 | Exemplars: uint32(req.Exemplars), |
| 783 | }) |
| 784 | require.NoError(t, err) |
| 785 | |
| 786 | finalResponse := &tempopb.QueryRangeResponse{ |
| 787 | Metrics: &tempopb.SearchMetrics{}, |
| 788 | } |
| 789 | var finalError error |
| 790 | for { |
| 791 | t.Logf("recv") |
| 792 | resp, err := stream.Recv() |
| 793 | if resp != nil { |
| 794 | t.Logf("resp: %+v, count: %d", resp, len(resp.GetSeries())) |
| 795 | naiveQueryRangeCombine(resp, finalResponse) |
| 796 | t.Logf("resp: %d, finalResponse: %d", len(resp.GetSeries()), len(finalResponse.GetSeries())) |
| 797 | } |
| 798 | if errors.Is(err, io.EOF) { |
| 799 | break |
| 800 | } |
| 801 | if err != nil { |
| 802 | finalError = err |
| 803 | break |
| 804 | } |
| 805 | } |
| 806 | fn(finalResponse, finalError) |
| 807 | } |
| 808 | |
| 809 | func strptr(s string) *string { |
| 810 | return &s |
no test coverage detected