1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2025-11-29 23:07:45 +02:00
Files
opentelemetry-go/metric/asyncfloat64_test.go
Flc゛ 80cb909774 refactor: replace context.Background() with t.Context()/b.Context() in tests (#7352)
Based on the Go version we currently use, the dependency already
supports 1.24+, which allows using `t.Context()` and `b.Context()` in
unit tests and benchmarks respectively.

- Enable `context-background` and `context-todo` in
[`usetesting`](https://golangci-lint.run/docs/linters/configuration/#usetesting)
- Adjust the code to support linter detection

---------

Co-authored-by: Tyler Yahn <MrAlias@users.noreply.github.com>
Co-authored-by: Tyler Yahn <codingalias@gmail.com>
Co-authored-by: Damien Mathieu <42@dmathieu.com>
2025-09-23 09:52:45 +02:00

83 lines
1.8 KiB
Go

// 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 TestFloat64ObservableConfiguration(t *testing.T) {
const (
token float64 = 43
desc = "Instrument description."
uBytes = "By"
)
run := func(got float64ObservableConfig) 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 := &float64Observer{}
err := cBacks[0](t.Context(), o)
require.NoError(t, err)
assert.Equal(t, token, o.got, "callback not set")
}
}
cback := func(_ context.Context, obsrv Float64Observer) error {
obsrv.Observe(token)
return nil
}
t.Run("Float64ObservableCounter", run(
NewFloat64ObservableCounterConfig(
WithDescription(desc),
WithUnit(uBytes),
WithFloat64Callback(cback),
),
))
t.Run("Float64ObservableUpDownCounter", run(
NewFloat64ObservableUpDownCounterConfig(
WithDescription(desc),
WithUnit(uBytes),
WithFloat64Callback(cback),
),
))
t.Run("Float64ObservableGauge", run(
NewFloat64ObservableGaugeConfig(
WithDescription(desc),
WithUnit(uBytes),
WithFloat64Callback(cback),
),
))
}
type float64ObservableConfig interface {
Description() string
Unit() string
Callbacks() []Float64Callback
}
type float64Observer struct {
embedded.Float64Observer
Observable
got float64
}
func (o *float64Observer) Observe(v float64, _ ...ObserveOption) {
o.got = v
}