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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package metric // import "go.opentelemetry.io/otel/metric"
import (
"context"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/otel/metric/embedded"
)
func TestInt64ObservableConfiguration(t *testing.T) {
const (
token int64 = 43
desc = "Instrument description."
uBytes = "By"
)
run := func(got int64ObservableConfig) func(*testing.T) {
return func(t *testing.T) {
assert.Equal(t, desc, got.Description(), "description")
assert.Equal(t, uBytes, got.Unit(), "unit")
// Functions are not comparable.
cBacks := got.Callbacks()
require.Len(t, cBacks, 1, "callbacks")
o := &int64Observer{}
err := cBacks[0](context.Background(), o)
require.NoError(t, err)
assert.Equal(t, token, o.got, "callback not set")
}
}
cback := func(ctx context.Context, obsrv Int64Observer) error {
obsrv.Observe(token)
return nil
}
t.Run("Int64ObservableCounter", run(
NewInt64ObservableCounterConfig(
WithDescription(desc),
WithUnit(uBytes),
WithInt64Callback(cback),
),
))
t.Run("Int64ObservableUpDownCounter", run(
NewInt64ObservableUpDownCounterConfig(
WithDescription(desc),
WithUnit(uBytes),
WithInt64Callback(cback),
),
))
t.Run("Int64ObservableGauge", run(
NewInt64ObservableGaugeConfig(
WithDescription(desc),
WithUnit(uBytes),
WithInt64Callback(cback),
),
))
}
type int64ObservableConfig interface {
Description() string
Unit() string
Callbacks() []Int64Callback
}
type int64Observer struct {
embedded.Int64Observer
Observable
got int64
}
func (o *int64Observer) Observe(v int64, _ ...ObserveOption) {
o.got = v
}
|