File: exemplar_test.go

package info (click to toggle)
golang-opentelemetry-otel 1.31.0-5
  • links: PTS, VCS
  • area: main
  • in suites: experimental, forky, sid
  • size: 11,844 kB
  • sloc: makefile: 237; sh: 51
file content (50 lines) | stat: -rw-r--r-- 1,288 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package aggregate

import (
	"testing"
	"time"

	"github.com/stretchr/testify/assert"

	"go.opentelemetry.io/otel/attribute"
	"go.opentelemetry.io/otel/sdk/metric/exemplar"
	"go.opentelemetry.io/otel/sdk/metric/metricdata"
)

func TestCollectExemplars(t *testing.T) {
	t.Run("Int64", testCollectExemplars[int64]())
	t.Run("Float64", testCollectExemplars[float64]())
}

func testCollectExemplars[N int64 | float64]() func(t *testing.T) {
	return func(t *testing.T) {
		now := time.Now()
		alice := attribute.String("user", "Alice")
		value := N(1)
		spanID := [8]byte{0x1}
		traceID := [16]byte{0x1}

		out := new([]metricdata.Exemplar[N])
		collectExemplars(out, func(in *[]exemplar.Exemplar) {
			*in = reset(*in, 1, 1)
			(*in)[0] = exemplar.Exemplar{
				FilteredAttributes: []attribute.KeyValue{alice},
				Time:               now,
				Value:              exemplar.NewValue(value),
				SpanID:             spanID[:],
				TraceID:            traceID[:],
			}
		})

		assert.Equal(t, []metricdata.Exemplar[N]{{
			FilteredAttributes: []attribute.KeyValue{alice},
			Time:               now,
			Value:              value,
			SpanID:             spanID[:],
			TraceID:            traceID[:],
		}}, *out)
	}
}