Browse Source

[REFACTOR] OTLP translator: simplify time conversion

We don't need multiple levels of abstraction to convert nanoseconds to
milliseconds.
We do benefit from tests, however.

Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
pull/14760/head
Bryan Boreham 3 months ago
parent
commit
f90c7a11d1
  1. 3
      storage/remote/otlptranslator/prometheusremotewrite/helper.go
  2. 19
      storage/remote/otlptranslator/prometheusremotewrite/helper_test.go

3
storage/remote/otlptranslator/prometheusremotewrite/helper.go

@ -24,7 +24,6 @@ import (
"slices"
"sort"
"strconv"
"time"
"unicode/utf8"
"github.com/cespare/xxhash/v2"
@ -594,5 +593,5 @@ func addResourceTargetInfo(resource pcommon.Resource, settings Settings, timesta
// convertTimeStamp converts OTLP timestamp in ns to timestamp in ms
func convertTimeStamp(timestamp pcommon.Timestamp) int64 {
return timestamp.AsTime().UnixNano() / (int64(time.Millisecond) / int64(time.Nanosecond))
return int64(timestamp) / 1_000_000
}

19
storage/remote/otlptranslator/prometheusremotewrite/helper_test.go

@ -14,6 +14,7 @@ package prometheusremotewrite
import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"go.opentelemetry.io/collector/pdata/pcommon"
@ -159,3 +160,21 @@ func TestCreateAttributes(t *testing.T) {
})
}
}
func Test_convertTimeStamp(t *testing.T) {
tests := []struct {
name string
arg pcommon.Timestamp
want int64
}{
{"zero", 0, 0},
{"1ms", 1_000_000, 1},
{"1s", pcommon.Timestamp(time.Unix(1, 0).UnixNano()), 1000},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := convertTimeStamp(tt.arg)
assert.Equal(t, tt.want, got)
})
}
}

Loading…
Cancel
Save