You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-07-17 01:12:45 +02:00
Restructure RegisterCallback method (#3587)
* Restructure RegisterCallback method Instead of accepting instruments to register the callback with as a slice, accept them as variadic arguments. * Add changes to changelog * Add PR number to changes
This commit is contained in:
@ -100,6 +100,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
|||||||
- The exporter from `go.opentelemetry.io/otel/exporters/zipkin` is updated to use the `v1.16.0` version of semantic conventions.
|
- The exporter from `go.opentelemetry.io/otel/exporters/zipkin` is updated to use the `v1.16.0` version of semantic conventions.
|
||||||
This means it no longer uses the removed `net.peer.ip` or `http.host` attributes to determine the remote endpoint.
|
This means it no longer uses the removed `net.peer.ip` or `http.host` attributes to determine the remote endpoint.
|
||||||
Instead it uses the `net.sock.peer` attributes. (#3581)
|
Instead it uses the `net.sock.peer` attributes. (#3581)
|
||||||
|
- The parameters for the `RegisterCallback` method of the `Meter` from `go.opentelemetry.io/otel/metric` are changed.
|
||||||
|
The slice of `instrument.Asynchronous` parameter is now passed as a variadic argument. (#3587)
|
||||||
|
|
||||||
### Deprecated
|
### Deprecated
|
||||||
|
|
||||||
|
@ -68,11 +68,11 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
_, err = meter.RegisterCallback([]instrument.Asynchronous{gauge}, func(ctx context.Context) error {
|
_, err = meter.RegisterCallback(func(ctx context.Context) error {
|
||||||
n := -10. + rand.Float64()*(90.) // [-10, 100)
|
n := -10. + rand.Float64()*(90.) // [-10, 100)
|
||||||
gauge.Observe(ctx, n, attrs...)
|
gauge.Observe(ctx, n, attrs...)
|
||||||
return nil
|
return nil
|
||||||
})
|
}, gauge)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -89,10 +89,7 @@ func ExampleMeter_asynchronous_multiple() {
|
|||||||
gcCount, _ := meter.Int64ObservableCounter("gcCount")
|
gcCount, _ := meter.Int64ObservableCounter("gcCount")
|
||||||
gcPause, _ := meter.Float64Histogram("gcPause")
|
gcPause, _ := meter.Float64Histogram("gcPause")
|
||||||
|
|
||||||
_, err := meter.RegisterCallback([]instrument.Asynchronous{
|
_, err := meter.RegisterCallback(
|
||||||
heapAlloc,
|
|
||||||
gcCount,
|
|
||||||
},
|
|
||||||
func(ctx context.Context) error {
|
func(ctx context.Context) error {
|
||||||
memStats := &runtime.MemStats{}
|
memStats := &runtime.MemStats{}
|
||||||
// This call does work
|
// This call does work
|
||||||
@ -105,6 +102,8 @@ func ExampleMeter_asynchronous_multiple() {
|
|||||||
computeGCPauses(ctx, gcPause, memStats.PauseNs[:])
|
computeGCPauses(ctx, gcPause, memStats.PauseNs[:])
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
|
heapAlloc,
|
||||||
|
gcCount,
|
||||||
)
|
)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -278,10 +278,10 @@ func (m *meter) Float64ObservableGauge(name string, options ...instrument.Float6
|
|||||||
//
|
//
|
||||||
// It is only valid to call Observe within the scope of the passed function,
|
// It is only valid to call Observe within the scope of the passed function,
|
||||||
// and only on the instruments that were registered with this call.
|
// and only on the instruments that were registered with this call.
|
||||||
func (m *meter) RegisterCallback(insts []instrument.Asynchronous, f metric.Callback) (metric.Registration, error) {
|
func (m *meter) RegisterCallback(f metric.Callback, insts ...instrument.Asynchronous) (metric.Registration, error) {
|
||||||
if del, ok := m.delegate.Load().(metric.Meter); ok {
|
if del, ok := m.delegate.Load().(metric.Meter); ok {
|
||||||
insts = unwrapInstruments(insts)
|
insts = unwrapInstruments(insts)
|
||||||
return del.RegisterCallback(insts, f)
|
return del.RegisterCallback(f, insts...)
|
||||||
}
|
}
|
||||||
|
|
||||||
m.mtx.Lock()
|
m.mtx.Lock()
|
||||||
@ -335,7 +335,7 @@ func (c *registration) setDelegate(m metric.Meter) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
reg, err := m.RegisterCallback(insts, c.function)
|
reg, err := m.RegisterCallback(c.function, insts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
otel.Handle(err)
|
otel.Handle(err)
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,7 @@ func TestMeterRace(t *testing.T) {
|
|||||||
_, _ = mtr.Int64Counter(name)
|
_, _ = mtr.Int64Counter(name)
|
||||||
_, _ = mtr.Int64UpDownCounter(name)
|
_, _ = mtr.Int64UpDownCounter(name)
|
||||||
_, _ = mtr.Int64Histogram(name)
|
_, _ = mtr.Int64Histogram(name)
|
||||||
_, _ = mtr.RegisterCallback(nil, func(ctx context.Context) error { return nil })
|
_, _ = mtr.RegisterCallback(func(ctx context.Context) error { return nil })
|
||||||
if !once {
|
if !once {
|
||||||
wg.Done()
|
wg.Done()
|
||||||
once = true
|
once = true
|
||||||
@ -86,7 +86,7 @@ func TestMeterRace(t *testing.T) {
|
|||||||
|
|
||||||
func TestUnregisterRace(t *testing.T) {
|
func TestUnregisterRace(t *testing.T) {
|
||||||
mtr := &meter{}
|
mtr := &meter{}
|
||||||
reg, err := mtr.RegisterCallback(nil, func(ctx context.Context) error { return nil })
|
reg, err := mtr.RegisterCallback(func(ctx context.Context) error { return nil })
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
@ -128,10 +128,10 @@ func testSetupAllInstrumentTypes(t *testing.T, m metric.Meter) (instrument.Float
|
|||||||
_, err = m.Int64ObservableGauge("test_Async_Gauge")
|
_, err = m.Int64ObservableGauge("test_Async_Gauge")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
_, err = m.RegisterCallback([]instrument.Asynchronous{afcounter}, func(ctx context.Context) error {
|
_, err = m.RegisterCallback(func(ctx context.Context) error {
|
||||||
afcounter.Observe(ctx, 3)
|
afcounter.Observe(ctx, 3)
|
||||||
return nil
|
return nil
|
||||||
})
|
}, afcounter)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
sfcounter, err := m.Float64Counter("test_Async_Counter")
|
sfcounter, err := m.Float64Counter("test_Async_Counter")
|
||||||
@ -323,10 +323,10 @@ func TestRegistrationDelegation(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
var called0 bool
|
var called0 bool
|
||||||
reg0, err := m.RegisterCallback([]instrument.Asynchronous{actr}, func(context.Context) error {
|
reg0, err := m.RegisterCallback(func(context.Context) error {
|
||||||
called0 = true
|
called0 = true
|
||||||
return nil
|
return nil
|
||||||
})
|
}, actr)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, 1, mImpl.registry.Len(), "callback not registered")
|
require.Equal(t, 1, mImpl.registry.Len(), "callback not registered")
|
||||||
// This means reg0 should not be delegated.
|
// This means reg0 should not be delegated.
|
||||||
@ -334,10 +334,10 @@ func TestRegistrationDelegation(t *testing.T) {
|
|||||||
assert.Equal(t, 0, mImpl.registry.Len(), "callback not unregistered")
|
assert.Equal(t, 0, mImpl.registry.Len(), "callback not unregistered")
|
||||||
|
|
||||||
var called1 bool
|
var called1 bool
|
||||||
reg1, err := m.RegisterCallback([]instrument.Asynchronous{actr}, func(context.Context) error {
|
reg1, err := m.RegisterCallback(func(context.Context) error {
|
||||||
called1 = true
|
called1 = true
|
||||||
return nil
|
return nil
|
||||||
})
|
}, actr)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Equal(t, 1, mImpl.registry.Len(), "second callback not registered")
|
require.Equal(t, 1, mImpl.registry.Len(), "second callback not registered")
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ func (m *testMeter) Float64ObservableGauge(name string, options ...instrument.Fl
|
|||||||
//
|
//
|
||||||
// It is only valid to call Observe within the scope of the passed function,
|
// It is only valid to call Observe within the scope of the passed function,
|
||||||
// and only on the instruments that were registered with this call.
|
// and only on the instruments that were registered with this call.
|
||||||
func (m *testMeter) RegisterCallback(i []instrument.Asynchronous, f metric.Callback) (metric.Registration, error) {
|
func (m *testMeter) RegisterCallback(f metric.Callback, i ...instrument.Asynchronous) (metric.Registration, error) {
|
||||||
m.callbacks = append(m.callbacks, f)
|
m.callbacks = append(m.callbacks, f)
|
||||||
return testReg{
|
return testReg{
|
||||||
f: func(idx int) func() {
|
f: func(idx int) func() {
|
||||||
|
@ -102,7 +102,7 @@ type Meter interface {
|
|||||||
//
|
//
|
||||||
// If no instruments are passed, f should not be registered nor called
|
// If no instruments are passed, f should not be registered nor called
|
||||||
// during collection.
|
// during collection.
|
||||||
RegisterCallback(instruments []instrument.Asynchronous, f Callback) (Registration, error)
|
RegisterCallback(f Callback, instruments ...instrument.Asynchronous) (Registration, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Callback is a function registered with a Meter that makes observations for
|
// Callback is a function registered with a Meter that makes observations for
|
||||||
|
@ -88,7 +88,7 @@ func (noopMeter) Float64ObservableGauge(string, ...instrument.Float64ObserverOpt
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RegisterCallback creates a register callback that does not record any metrics.
|
// RegisterCallback creates a register callback that does not record any metrics.
|
||||||
func (noopMeter) RegisterCallback([]instrument.Asynchronous, Callback) (Registration, error) {
|
func (noopMeter) RegisterCallback(Callback, ...instrument.Asynchronous) (Registration, error) {
|
||||||
return noopReg{}, nil
|
return noopReg{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,7 +200,7 @@ func (m *meter) Float64ObservableGauge(name string, options ...instrument.Float6
|
|||||||
|
|
||||||
// RegisterCallback registers the function f to be called when any of the
|
// RegisterCallback registers the function f to be called when any of the
|
||||||
// insts Collect method is called.
|
// insts Collect method is called.
|
||||||
func (m *meter) RegisterCallback(insts []instrument.Asynchronous, f metric.Callback) (metric.Registration, error) {
|
func (m *meter) RegisterCallback(f metric.Callback, insts ...instrument.Asynchronous) (metric.Registration, error) {
|
||||||
for _, inst := range insts {
|
for _, inst := range insts {
|
||||||
// Only register if at least one instrument has a non-drop aggregation.
|
// Only register if at least one instrument has a non-drop aggregation.
|
||||||
// Otherwise, calling f during collection will be wasted computation.
|
// Otherwise, calling f during collection will be wasted computation.
|
||||||
|
@ -101,11 +101,11 @@ func TestMeterCallbackCreationConcurrency(t *testing.T) {
|
|||||||
m := NewMeterProvider().Meter("callback-concurrency")
|
m := NewMeterProvider().Meter("callback-concurrency")
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
_, _ = m.RegisterCallback([]instrument.Asynchronous{}, emptyCallback)
|
_, _ = m.RegisterCallback(emptyCallback)
|
||||||
wg.Done()
|
wg.Done()
|
||||||
}()
|
}()
|
||||||
go func() {
|
go func() {
|
||||||
_, _ = m.RegisterCallback([]instrument.Asynchronous{}, emptyCallback)
|
_, _ = m.RegisterCallback(emptyCallback)
|
||||||
wg.Done()
|
wg.Done()
|
||||||
}()
|
}()
|
||||||
wg.Wait()
|
wg.Wait()
|
||||||
@ -113,7 +113,7 @@ func TestMeterCallbackCreationConcurrency(t *testing.T) {
|
|||||||
|
|
||||||
func TestNoopCallbackUnregisterConcurrency(t *testing.T) {
|
func TestNoopCallbackUnregisterConcurrency(t *testing.T) {
|
||||||
m := NewMeterProvider().Meter("noop-unregister-concurrency")
|
m := NewMeterProvider().Meter("noop-unregister-concurrency")
|
||||||
reg, err := m.RegisterCallback(nil, emptyCallback)
|
reg, err := m.RegisterCallback(emptyCallback)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
@ -140,12 +140,10 @@ func TestCallbackUnregisterConcurrency(t *testing.T) {
|
|||||||
ag, err := meter.Int64ObservableGauge("gauge")
|
ag, err := meter.Int64ObservableGauge("gauge")
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
i := []instrument.Asynchronous{actr}
|
regCtr, err := meter.RegisterCallback(emptyCallback, actr)
|
||||||
regCtr, err := meter.RegisterCallback(i, emptyCallback)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
i = []instrument.Asynchronous{ag}
|
regG, err := meter.RegisterCallback(emptyCallback, ag)
|
||||||
regG, err := meter.RegisterCallback(i, emptyCallback)
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
wg := &sync.WaitGroup{}
|
wg := &sync.WaitGroup{}
|
||||||
@ -181,10 +179,10 @@ func TestMeterCreatesInstruments(t *testing.T) {
|
|||||||
}
|
}
|
||||||
ctr, err := m.Int64ObservableCounter("aint", instrument.WithInt64Callback(cback))
|
ctr, err := m.Int64ObservableCounter("aint", instrument.WithInt64Callback(cback))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
_, err = m.RegisterCallback([]instrument.Asynchronous{ctr}, func(ctx context.Context) error {
|
_, err = m.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr.Observe(ctx, 3)
|
ctr.Observe(ctx, 3)
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Observed outside of a callback, it should be ignored.
|
// Observed outside of a callback, it should be ignored.
|
||||||
@ -211,10 +209,10 @@ func TestMeterCreatesInstruments(t *testing.T) {
|
|||||||
}
|
}
|
||||||
ctr, err := m.Int64ObservableUpDownCounter("aint", instrument.WithInt64Callback(cback))
|
ctr, err := m.Int64ObservableUpDownCounter("aint", instrument.WithInt64Callback(cback))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
_, err = m.RegisterCallback([]instrument.Asynchronous{ctr}, func(ctx context.Context) error {
|
_, err = m.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr.Observe(ctx, 11)
|
ctr.Observe(ctx, 11)
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Observed outside of a callback, it should be ignored.
|
// Observed outside of a callback, it should be ignored.
|
||||||
@ -241,10 +239,10 @@ func TestMeterCreatesInstruments(t *testing.T) {
|
|||||||
}
|
}
|
||||||
gauge, err := m.Int64ObservableGauge("agauge", instrument.WithInt64Callback(cback))
|
gauge, err := m.Int64ObservableGauge("agauge", instrument.WithInt64Callback(cback))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
_, err = m.RegisterCallback([]instrument.Asynchronous{gauge}, func(ctx context.Context) error {
|
_, err = m.RegisterCallback(func(ctx context.Context) error {
|
||||||
gauge.Observe(ctx, 11)
|
gauge.Observe(ctx, 11)
|
||||||
return nil
|
return nil
|
||||||
})
|
}, gauge)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Observed outside of a callback, it should be ignored.
|
// Observed outside of a callback, it should be ignored.
|
||||||
@ -269,10 +267,10 @@ func TestMeterCreatesInstruments(t *testing.T) {
|
|||||||
}
|
}
|
||||||
ctr, err := m.Float64ObservableCounter("afloat", instrument.WithFloat64Callback(cback))
|
ctr, err := m.Float64ObservableCounter("afloat", instrument.WithFloat64Callback(cback))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
_, err = m.RegisterCallback([]instrument.Asynchronous{ctr}, func(ctx context.Context) error {
|
_, err = m.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr.Observe(ctx, 3)
|
ctr.Observe(ctx, 3)
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Observed outside of a callback, it should be ignored.
|
// Observed outside of a callback, it should be ignored.
|
||||||
@ -299,10 +297,10 @@ func TestMeterCreatesInstruments(t *testing.T) {
|
|||||||
}
|
}
|
||||||
ctr, err := m.Float64ObservableUpDownCounter("afloat", instrument.WithFloat64Callback(cback))
|
ctr, err := m.Float64ObservableUpDownCounter("afloat", instrument.WithFloat64Callback(cback))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
_, err = m.RegisterCallback([]instrument.Asynchronous{ctr}, func(ctx context.Context) error {
|
_, err = m.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr.Observe(ctx, 11)
|
ctr.Observe(ctx, 11)
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Observed outside of a callback, it should be ignored.
|
// Observed outside of a callback, it should be ignored.
|
||||||
@ -329,10 +327,10 @@ func TestMeterCreatesInstruments(t *testing.T) {
|
|||||||
}
|
}
|
||||||
gauge, err := m.Float64ObservableGauge("agauge", instrument.WithFloat64Callback(cback))
|
gauge, err := m.Float64ObservableGauge("agauge", instrument.WithFloat64Callback(cback))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
_, err = m.RegisterCallback([]instrument.Asynchronous{gauge}, func(ctx context.Context) error {
|
_, err = m.RegisterCallback(func(ctx context.Context) error {
|
||||||
gauge.Observe(ctx, 11)
|
gauge.Observe(ctx, 11)
|
||||||
return nil
|
return nil
|
||||||
})
|
}, gauge)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
// Observed outside of a callback, it should be ignored.
|
// Observed outside of a callback, it should be ignored.
|
||||||
@ -505,19 +503,19 @@ func TestMetersProvideScope(t *testing.T) {
|
|||||||
m1 := mp.Meter("scope1")
|
m1 := mp.Meter("scope1")
|
||||||
ctr1, err := m1.Float64ObservableCounter("ctr1")
|
ctr1, err := m1.Float64ObservableCounter("ctr1")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
_, err = m1.RegisterCallback([]instrument.Asynchronous{ctr1}, func(ctx context.Context) error {
|
_, err = m1.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr1.Observe(ctx, 5)
|
ctr1.Observe(ctx, 5)
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr1)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
m2 := mp.Meter("scope2")
|
m2 := mp.Meter("scope2")
|
||||||
ctr2, err := m2.Int64ObservableCounter("ctr2")
|
ctr2, err := m2.Int64ObservableCounter("ctr2")
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
_, err = m1.RegisterCallback([]instrument.Asynchronous{ctr2}, func(ctx context.Context) error {
|
_, err = m1.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr2.Observe(ctx, 7)
|
ctr2.Observe(ctx, 7)
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr2)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
want := metricdata.ResourceMetrics{
|
want := metricdata.ResourceMetrics{
|
||||||
@ -593,17 +591,18 @@ func TestUnregisterUnregisters(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
var called bool
|
var called bool
|
||||||
reg, err := m.RegisterCallback([]instrument.Asynchronous{
|
reg, err := m.RegisterCallback(
|
||||||
|
func(context.Context) error {
|
||||||
|
called = true
|
||||||
|
return nil
|
||||||
|
},
|
||||||
int64Counter,
|
int64Counter,
|
||||||
int64UpDownCounter,
|
int64UpDownCounter,
|
||||||
int64Gauge,
|
int64Gauge,
|
||||||
floag64Counter,
|
floag64Counter,
|
||||||
floag64UpDownCounter,
|
floag64UpDownCounter,
|
||||||
floag64Gauge,
|
floag64Gauge,
|
||||||
}, func(context.Context) error {
|
)
|
||||||
called = true
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
@ -646,17 +645,18 @@ func TestRegisterCallbackDropAggregations(t *testing.T) {
|
|||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
var called bool
|
var called bool
|
||||||
_, err = m.RegisterCallback([]instrument.Asynchronous{
|
_, err = m.RegisterCallback(
|
||||||
|
func(context.Context) error {
|
||||||
|
called = true
|
||||||
|
return nil
|
||||||
|
},
|
||||||
int64Counter,
|
int64Counter,
|
||||||
int64UpDownCounter,
|
int64UpDownCounter,
|
||||||
int64Gauge,
|
int64Gauge,
|
||||||
floag64Counter,
|
floag64Counter,
|
||||||
floag64UpDownCounter,
|
floag64UpDownCounter,
|
||||||
floag64Gauge,
|
floag64Gauge,
|
||||||
}, func(context.Context) error {
|
)
|
||||||
called = true
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
data, err := r.Collect(context.Background())
|
data, err := r.Collect(context.Background())
|
||||||
@ -681,11 +681,11 @@ func TestAttributeFilter(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = mtr.RegisterCallback([]instrument.Asynchronous{ctr}, func(ctx context.Context) error {
|
_, err = mtr.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr.Observe(ctx, 1.0, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
ctr.Observe(ctx, 1.0, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
||||||
ctr.Observe(ctx, 2.0, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
ctr.Observe(ctx, 2.0, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr)
|
||||||
return err
|
return err
|
||||||
},
|
},
|
||||||
wantMetric: metricdata.Metrics{
|
wantMetric: metricdata.Metrics{
|
||||||
@ -709,11 +709,11 @@ func TestAttributeFilter(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = mtr.RegisterCallback([]instrument.Asynchronous{ctr}, func(ctx context.Context) error {
|
_, err = mtr.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr.Observe(ctx, 1.0, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
ctr.Observe(ctx, 1.0, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
||||||
ctr.Observe(ctx, 2.0, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
ctr.Observe(ctx, 2.0, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr)
|
||||||
return err
|
return err
|
||||||
},
|
},
|
||||||
wantMetric: metricdata.Metrics{
|
wantMetric: metricdata.Metrics{
|
||||||
@ -737,11 +737,11 @@ func TestAttributeFilter(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = mtr.RegisterCallback([]instrument.Asynchronous{ctr}, func(ctx context.Context) error {
|
_, err = mtr.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr.Observe(ctx, 1.0, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
ctr.Observe(ctx, 1.0, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
||||||
ctr.Observe(ctx, 2.0, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
ctr.Observe(ctx, 2.0, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr)
|
||||||
return err
|
return err
|
||||||
},
|
},
|
||||||
wantMetric: metricdata.Metrics{
|
wantMetric: metricdata.Metrics{
|
||||||
@ -763,11 +763,11 @@ func TestAttributeFilter(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = mtr.RegisterCallback([]instrument.Asynchronous{ctr}, func(ctx context.Context) error {
|
_, err = mtr.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr.Observe(ctx, 10, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
ctr.Observe(ctx, 10, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
||||||
ctr.Observe(ctx, 20, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
ctr.Observe(ctx, 20, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr)
|
||||||
return err
|
return err
|
||||||
},
|
},
|
||||||
wantMetric: metricdata.Metrics{
|
wantMetric: metricdata.Metrics{
|
||||||
@ -791,11 +791,11 @@ func TestAttributeFilter(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = mtr.RegisterCallback([]instrument.Asynchronous{ctr}, func(ctx context.Context) error {
|
_, err = mtr.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr.Observe(ctx, 10, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
ctr.Observe(ctx, 10, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
||||||
ctr.Observe(ctx, 20, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
ctr.Observe(ctx, 20, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr)
|
||||||
return err
|
return err
|
||||||
},
|
},
|
||||||
wantMetric: metricdata.Metrics{
|
wantMetric: metricdata.Metrics{
|
||||||
@ -819,11 +819,11 @@ func TestAttributeFilter(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
_, err = mtr.RegisterCallback([]instrument.Asynchronous{ctr}, func(ctx context.Context) error {
|
_, err = mtr.RegisterCallback(func(ctx context.Context) error {
|
||||||
ctr.Observe(ctx, 10, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
ctr.Observe(ctx, 10, attribute.String("foo", "bar"), attribute.Int("version", 1))
|
||||||
ctr.Observe(ctx, 20, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
ctr.Observe(ctx, 20, attribute.String("foo", "bar"), attribute.Int("version", 2))
|
||||||
return nil
|
return nil
|
||||||
})
|
}, ctr)
|
||||||
return err
|
return err
|
||||||
},
|
},
|
||||||
wantMetric: metricdata.Metrics{
|
wantMetric: metricdata.Metrics{
|
||||||
|
Reference in New Issue
Block a user