From 5e61d08bd51e190bafcc4c155256793ac2d43858 Mon Sep 17 00:00:00 2001 From: Alexander Kozlov Date: Mon, 2 Oct 2023 14:05:08 +0400 Subject: [PATCH 1/2] Fixed bug with incorrect metric tags Signed-off-by: Alexander Kozlov --- cmd/collector/app/handler/grpc_handler.go | 4 +- .../app/handler/grpc_handler_test.go | 66 +++++++++++++++++++ 2 files changed, 68 insertions(+), 2 deletions(-) diff --git a/cmd/collector/app/handler/grpc_handler.go b/cmd/collector/app/handler/grpc_handler.go index 9e23ec602cf..4f5b45847a8 100644 --- a/cmd/collector/app/handler/grpc_handler.go +++ b/cmd/collector/app/handler/grpc_handler.go @@ -86,8 +86,8 @@ func (c *batchConsumer) consume(ctx context.Context, batch *model.Batch) error { } } _, err = c.spanProcessor.ProcessSpans(batch.Spans, processor.SpansOptions{ - InboundTransport: processor.GRPCTransport, - SpanFormat: processor.ProtoSpanFormat, + InboundTransport: c.spanOptions.InboundTransport, + SpanFormat: c.spanOptions.SpanFormat, Tenant: tenant, }) if err != nil { diff --git a/cmd/collector/app/handler/grpc_handler_test.go b/cmd/collector/app/handler/grpc_handler_test.go index 17a8af07e52..c8ddaf01aa9 100644 --- a/cmd/collector/app/handler/grpc_handler_test.go +++ b/cmd/collector/app/handler/grpc_handler_test.go @@ -40,6 +40,8 @@ type mockSpanProcessor struct { mux sync.Mutex spans []*model.Span tenants map[string]bool + transport processor.InboundTransport + spanFormat processor.SpanFormat } func (p *mockSpanProcessor) ProcessSpans(spans []*model.Span, opts processor.SpansOptions) ([]bool, error) { @@ -51,6 +53,8 @@ func (p *mockSpanProcessor) ProcessSpans(spans []*model.Span, opts processor.Spa p.tenants = make(map[string]bool) } p.tenants[opts.Tenant] = true + p.transport = opts.InboundTransport + p.spanFormat = opts.SpanFormat return oks, p.expectedError } @@ -66,17 +70,35 @@ func (p *mockSpanProcessor) getTenants() map[string]bool { return p.tenants } +func (p *mockSpanProcessor) getTransport() processor.InboundTransport { + p.mux.Lock() + defer p.mux.Unlock() + return p.transport +} + +func (p *mockSpanProcessor) getSpanFormat() processor.SpanFormat { + p.mux.Lock() + defer p.mux.Unlock() + return p.spanFormat +} + func (p *mockSpanProcessor) reset() { p.mux.Lock() defer p.mux.Unlock() p.spans = nil p.tenants = nil + p.transport = "" + p.spanFormat = "" } func (p *mockSpanProcessor) Close() error { return nil } +type mockSpanWriter struct{} + +func (w *mockSpanWriter) WriteSpan(ctx context.Context, span *model.Span) error { return nil } + func initializeGRPCTestServer(t *testing.T, beforeServe func(s *grpc.Server)) (*grpc.Server, net.Addr) { server := grpc.NewServer() beforeServe(server) @@ -363,3 +385,47 @@ func TestGetTenant(t *testing.T) { }) } } + +func TestBatchConsumer(t *testing.T) { + tests := []struct { + name string + batch model.Batch + transport processor.InboundTransport + spanFormat processor.SpanFormat + expectedTransport processor.InboundTransport + expectedSpanFormat processor.SpanFormat + }{ + { + name: "batchconsumer passes provided span options to processor", + batch: model.Batch{ + Process: &model.Process{ServiceName: "testservice"}, + Spans: []*model.Span{ + {OperationName: "test-op", Process: &model.Process{ServiceName: "foo"}}, + }, + }, + transport: processor.GRPCTransport, + spanFormat: processor.OTLPSpanFormat, + expectedTransport: processor.GRPCTransport, + expectedSpanFormat: processor.OTLPSpanFormat, + }, + } + + logger, _ := testutils.NewLogger() + for _, tc := range tests { + tc := tc + t.Parallel() + t.Run(tc.name, func(t *testing.T) { + processor := mockSpanProcessor{} + batchConsumer := newBatchConsumer(logger, &processor, tc.transport, tc.spanFormat, tenancy.NewManager(&tenancy.Options{})) + err := batchConsumer.consume(context.Background(), &model.Batch{ + Process: &model.Process{ServiceName: "testservice"}, + Spans: []*model.Span{ + {OperationName: "test-op", Process: &model.Process{ServiceName: "foo"}}, + }, + }) + assert.NoError(t, err) + assert.Equal(t, tc.transport, processor.getTransport()) + assert.Equal(t, tc.expectedSpanFormat, processor.getSpanFormat()) + }) + } +} From 089c1a984e4938839276a6062ff9d24d61c6447b Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Tue, 17 Oct 2023 17:16:44 -0400 Subject: [PATCH 2/2] remove unused struct Signed-off-by: Yuri Shkuro --- cmd/collector/app/handler/grpc_handler_test.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/cmd/collector/app/handler/grpc_handler_test.go b/cmd/collector/app/handler/grpc_handler_test.go index c8ddaf01aa9..e5e43cb61bf 100644 --- a/cmd/collector/app/handler/grpc_handler_test.go +++ b/cmd/collector/app/handler/grpc_handler_test.go @@ -95,10 +95,6 @@ func (p *mockSpanProcessor) Close() error { return nil } -type mockSpanWriter struct{} - -func (w *mockSpanWriter) WriteSpan(ctx context.Context, span *model.Span) error { return nil } - func initializeGRPCTestServer(t *testing.T, beforeServe func(s *grpc.Server)) (*grpc.Server, net.Addr) { server := grpc.NewServer() beforeServe(server)