1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2025-12-05 23:28:07 +02:00

Batch Observer callback support (#717)

* api/metric changes from jmacd:jmacd/batch_obs_2

* Add an SDK test

* Use a single collector method

* Two fixes

* Comments; embed AsyncRunner

* Comments

* Comment fix

* More comments

* Renaming for clarity

* Renaming for clarity (fix)

* Lint
This commit is contained in:
Joshua MacDonald
2020-05-13 16:27:52 -07:00
committed by GitHub
parent 587cde3352
commit fefdf59a0b
11 changed files with 612 additions and 88 deletions

View File

@@ -324,6 +324,60 @@ func TestObserverCollection(t *testing.T) {
}, out.Map)
}
func TestObserverBatch(t *testing.T) {
ctx := context.Background()
integrator := &correctnessIntegrator{
t: t,
}
sdk := metricsdk.NewAccumulator(integrator)
meter := metric.WrapMeterImpl(sdk, "test")
var floatObs metric.Float64Observer
var intObs metric.Int64Observer
var batch = Must(meter).NewBatchObserver(
func(result metric.BatchObserverResult) {
result.Observe(
[]kv.KeyValue{
kv.String("A", "B"),
},
floatObs.Observation(1),
floatObs.Observation(-1),
intObs.Observation(-1),
intObs.Observation(1),
)
result.Observe(
[]kv.KeyValue{
kv.String("C", "D"),
},
floatObs.Observation(-1),
)
result.Observe(
nil,
intObs.Observation(1),
intObs.Observation(1),
)
})
floatObs = batch.RegisterFloat64Observer("float.observer")
intObs = batch.RegisterInt64Observer("int.observer")
collected := sdk.Collect(ctx)
require.Equal(t, 4, collected)
require.Equal(t, 4, len(integrator.records))
out := batchTest.NewOutput(label.DefaultEncoder())
for _, rec := range integrator.records {
_ = out.AddTo(rec)
}
require.EqualValues(t, map[string]float64{
"float.observer/A=B": -1,
"float.observer/C=D": -1,
"int.observer/": 1,
"int.observer/A=B": 1,
}, out.Map)
}
func TestRecordBatch(t *testing.T) {
ctx := context.Background()
integrator := &correctnessIntegrator{