Skip to content

Commit

Permalink
Centralize retrieving instrumentation scope framework conversion for …
Browse files Browse the repository at this point in the history
…all signals (#339)
  • Loading branch information
Mpdreamz authored Aug 9, 2024
1 parent 2089180 commit 81d7764
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 17 deletions.
35 changes: 35 additions & 0 deletions input/otlp/logs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -624,6 +624,41 @@ func TestConsumerConsumeLogsDataStream(t *testing.T) {
}
}

func TestLogsInstrumentationLibrary(t *testing.T) {
logs := plog.NewLogs()
resourceLogs := logs.ResourceLogs().AppendEmpty()
resourceAttrs := logs.ResourceLogs().At(0).Resource().Attributes()
resourceAttrs.PutStr(semconv.AttributeTelemetrySDKLanguage, "java")
scopeLogs := resourceLogs.ScopeLogs().AppendEmpty()
timestamp := pcommon.NewTimestampFromTime(time.UnixMilli(946684800000))

resourceLogs.ScopeLogs().At(0).Scope().SetName("library-name")
resourceLogs.ScopeLogs().At(0).Scope().SetVersion("1.2.3")

record1 := newLogRecord("") // no log body
record1.SetTimestamp(timestamp)
record1.CopyTo(scopeLogs.LogRecords().AppendEmpty())

var processed modelpb.Batch
var processor modelpb.ProcessBatchFunc = func(_ context.Context, batch *modelpb.Batch) error {
if processed != nil {
panic("already processes batch")
}
processed = batch.Clone()
return nil
}
consumer := otlp.NewConsumer(otlp.ConsumerConfig{
Processor: processor,
Semaphore: semaphore.NewWeighted(100),
})
result, err := consumer.ConsumeLogsWithResult(context.Background(), logs)
assert.NoError(t, err)
assert.Equal(t, otlp.ConsumeLogsResult{}, result)
assert.Len(t, processed, 1)
assert.Equal(t, "library-name", processed[0].Service.Framework.Name)
assert.Equal(t, "1.2.3", processed[0].Service.Framework.Version)
}

func TestConsumerConsumeOTelLogsWithTimestamp(t *testing.T) {
logs := plog.NewLogs()
resourceLogs := logs.ResourceLogs().AppendEmpty()
Expand Down
9 changes: 9 additions & 0 deletions input/otlp/metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,15 @@ func translateScopeMetadata(scope pcommon.InstrumentationScope, out *modelpb.APM
}
return true
})

if name := scope.Name(); name != "" {
if out.Service == nil {
out.Service = modelpb.ServiceFromVTPool()
}
out.Service.Framework = modelpb.FrameworkFromVTPool()
out.Service.Framework.Name = name
out.Service.Framework.Version = scope.Version()
}
}

func cleanServiceName(name string) string {
Expand Down
20 changes: 12 additions & 8 deletions input/otlp/metrics_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -882,8 +882,9 @@ func TestConsumeMetricsWithOTelRemapper(t *testing.T) {
expected: []*modelpb.APMEvent{
{
Service: &modelpb.Service{
Name: "unknown",
Language: &modelpb.Language{Name: "unknown"},
Name: "unknown",
Language: &modelpb.Language{Name: "unknown"},
Framework: &modelpb.Framework{Name: "otelcol/hostmetricsreceiver/load"},
},
Agent: &modelpb.Agent{Name: "otlp", Version: "unknown"},
Timestamp: modelpb.FromTime(ts),
Expand All @@ -900,8 +901,9 @@ func TestConsumeMetricsWithOTelRemapper(t *testing.T) {
},
{
Service: &modelpb.Service{
Name: "unknown",
Language: &modelpb.Language{Name: "unknown"},
Name: "unknown",
Language: &modelpb.Language{Name: "unknown"},
Framework: &modelpb.Framework{Name: "otelcol/hostmetricsreceiver/load"},
},
Agent: &modelpb.Agent{Name: "otlp", Version: "unknown"},
Timestamp: modelpb.FromTime(ts),
Expand Down Expand Up @@ -955,8 +957,9 @@ func TestConsumeMetricsWithOTelRemapper(t *testing.T) {
expected: []*modelpb.APMEvent{
{
Service: &modelpb.Service{
Name: "unknown",
Language: &modelpb.Language{Name: "unknown"},
Name: "unknown",
Language: &modelpb.Language{Name: "unknown"},
Framework: &modelpb.Framework{Name: "otelcol/hostmetricsreceiver/process"},
},
Agent: &modelpb.Agent{Name: "otlp", Version: "unknown"},
Timestamp: modelpb.FromTime(ts),
Expand All @@ -979,8 +982,9 @@ func TestConsumeMetricsWithOTelRemapper(t *testing.T) {
},
{
Service: &modelpb.Service{
Name: "unknown",
Language: &modelpb.Language{Name: "unknown"},
Name: "unknown",
Language: &modelpb.Language{Name: "unknown"},
Framework: &modelpb.Framework{Name: "otelcol/hostmetricsreceiver/process"},
},
Agent: &modelpb.Agent{Name: "otlp", Version: "unknown"},
Timestamp: modelpb.FromTime(ts),
Expand Down
9 changes: 0 additions & 9 deletions input/otlp/traces.go
Original file line number Diff line number Diff line change
Expand Up @@ -577,15 +577,6 @@ func TranslateTransaction(
event.Transaction.Result = spanStatusResult(spanStatus)
}

if name := library.Name(); name != "" {
if event.Service == nil {
event.Service = modelpb.ServiceFromVTPool()
}
event.Service.Framework = modelpb.FrameworkFromVTPool()
event.Service.Framework.Name = name
event.Service.Framework.Version = library.Version()
}

// if outcome and result are still not assigned, assign success
if event.Event.Outcome == outcomeUnknown {
event.Event.Outcome = outcomeSuccess
Expand Down

0 comments on commit 81d7764

Please sign in to comment.