diff --git a/exporter/awsemfexporter/metric_translator.go b/exporter/awsemfexporter/metric_translator.go index e1fd70a5bdf6..f131018ef054 100644 --- a/exporter/awsemfexporter/metric_translator.go +++ b/exporter/awsemfexporter/metric_translator.go @@ -103,6 +103,7 @@ func (mt metricTranslator) translateOTelToGroupedMetric(rm pmetric.ResourceMetri var instrumentationScopeName string cWNamespace := getNamespace(rm, config.Namespace) logGroup, logStream, patternReplaceSucceeded := getLogInfo(rm, cWNamespace, config) + deltaInitialValue := config.RetainInitialValueOfDeltaMetric ilms := rm.ScopeMetrics() var metricReceiver string @@ -120,11 +121,12 @@ func (mt metricTranslator) translateOTelToGroupedMetric(rm pmetric.ResourceMetri metric := metrics.At(k) metadata := cWMetricMetadata{ groupedMetricMetadata: groupedMetricMetadata{ - namespace: cWNamespace, - timestampMs: timestamp, - logGroup: logGroup, - logStream: logStream, - metricDataType: metric.Type(), + namespace: cWNamespace, + timestampMs: timestamp, + logGroup: logGroup, + logStream: logStream, + metricDataType: metric.Type(), + retainInitialValueForDelta: deltaInitialValue, }, instrumentationScopeName: instrumentationScopeName, receiver: metricReceiver, diff --git a/exporter/awsemfexporter/metric_translator_test.go b/exporter/awsemfexporter/metric_translator_test.go index 0cafd832331b..845d9d8a65d4 100644 --- a/exporter/awsemfexporter/metric_translator_test.go +++ b/exporter/awsemfexporter/metric_translator_test.go @@ -2509,6 +2509,36 @@ func TestTranslateOtToGroupedMetricForLogGroupAndStream(t *testing.T) { } } +func TestTranslateOtToGroupedMetricForInitialDeltaValue(t *testing.T) { + for _, test := range logGroupStreamTestCases { + t.Run(test.name, func(t *testing.T) { + config := &Config{ + Namespace: "", + LogGroupName: test.inLogGroupName, + LogStreamName: test.inLogStreamName, + DimensionRollupOption: zeroAndSingleDimensionRollup, + logger: zap.NewNop(), + RetainInitialValueOfDeltaMetric: true, + } + + translator := newMetricTranslator(*config) + + groupedMetrics := make(map[interface{}]*groupedMetric) + + rm := test.inputMetrics.ResourceMetrics().At(0) + err := translator.translateOTelToGroupedMetric(rm, groupedMetrics, config) + assert.Nil(t, err) + + assert.NotNil(t, groupedMetrics) + assert.Equal(t, 1, len(groupedMetrics)) + + for _, actual := range groupedMetrics { + assert.True(t, actual.metadata.retainInitialValueForDelta) + } + }) + } +} + func generateTestMetrics(tm testMetric) pmetric.Metrics { md := pmetric.NewMetrics() now := time.Now()