github.com/grafana/pyroscope@v1.18.0/pkg/segmentwriter/memdb/testutil/querier.go (about) 1 package testutil 2 3 import ( 4 "context" 5 "net/http" 6 "testing" 7 8 "connectrpc.com/connect" 9 "github.com/pkg/errors" 10 "github.com/stretchr/testify/assert" 11 12 ingestv1 "github.com/grafana/pyroscope/api/gen/proto/go/ingester/v1" 13 "github.com/grafana/pyroscope/api/gen/proto/go/ingester/v1/ingesterv1connect" 14 pushv1 "github.com/grafana/pyroscope/api/gen/proto/go/push/v1" 15 typesv1 "github.com/grafana/pyroscope/api/gen/proto/go/types/v1" 16 connectapi "github.com/grafana/pyroscope/pkg/api/connect" 17 "github.com/grafana/pyroscope/pkg/phlaredb" 18 "github.com/grafana/pyroscope/pkg/testhelper" 19 ) 20 21 // Copied from phlaredb, todo 22 type IngesterHandlerPhlareDB struct { 23 phlaredb.Queriers 24 } 25 26 func IngesterClientForTest(t *testing.T, q phlaredb.Queriers) (ingesterv1connect.IngesterServiceClient, func()) { 27 assert.NotEmpty(t, q) 28 mux := http.NewServeMux() 29 mux.Handle(ingesterv1connect.NewIngesterServiceHandler(&IngesterHandlerPhlareDB{q}, connectapi.DefaultHandlerOptions()...)) 30 serv := testhelper.NewInMemoryServer(mux) 31 32 var httpClient = serv.Client() 33 34 client := ingesterv1connect.NewIngesterServiceClient( 35 httpClient, serv.URL(), connectapi.DefaultClientOptions()..., 36 ) 37 38 return client, serv.Close 39 } 40 41 func (i *IngesterHandlerPhlareDB) MergeProfilesStacktraces(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeProfilesStacktracesRequest, ingestv1.MergeProfilesStacktracesResponse]) error { 42 return phlaredb.MergeProfilesStacktraces(ctx, stream, i.ForTimeRange) 43 } 44 45 func (i *IngesterHandlerPhlareDB) MergeProfilesLabels(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeProfilesLabelsRequest, ingestv1.MergeProfilesLabelsResponse]) error { 46 return phlaredb.MergeProfilesLabels(ctx, stream, i.ForTimeRange) 47 } 48 49 func (i *IngesterHandlerPhlareDB) MergeProfilesPprof(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeProfilesPprofRequest, ingestv1.MergeProfilesPprofResponse]) error { 50 return phlaredb.MergeProfilesPprof(ctx, stream, i.ForTimeRange) 51 } 52 53 func (i *IngesterHandlerPhlareDB) MergeSpanProfile(ctx context.Context, stream *connect.BidiStream[ingestv1.MergeSpanProfileRequest, ingestv1.MergeSpanProfileResponse]) error { 54 return phlaredb.MergeSpanProfile(ctx, stream, i.ForTimeRange) 55 } 56 57 func (i *IngesterHandlerPhlareDB) Push(context.Context, *connect.Request[pushv1.PushRequest]) (*connect.Response[pushv1.PushResponse], error) { 58 return nil, errors.New("not implemented") 59 } 60 61 func (i *IngesterHandlerPhlareDB) LabelValues(context.Context, *connect.Request[typesv1.LabelValuesRequest]) (*connect.Response[typesv1.LabelValuesResponse], error) { 62 return nil, errors.New("not implemented") 63 } 64 65 func (i *IngesterHandlerPhlareDB) LabelNames(context.Context, *connect.Request[typesv1.LabelNamesRequest]) (*connect.Response[typesv1.LabelNamesResponse], error) { 66 return nil, errors.New("not implemented") 67 } 68 69 func (i *IngesterHandlerPhlareDB) ProfileTypes(context.Context, *connect.Request[ingestv1.ProfileTypesRequest]) (*connect.Response[ingestv1.ProfileTypesResponse], error) { 70 return nil, errors.New("not implemented") 71 } 72 73 func (i *IngesterHandlerPhlareDB) Series(context.Context, *connect.Request[ingestv1.SeriesRequest]) (*connect.Response[ingestv1.SeriesResponse], error) { 74 return nil, errors.New("not implemented") 75 } 76 77 func (i *IngesterHandlerPhlareDB) Flush(context.Context, *connect.Request[ingestv1.FlushRequest]) (*connect.Response[ingestv1.FlushResponse], error) { 78 return nil, errors.New("not implemented") 79 } 80 81 func (i *IngesterHandlerPhlareDB) BlockMetadata(context.Context, *connect.Request[ingestv1.BlockMetadataRequest]) (*connect.Response[ingestv1.BlockMetadataResponse], error) { 82 return nil, errors.New("not implemented") 83 } 84 85 func (i *IngesterHandlerPhlareDB) GetProfileStats(context.Context, *connect.Request[typesv1.GetProfileStatsRequest]) (*connect.Response[typesv1.GetProfileStatsResponse], error) { 86 return nil, errors.New("not implemented") 87 } 88 89 func (i *IngesterHandlerPhlareDB) GetBlockStats(context.Context, *connect.Request[ingestv1.GetBlockStatsRequest]) (*connect.Response[ingestv1.GetBlockStatsResponse], error) { 90 return nil, errors.New("not implemented") 91 }