You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-09-16 09:26:25 +02:00
Remove dependency on metrics packages (#1988)
* Declare internal/metric module to version it separately Signed-off-by: Anthony J Mirabella <a9@aneurysm9.com> * Remove dependency on metrics module from soon-to-be-stable modules Signed-off-by: Anthony J Mirabella <a9@aneurysm9.com> * Add PR ID to CHANGELOG Signed-off-by: Anthony J Mirabella <a9@aneurysm9.com> * rename metric/oteltest to metric/metrictest Signed-off-by: Anthony J Mirabella <a9@aneurysm9.com> * Fix metrictest package name in CHANGELOG Signed-off-by: Anthony J Mirabella <a9@aneurysm9.com>
This commit is contained in:
committed by
GitHub
parent
135ac4b6f9
commit
7728a52135
10
.github/dependabot.yml
vendored
10
.github/dependabot.yml
vendored
@@ -186,6 +186,16 @@ updates:
|
|||||||
schedule:
|
schedule:
|
||||||
day: sunday
|
day: sunday
|
||||||
interval: weekly
|
interval: weekly
|
||||||
|
-
|
||||||
|
package-ecosystem: gomod
|
||||||
|
directory: /internal/metric
|
||||||
|
labels:
|
||||||
|
- dependencies
|
||||||
|
- go
|
||||||
|
- "Skip Changelog"
|
||||||
|
schedule:
|
||||||
|
day: sunday
|
||||||
|
interval: weekly
|
||||||
-
|
-
|
||||||
package-ecosystem: gomod
|
package-ecosystem: gomod
|
||||||
directory: /internal/tools
|
directory: /internal/tools
|
||||||
|
@@ -81,6 +81,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
|
|||||||
- Rename `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/otlp` package. (#1985)
|
- Rename `NewExporter` to `New` in the `go.opentelemetry.io/otel/exporters/otlp` package. (#1985)
|
||||||
- Rename `NewUnstartedExporter` to `NewUnstarted` in the `go.opentelemetry.io/otel/exporters/otlp` package. (#1985)
|
- Rename `NewUnstartedExporter` to `NewUnstarted` in the `go.opentelemetry.io/otel/exporters/otlp` package. (#1985)
|
||||||
- The `go.opentelemetry.io/otel/semconv` package has been moved to `go.opentelemetry.io/otel/semconv/v1.4.0` to allow for multiple [telemetry schema](https://github.com/open-telemetry/oteps/blob/main/text/0152-telemetry-schemas.md) versions to be used concurrently. (#1987)
|
- The `go.opentelemetry.io/otel/semconv` package has been moved to `go.opentelemetry.io/otel/semconv/v1.4.0` to allow for multiple [telemetry schema](https://github.com/open-telemetry/oteps/blob/main/text/0152-telemetry-schemas.md) versions to be used concurrently. (#1987)
|
||||||
|
- Metrics test helpers in `go.opentelemetry.io/otel/oteltest` have been moved to `go.opentelemetry.io/otel/metric/metrictest`. (#1988)
|
||||||
|
|
||||||
### Deprecated
|
### Deprecated
|
||||||
|
|
||||||
|
@@ -63,3 +63,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -59,3 +59,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -59,3 +59,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -60,3 +60,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -61,3 +61,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -63,3 +63,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -61,3 +61,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -62,3 +62,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -61,3 +61,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -60,3 +60,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -64,3 +64,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../otlp/otlptrac
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../../internal/metric
|
||||||
|
@@ -71,3 +71,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ./otl
|
|||||||
replace go.opentelemetry.io/otel/example/passthrough => ../../example/passthrough
|
replace go.opentelemetry.io/otel/example/passthrough => ../../example/passthrough
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ./otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ./otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -67,3 +67,5 @@ replace go.opentelemetry.io/otel/sdk/metric => ../../../sdk/metric
|
|||||||
replace go.opentelemetry.io/otel/example/passthrough => ../../../example/passthrough
|
replace go.opentelemetry.io/otel/example/passthrough => ../../../example/passthrough
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ./otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ./otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../../internal/metric
|
||||||
|
@@ -64,3 +64,5 @@ replace go.opentelemetry.io/otel/sdk/metric => ../../../../sdk/metric
|
|||||||
replace go.opentelemetry.io/otel/example/passthrough => ../../../../example/passthrough
|
replace go.opentelemetry.io/otel/example/passthrough => ../../../../example/passthrough
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../../../internal/metric
|
||||||
|
@@ -61,3 +61,5 @@ replace go.opentelemetry.io/otel/sdk/export/metric => ../../../../sdk/export/met
|
|||||||
replace go.opentelemetry.io/otel/sdk/metric => ../../../../sdk/metric
|
replace go.opentelemetry.io/otel/sdk/metric => ../../../../sdk/metric
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/trace => ../../../../trace
|
replace go.opentelemetry.io/otel/trace => ../../../../trace
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../../../internal/metric
|
||||||
|
@@ -65,3 +65,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../otlp/otlptrace
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -62,3 +62,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../otlp/otlptrac
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../../internal/metric
|
||||||
|
@@ -63,3 +63,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../otlp/otlptrac
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../../internal/metric
|
||||||
|
3
go.mod
3
go.mod
@@ -5,7 +5,6 @@ go 1.15
|
|||||||
require (
|
require (
|
||||||
github.com/google/go-cmp v0.5.6
|
github.com/google/go-cmp v0.5.6
|
||||||
github.com/stretchr/testify v1.7.0
|
github.com/stretchr/testify v1.7.0
|
||||||
go.opentelemetry.io/otel/metric v0.20.0
|
|
||||||
go.opentelemetry.io/otel/oteltest v0.20.0
|
go.opentelemetry.io/otel/oteltest v0.20.0
|
||||||
go.opentelemetry.io/otel/trace v0.20.0
|
go.opentelemetry.io/otel/trace v0.20.0
|
||||||
)
|
)
|
||||||
@@ -44,6 +43,8 @@ replace go.opentelemetry.io/otel/internal/tools => ./internal/tools
|
|||||||
|
|
||||||
replace go.opentelemetry.io/otel/sdk => ./sdk
|
replace go.opentelemetry.io/otel/sdk => ./sdk
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ./internal/metric
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/metric => ./metric
|
replace go.opentelemetry.io/otel/metric => ./metric
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/oteltest => ./oteltest
|
replace go.opentelemetry.io/otel/oteltest => ./oteltest
|
||||||
|
@@ -19,28 +19,9 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"go.opentelemetry.io/otel"
|
"go.opentelemetry.io/otel"
|
||||||
"go.opentelemetry.io/otel/attribute"
|
|
||||||
"go.opentelemetry.io/otel/internal/global"
|
"go.opentelemetry.io/otel/internal/global"
|
||||||
metricglobal "go.opentelemetry.io/otel/metric/global"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func BenchmarkGlobalInt64CounterAddNoSDK(b *testing.B) {
|
|
||||||
// Compare with BenchmarkGlobalInt64CounterAddWithSDK() in
|
|
||||||
// ../../sdk/metric/benchmark_test.go to see the overhead of the
|
|
||||||
// global no-op system against a registered SDK.
|
|
||||||
global.ResetForTest()
|
|
||||||
ctx := context.Background()
|
|
||||||
sdk := metricglobal.Meter("test")
|
|
||||||
labs := []attribute.KeyValue{attribute.String("A", "B")}
|
|
||||||
cnt := Must(sdk).NewInt64Counter("int64.counter")
|
|
||||||
|
|
||||||
b.ResetTimer()
|
|
||||||
|
|
||||||
for i := 0; i < b.N; i++ {
|
|
||||||
cnt.Add(ctx, 1, labs...)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func BenchmarkStartEndSpanNoSDK(b *testing.B) {
|
func BenchmarkStartEndSpanNoSDK(b *testing.B) {
|
||||||
// Compare with BenchmarkStartEndSpan() in
|
// Compare with BenchmarkStartEndSpan() in
|
||||||
// ../../sdk/trace/benchmark_test.go.
|
// ../../sdk/trace/benchmark_test.go.
|
||||||
|
@@ -18,7 +18,6 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
|
|
||||||
"go.opentelemetry.io/otel/metric"
|
|
||||||
"go.opentelemetry.io/otel/propagation"
|
"go.opentelemetry.io/otel/propagation"
|
||||||
"go.opentelemetry.io/otel/trace"
|
"go.opentelemetry.io/otel/trace"
|
||||||
)
|
)
|
||||||
@@ -28,10 +27,6 @@ type (
|
|||||||
tp trace.TracerProvider
|
tp trace.TracerProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
meterProviderHolder struct {
|
|
||||||
mp metric.MeterProvider
|
|
||||||
}
|
|
||||||
|
|
||||||
propagatorsHolder struct {
|
propagatorsHolder struct {
|
||||||
tm propagation.TextMapPropagator
|
tm propagation.TextMapPropagator
|
||||||
}
|
}
|
||||||
@@ -39,10 +34,8 @@ type (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
globalTracer = defaultTracerValue()
|
globalTracer = defaultTracerValue()
|
||||||
globalMeter = defaultMeterValue()
|
|
||||||
globalPropagators = defaultPropagatorsValue()
|
globalPropagators = defaultPropagatorsValue()
|
||||||
|
|
||||||
delegateMeterOnce sync.Once
|
|
||||||
delegateTraceOnce sync.Once
|
delegateTraceOnce sync.Once
|
||||||
delegateTextMapPropagatorOnce sync.Once
|
delegateTextMapPropagatorOnce sync.Once
|
||||||
)
|
)
|
||||||
@@ -69,28 +62,6 @@ func SetTracerProvider(tp trace.TracerProvider) {
|
|||||||
globalTracer.Store(tracerProviderHolder{tp: tp})
|
globalTracer.Store(tracerProviderHolder{tp: tp})
|
||||||
}
|
}
|
||||||
|
|
||||||
// MeterProvider is the internal implementation for global.MeterProvider.
|
|
||||||
func MeterProvider() metric.MeterProvider {
|
|
||||||
return globalMeter.Load().(meterProviderHolder).mp
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetMeterProvider is the internal implementation for global.SetMeterProvider.
|
|
||||||
func SetMeterProvider(mp metric.MeterProvider) {
|
|
||||||
delegateMeterOnce.Do(func() {
|
|
||||||
current := MeterProvider()
|
|
||||||
|
|
||||||
if current == mp {
|
|
||||||
// Setting the provider to the prior default is nonsense, panic.
|
|
||||||
// Panic is acceptable because we are likely still early in the
|
|
||||||
// process lifetime.
|
|
||||||
panic("invalid MeterProvider, the global instance cannot be reinstalled")
|
|
||||||
} else if def, ok := current.(*meterProvider); ok {
|
|
||||||
def.setDelegate(mp)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
globalMeter.Store(meterProviderHolder{mp: mp})
|
|
||||||
}
|
|
||||||
|
|
||||||
// TextMapPropagator is the internal implementation for global.TextMapPropagator.
|
// TextMapPropagator is the internal implementation for global.TextMapPropagator.
|
||||||
func TextMapPropagator() propagation.TextMapPropagator {
|
func TextMapPropagator() propagation.TextMapPropagator {
|
||||||
return globalPropagators.Load().(propagatorsHolder).tm
|
return globalPropagators.Load().(propagatorsHolder).tm
|
||||||
@@ -120,12 +91,6 @@ func defaultTracerValue() *atomic.Value {
|
|||||||
return v
|
return v
|
||||||
}
|
}
|
||||||
|
|
||||||
func defaultMeterValue() *atomic.Value {
|
|
||||||
v := &atomic.Value{}
|
|
||||||
v.Store(meterProviderHolder{mp: newMeterProvider()})
|
|
||||||
return v
|
|
||||||
}
|
|
||||||
|
|
||||||
func defaultPropagatorsValue() *atomic.Value {
|
func defaultPropagatorsValue() *atomic.Value {
|
||||||
v := &atomic.Value{}
|
v := &atomic.Value{}
|
||||||
v.Store(propagatorsHolder{tm: newTextMapPropagator()})
|
v.Store(propagatorsHolder{tm: newTextMapPropagator()})
|
||||||
@@ -135,9 +100,7 @@ func defaultPropagatorsValue() *atomic.Value {
|
|||||||
// ResetForTest restores the initial global state, for testing purposes.
|
// ResetForTest restores the initial global state, for testing purposes.
|
||||||
func ResetForTest() {
|
func ResetForTest() {
|
||||||
globalTracer = defaultTracerValue()
|
globalTracer = defaultTracerValue()
|
||||||
globalMeter = defaultMeterValue()
|
|
||||||
globalPropagators = defaultPropagatorsValue()
|
globalPropagators = defaultPropagatorsValue()
|
||||||
delegateMeterOnce = sync.Once{}
|
|
||||||
delegateTraceOnce = sync.Once{}
|
delegateTraceOnce = sync.Once{}
|
||||||
delegateTextMapPropagatorOnce = sync.Once{}
|
delegateTextMapPropagatorOnce = sync.Once{}
|
||||||
}
|
}
|
||||||
|
@@ -29,9 +29,6 @@ func TestResetsOfGlobalsPanic(t *testing.T) {
|
|||||||
"SetTracerProvider": func() {
|
"SetTracerProvider": func() {
|
||||||
global.SetTracerProvider(global.TracerProvider())
|
global.SetTracerProvider(global.TracerProvider())
|
||||||
},
|
},
|
||||||
"SetMeterProvider": func() {
|
|
||||||
global.SetMeterProvider(global.MeterProvider())
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for name, test := range tests {
|
for name, test := range tests {
|
||||||
|
41
internal/metric/global/benchmark_test.go
Normal file
41
internal/metric/global/benchmark_test.go
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
// Copyright The OpenTelemetry Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package global_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"go.opentelemetry.io/otel/attribute"
|
||||||
|
internalglobal "go.opentelemetry.io/otel/internal/metric/global"
|
||||||
|
metricglobal "go.opentelemetry.io/otel/metric/global"
|
||||||
|
)
|
||||||
|
|
||||||
|
func BenchmarkGlobalInt64CounterAddNoSDK(b *testing.B) {
|
||||||
|
// Compare with BenchmarkGlobalInt64CounterAddWithSDK() in
|
||||||
|
// ../../sdk/metric/benchmark_test.go to see the overhead of the
|
||||||
|
// global no-op system against a registered SDK.
|
||||||
|
internalglobal.ResetForTest()
|
||||||
|
ctx := context.Background()
|
||||||
|
sdk := metricglobal.Meter("test")
|
||||||
|
labs := []attribute.KeyValue{attribute.String("A", "B")}
|
||||||
|
cnt := Must(sdk).NewInt64Counter("int64.counter")
|
||||||
|
|
||||||
|
b.ResetTimer()
|
||||||
|
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
cnt.Add(ctx, 1, labs...)
|
||||||
|
}
|
||||||
|
}
|
@@ -18,8 +18,8 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"go.opentelemetry.io/otel/internal/global"
|
|
||||||
ottest "go.opentelemetry.io/otel/internal/internaltest"
|
ottest "go.opentelemetry.io/otel/internal/internaltest"
|
||||||
|
"go.opentelemetry.io/otel/internal/metric/global"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Ensure struct alignment prior to running tests.
|
// Ensure struct alignment prior to running tests.
|
@@ -22,11 +22,11 @@ import (
|
|||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"go.opentelemetry.io/otel/attribute"
|
"go.opentelemetry.io/otel/attribute"
|
||||||
"go.opentelemetry.io/otel/internal/global"
|
"go.opentelemetry.io/otel/internal/metric/global"
|
||||||
"go.opentelemetry.io/otel/metric"
|
"go.opentelemetry.io/otel/metric"
|
||||||
metricglobal "go.opentelemetry.io/otel/metric/global"
|
metricglobal "go.opentelemetry.io/otel/metric/global"
|
||||||
|
"go.opentelemetry.io/otel/metric/metrictest"
|
||||||
"go.opentelemetry.io/otel/metric/number"
|
"go.opentelemetry.io/otel/metric/number"
|
||||||
"go.opentelemetry.io/otel/oteltest"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var Must = metric.Must
|
var Must = metric.Must
|
||||||
@@ -66,7 +66,7 @@ func TestDirect(t *testing.T) {
|
|||||||
second.Record(ctx, 1, labels3...)
|
second.Record(ctx, 1, labels3...)
|
||||||
second.Record(ctx, 2, labels3...)
|
second.Record(ctx, 2, labels3...)
|
||||||
|
|
||||||
mock, provider := oteltest.NewMeterProvider()
|
mock, provider := metrictest.NewMeterProvider()
|
||||||
metricglobal.SetMeterProvider(provider)
|
metricglobal.SetMeterProvider(provider)
|
||||||
|
|
||||||
counter.Add(ctx, 1, labels1...)
|
counter.Add(ctx, 1, labels1...)
|
||||||
@@ -75,56 +75,56 @@ func TestDirect(t *testing.T) {
|
|||||||
|
|
||||||
mock.RunAsyncInstruments()
|
mock.RunAsyncInstruments()
|
||||||
|
|
||||||
measurements := oteltest.AsStructs(mock.MeasurementBatches)
|
measurements := metrictest.AsStructs(mock.MeasurementBatches)
|
||||||
|
|
||||||
require.EqualValues(t,
|
require.EqualValues(t,
|
||||||
[]oteltest.Measured{
|
[]metrictest.Measured{
|
||||||
{
|
{
|
||||||
Name: "test.counter",
|
Name: "test.counter",
|
||||||
InstrumentationName: "test1",
|
InstrumentationName: "test1",
|
||||||
InstrumentationVersion: "semver:v1.0.0",
|
InstrumentationVersion: "semver:v1.0.0",
|
||||||
Labels: oteltest.LabelsToMap(labels1...),
|
Labels: metrictest.LabelsToMap(labels1...),
|
||||||
Number: asInt(1),
|
Number: asInt(1),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "test.valuerecorder",
|
Name: "test.valuerecorder",
|
||||||
InstrumentationName: "test1",
|
InstrumentationName: "test1",
|
||||||
InstrumentationVersion: "semver:v1.0.0",
|
InstrumentationVersion: "semver:v1.0.0",
|
||||||
Labels: oteltest.LabelsToMap(labels1...),
|
Labels: metrictest.LabelsToMap(labels1...),
|
||||||
Number: asFloat(3),
|
Number: asFloat(3),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "test.second",
|
Name: "test.second",
|
||||||
InstrumentationName: "test2",
|
InstrumentationName: "test2",
|
||||||
Labels: oteltest.LabelsToMap(labels3...),
|
Labels: metrictest.LabelsToMap(labels3...),
|
||||||
Number: asFloat(3),
|
Number: asFloat(3),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "test.valueobserver.float",
|
Name: "test.valueobserver.float",
|
||||||
InstrumentationName: "test1",
|
InstrumentationName: "test1",
|
||||||
InstrumentationVersion: "semver:v1.0.0",
|
InstrumentationVersion: "semver:v1.0.0",
|
||||||
Labels: oteltest.LabelsToMap(labels1...),
|
Labels: metrictest.LabelsToMap(labels1...),
|
||||||
Number: asFloat(1),
|
Number: asFloat(1),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "test.valueobserver.float",
|
Name: "test.valueobserver.float",
|
||||||
InstrumentationName: "test1",
|
InstrumentationName: "test1",
|
||||||
InstrumentationVersion: "semver:v1.0.0",
|
InstrumentationVersion: "semver:v1.0.0",
|
||||||
Labels: oteltest.LabelsToMap(labels2...),
|
Labels: metrictest.LabelsToMap(labels2...),
|
||||||
Number: asFloat(2),
|
Number: asFloat(2),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "test.valueobserver.int",
|
Name: "test.valueobserver.int",
|
||||||
InstrumentationName: "test1",
|
InstrumentationName: "test1",
|
||||||
InstrumentationVersion: "semver:v1.0.0",
|
InstrumentationVersion: "semver:v1.0.0",
|
||||||
Labels: oteltest.LabelsToMap(labels1...),
|
Labels: metrictest.LabelsToMap(labels1...),
|
||||||
Number: asInt(1),
|
Number: asInt(1),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "test.valueobserver.int",
|
Name: "test.valueobserver.int",
|
||||||
InstrumentationName: "test1",
|
InstrumentationName: "test1",
|
||||||
InstrumentationVersion: "semver:v1.0.0",
|
InstrumentationVersion: "semver:v1.0.0",
|
||||||
Labels: oteltest.LabelsToMap(labels2...),
|
Labels: metrictest.LabelsToMap(labels2...),
|
||||||
Number: asInt(2),
|
Number: asInt(2),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -151,28 +151,28 @@ func TestBound(t *testing.T) {
|
|||||||
boundM.Record(ctx, 1)
|
boundM.Record(ctx, 1)
|
||||||
boundM.Record(ctx, 2)
|
boundM.Record(ctx, 2)
|
||||||
|
|
||||||
mock, provider := oteltest.NewMeterProvider()
|
mock, provider := metrictest.NewMeterProvider()
|
||||||
metricglobal.SetMeterProvider(provider)
|
metricglobal.SetMeterProvider(provider)
|
||||||
|
|
||||||
boundC.Add(ctx, 1)
|
boundC.Add(ctx, 1)
|
||||||
boundM.Record(ctx, 3)
|
boundM.Record(ctx, 3)
|
||||||
|
|
||||||
require.EqualValues(t,
|
require.EqualValues(t,
|
||||||
[]oteltest.Measured{
|
[]metrictest.Measured{
|
||||||
{
|
{
|
||||||
Name: "test.counter",
|
Name: "test.counter",
|
||||||
InstrumentationName: "test",
|
InstrumentationName: "test",
|
||||||
Labels: oteltest.LabelsToMap(labels1...),
|
Labels: metrictest.LabelsToMap(labels1...),
|
||||||
Number: asFloat(1),
|
Number: asFloat(1),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Name: "test.valuerecorder",
|
Name: "test.valuerecorder",
|
||||||
InstrumentationName: "test",
|
InstrumentationName: "test",
|
||||||
Labels: oteltest.LabelsToMap(labels1...),
|
Labels: metrictest.LabelsToMap(labels1...),
|
||||||
Number: asInt(3),
|
Number: asInt(3),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
oteltest.AsStructs(mock.MeasurementBatches))
|
metrictest.AsStructs(mock.MeasurementBatches))
|
||||||
|
|
||||||
boundC.Unbind()
|
boundC.Unbind()
|
||||||
boundM.Unbind()
|
boundM.Unbind()
|
||||||
@@ -199,7 +199,7 @@ func TestUnbindThenRecordOne(t *testing.T) {
|
|||||||
global.ResetForTest()
|
global.ResetForTest()
|
||||||
|
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
mock, provider := oteltest.NewMeterProvider()
|
mock, provider := metrictest.NewMeterProvider()
|
||||||
|
|
||||||
meter := metricglobal.Meter("test")
|
meter := metricglobal.Meter("test")
|
||||||
counter := Must(meter).NewInt64Counter("test.counter")
|
counter := Must(meter).NewInt64Counter("test.counter")
|
||||||
@@ -238,7 +238,7 @@ func TestErrorInDeferredConstructor(t *testing.T) {
|
|||||||
c1 := Must(meter).NewInt64Counter("test")
|
c1 := Must(meter).NewInt64Counter("test")
|
||||||
c2 := Must(meter).NewInt64Counter("test")
|
c2 := Must(meter).NewInt64Counter("test")
|
||||||
|
|
||||||
_, provider := oteltest.NewMeterProvider()
|
_, provider := metrictest.NewMeterProvider()
|
||||||
sdk := &meterProviderWithConstructorError{provider}
|
sdk := &meterProviderWithConstructorError{provider}
|
||||||
|
|
||||||
require.Panics(t, func() {
|
require.Panics(t, func() {
|
||||||
@@ -264,7 +264,7 @@ func TestImplementationIndirection(t *testing.T) {
|
|||||||
ival := counter.Measurement(1).SyncImpl().Implementation()
|
ival := counter.Measurement(1).SyncImpl().Implementation()
|
||||||
require.NotNil(t, ival)
|
require.NotNil(t, ival)
|
||||||
|
|
||||||
_, ok := ival.(*oteltest.Sync)
|
_, ok := ival.(*metrictest.Sync)
|
||||||
require.False(t, ok)
|
require.False(t, ok)
|
||||||
|
|
||||||
// Async: no SDK yet
|
// Async: no SDK yet
|
||||||
@@ -276,11 +276,11 @@ func TestImplementationIndirection(t *testing.T) {
|
|||||||
ival = valueobserver.AsyncImpl().Implementation()
|
ival = valueobserver.AsyncImpl().Implementation()
|
||||||
require.NotNil(t, ival)
|
require.NotNil(t, ival)
|
||||||
|
|
||||||
_, ok = ival.(*oteltest.Async)
|
_, ok = ival.(*metrictest.Async)
|
||||||
require.False(t, ok)
|
require.False(t, ok)
|
||||||
|
|
||||||
// Register the SDK
|
// Register the SDK
|
||||||
_, provider := oteltest.NewMeterProvider()
|
_, provider := metrictest.NewMeterProvider()
|
||||||
metricglobal.SetMeterProvider(provider)
|
metricglobal.SetMeterProvider(provider)
|
||||||
|
|
||||||
// Repeat the above tests
|
// Repeat the above tests
|
||||||
@@ -289,14 +289,14 @@ func TestImplementationIndirection(t *testing.T) {
|
|||||||
ival = counter.Measurement(1).SyncImpl().Implementation()
|
ival = counter.Measurement(1).SyncImpl().Implementation()
|
||||||
require.NotNil(t, ival)
|
require.NotNil(t, ival)
|
||||||
|
|
||||||
_, ok = ival.(*oteltest.Sync)
|
_, ok = ival.(*metrictest.Sync)
|
||||||
require.True(t, ok)
|
require.True(t, ok)
|
||||||
|
|
||||||
// Async
|
// Async
|
||||||
ival = valueobserver.AsyncImpl().Implementation()
|
ival = valueobserver.AsyncImpl().Implementation()
|
||||||
require.NotNil(t, ival)
|
require.NotNil(t, ival)
|
||||||
|
|
||||||
_, ok = ival.(*oteltest.Async)
|
_, ok = ival.(*metrictest.Async)
|
||||||
require.True(t, ok)
|
require.True(t, ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -309,19 +309,19 @@ func TestRecordBatchMock(t *testing.T) {
|
|||||||
|
|
||||||
meter.RecordBatch(context.Background(), nil, counter.Measurement(1))
|
meter.RecordBatch(context.Background(), nil, counter.Measurement(1))
|
||||||
|
|
||||||
mock, provider := oteltest.NewMeterProvider()
|
mock, provider := metrictest.NewMeterProvider()
|
||||||
metricglobal.SetMeterProvider(provider)
|
metricglobal.SetMeterProvider(provider)
|
||||||
|
|
||||||
meter.RecordBatch(context.Background(), nil, counter.Measurement(1))
|
meter.RecordBatch(context.Background(), nil, counter.Measurement(1))
|
||||||
|
|
||||||
require.EqualValues(t,
|
require.EqualValues(t,
|
||||||
[]oteltest.Measured{
|
[]metrictest.Measured{
|
||||||
{
|
{
|
||||||
Name: "test.counter",
|
Name: "test.counter",
|
||||||
InstrumentationName: "builtin",
|
InstrumentationName: "builtin",
|
||||||
Labels: oteltest.LabelsToMap(),
|
Labels: metrictest.LabelsToMap(),
|
||||||
Number: asInt(1),
|
Number: asInt(1),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
oteltest.AsStructs(mock.MeasurementBatches))
|
metrictest.AsStructs(mock.MeasurementBatches))
|
||||||
}
|
}
|
66
internal/metric/global/metric.go
Normal file
66
internal/metric/global/metric.go
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
// Copyright The OpenTelemetry Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package global
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sync"
|
||||||
|
"sync/atomic"
|
||||||
|
|
||||||
|
"go.opentelemetry.io/otel/metric"
|
||||||
|
)
|
||||||
|
|
||||||
|
type meterProviderHolder struct {
|
||||||
|
mp metric.MeterProvider
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
globalMeter = defaultMeterValue()
|
||||||
|
|
||||||
|
delegateMeterOnce sync.Once
|
||||||
|
)
|
||||||
|
|
||||||
|
// MeterProvider is the internal implementation for global.MeterProvider.
|
||||||
|
func MeterProvider() metric.MeterProvider {
|
||||||
|
return globalMeter.Load().(meterProviderHolder).mp
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetMeterProvider is the internal implementation for global.SetMeterProvider.
|
||||||
|
func SetMeterProvider(mp metric.MeterProvider) {
|
||||||
|
delegateMeterOnce.Do(func() {
|
||||||
|
current := MeterProvider()
|
||||||
|
|
||||||
|
if current == mp {
|
||||||
|
// Setting the provider to the prior default is nonsense, panic.
|
||||||
|
// Panic is acceptable because we are likely still early in the
|
||||||
|
// process lifetime.
|
||||||
|
panic("invalid MeterProvider, the global instance cannot be reinstalled")
|
||||||
|
} else if def, ok := current.(*meterProvider); ok {
|
||||||
|
def.setDelegate(mp)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
globalMeter.Store(meterProviderHolder{mp: mp})
|
||||||
|
}
|
||||||
|
|
||||||
|
func defaultMeterValue() *atomic.Value {
|
||||||
|
v := &atomic.Value{}
|
||||||
|
v.Store(meterProviderHolder{mp: newMeterProvider()})
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResetForTest restores the initial global state, for testing purposes.
|
||||||
|
func ResetForTest() {
|
||||||
|
globalMeter = defaultMeterValue()
|
||||||
|
delegateMeterOnce = sync.Once{}
|
||||||
|
}
|
45
internal/metric/global/state_test.go
Normal file
45
internal/metric/global/state_test.go
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
// Copyright The OpenTelemetry Authors
|
||||||
|
//
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package global_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
internalglobal "go.opentelemetry.io/otel/internal/metric/global"
|
||||||
|
metricglobal "go.opentelemetry.io/otel/metric/global"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestResetsOfGlobalsPanic(t *testing.T) {
|
||||||
|
internalglobal.ResetForTest()
|
||||||
|
tests := map[string]func(){
|
||||||
|
"SetMeterProvider": func() {
|
||||||
|
metricglobal.SetMeterProvider(metricglobal.GetMeterProvider())
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
for name, test := range tests {
|
||||||
|
shouldPanic(t, name, test)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func shouldPanic(t *testing.T, name string, f func()) {
|
||||||
|
defer func() {
|
||||||
|
if r := recover(); r == nil {
|
||||||
|
t.Errorf("calling %s with default global did not panic", name)
|
||||||
|
}
|
||||||
|
}()
|
||||||
|
|
||||||
|
f()
|
||||||
|
}
|
63
internal/metric/go.mod
Normal file
63
internal/metric/go.mod
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
module go.opentelemetry.io/otel/internal/metric
|
||||||
|
|
||||||
|
go 1.15
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/stretchr/testify v1.7.0
|
||||||
|
go.opentelemetry.io/otel v0.20.0
|
||||||
|
go.opentelemetry.io/otel/metric v0.20.0
|
||||||
|
)
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel => ../..
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/metric => ../../metric
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ./
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/bridge/opencensus => ../../bridge/opencensus
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/bridge/opentracing => ../../bridge/opentracing
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/example/jaeger => ../../example/jaeger
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/example/namedtracer => ../../example/namedtracer
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/example/opencensus => ../../example/opencensus
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/example/otel-collector => ../../example/otel-collector
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/example/passthrough => ../../example/passthrough
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/example/prom-collector => ../../example/prom-collector
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/example/prometheus => ../../example/prometheus
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/example/zipkin => ../../example/zipkin
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/exporters/metric/prometheus => ../../exporters/metric/prometheus
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/exporters/otlp => ../../exporters/otlp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otlp/otlptrace
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/exporters/stdout => ../../exporters/stdout
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/exporters/trace/jaeger => ../../exporters/trace/jaeger
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/exporters/trace/zipkin => ../../exporters/trace/zipkin
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/tools => ../tools
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/oteltest => ../../oteltest
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/sdk => ../../sdk
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/sdk/export/metric => ../../sdk/export/metric
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/sdk/metric => ../../sdk/metric
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/trace => ../../trace
|
15
internal/metric/go.sum
Normal file
15
internal/metric/go.sum
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
|
||||||
|
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||||
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
@@ -63,3 +63,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../metric
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
package global // import "go.opentelemetry.io/otel/metric/global"
|
package global // import "go.opentelemetry.io/otel/metric/global"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"go.opentelemetry.io/otel/internal/global"
|
"go.opentelemetry.io/otel/internal/metric/global"
|
||||||
"go.opentelemetry.io/otel/metric"
|
"go.opentelemetry.io/otel/metric"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -50,7 +50,7 @@ require (
|
|||||||
github.com/google/go-cmp v0.5.6
|
github.com/google/go-cmp v0.5.6
|
||||||
github.com/stretchr/testify v1.7.0
|
github.com/stretchr/testify v1.7.0
|
||||||
go.opentelemetry.io/otel v0.20.0
|
go.opentelemetry.io/otel v0.20.0
|
||||||
go.opentelemetry.io/otel/oteltest v0.20.0
|
go.opentelemetry.io/otel/internal/metric v0.20.0
|
||||||
)
|
)
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/example/passthrough => ../example/passthrough
|
replace go.opentelemetry.io/otel/example/passthrough => ../example/passthrough
|
||||||
@@ -60,3 +60,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../exporters/otlp/o
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../internal/metric
|
||||||
|
@@ -21,9 +21,9 @@ import (
|
|||||||
|
|
||||||
"go.opentelemetry.io/otel/attribute"
|
"go.opentelemetry.io/otel/attribute"
|
||||||
"go.opentelemetry.io/otel/metric"
|
"go.opentelemetry.io/otel/metric"
|
||||||
|
"go.opentelemetry.io/otel/metric/metrictest"
|
||||||
"go.opentelemetry.io/otel/metric/number"
|
"go.opentelemetry.io/otel/metric/number"
|
||||||
"go.opentelemetry.io/otel/metric/unit"
|
"go.opentelemetry.io/otel/metric/unit"
|
||||||
"go.opentelemetry.io/otel/oteltest"
|
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
@@ -119,14 +119,14 @@ func TestPrecomputedSum(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkSyncBatches(ctx context.Context, t *testing.T, labels []attribute.KeyValue, mock *oteltest.MeterImpl, nkind number.Kind, mkind metric.InstrumentKind, instrument metric.InstrumentImpl, expected ...float64) {
|
func checkSyncBatches(ctx context.Context, t *testing.T, labels []attribute.KeyValue, mock *metrictest.MeterImpl, nkind number.Kind, mkind metric.InstrumentKind, instrument metric.InstrumentImpl, expected ...float64) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
batchesCount := len(mock.MeasurementBatches)
|
batchesCount := len(mock.MeasurementBatches)
|
||||||
if len(mock.MeasurementBatches) != len(expected) {
|
if len(mock.MeasurementBatches) != len(expected) {
|
||||||
t.Errorf("Expected %d recorded measurement batches, got %d", batchesCount, len(mock.MeasurementBatches))
|
t.Errorf("Expected %d recorded measurement batches, got %d", batchesCount, len(mock.MeasurementBatches))
|
||||||
}
|
}
|
||||||
recorded := oteltest.AsStructs(mock.MeasurementBatches)
|
recorded := metrictest.AsStructs(mock.MeasurementBatches)
|
||||||
|
|
||||||
for i, batch := range mock.MeasurementBatches {
|
for i, batch := range mock.MeasurementBatches {
|
||||||
if len(batch.Measurements) != 1 {
|
if len(batch.Measurements) != 1 {
|
||||||
@@ -136,11 +136,11 @@ func checkSyncBatches(ctx context.Context, t *testing.T, labels []attribute.KeyV
|
|||||||
measurement := batch.Measurements[0]
|
measurement := batch.Measurements[0]
|
||||||
descriptor := measurement.Instrument.Descriptor()
|
descriptor := measurement.Instrument.Descriptor()
|
||||||
|
|
||||||
expected := oteltest.Measured{
|
expected := metrictest.Measured{
|
||||||
Name: descriptor.Name(),
|
Name: descriptor.Name(),
|
||||||
InstrumentationName: descriptor.InstrumentationName(),
|
InstrumentationName: descriptor.InstrumentationName(),
|
||||||
Labels: oteltest.LabelsToMap(labels...),
|
Labels: metrictest.LabelsToMap(labels...),
|
||||||
Number: oteltest.ResolveNumberByKind(t, nkind, expected[i]),
|
Number: metrictest.ResolveNumberByKind(t, nkind, expected[i]),
|
||||||
}
|
}
|
||||||
require.Equal(t, expected, recorded[i])
|
require.Equal(t, expected, recorded[i])
|
||||||
}
|
}
|
||||||
@@ -308,7 +308,7 @@ func TestCounter(t *testing.T) {
|
|||||||
// N.B. the API does not check for negative
|
// N.B. the API does not check for negative
|
||||||
// values, that's the SDK's responsibility.
|
// values, that's the SDK's responsibility.
|
||||||
t.Run("float64 counter", func(t *testing.T) {
|
t.Run("float64 counter", func(t *testing.T) {
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
c := Must(meter).NewFloat64Counter("test.counter.float")
|
c := Must(meter).NewFloat64Counter("test.counter.float")
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
labels := []attribute.KeyValue{attribute.String("A", "B")}
|
labels := []attribute.KeyValue{attribute.String("A", "B")}
|
||||||
@@ -321,7 +321,7 @@ func TestCounter(t *testing.T) {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
t.Run("int64 counter", func(t *testing.T) {
|
t.Run("int64 counter", func(t *testing.T) {
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
c := Must(meter).NewInt64Counter("test.counter.int")
|
c := Must(meter).NewInt64Counter("test.counter.int")
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
labels := []attribute.KeyValue{attribute.String("A", "B"), attribute.String("C", "D")}
|
labels := []attribute.KeyValue{attribute.String("A", "B"), attribute.String("C", "D")}
|
||||||
@@ -335,7 +335,7 @@ func TestCounter(t *testing.T) {
|
|||||||
|
|
||||||
})
|
})
|
||||||
t.Run("int64 updowncounter", func(t *testing.T) {
|
t.Run("int64 updowncounter", func(t *testing.T) {
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
c := Must(meter).NewInt64UpDownCounter("test.updowncounter.int")
|
c := Must(meter).NewInt64UpDownCounter("test.updowncounter.int")
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
labels := []attribute.KeyValue{attribute.String("A", "B"), attribute.String("C", "D")}
|
labels := []attribute.KeyValue{attribute.String("A", "B"), attribute.String("C", "D")}
|
||||||
@@ -348,7 +348,7 @@ func TestCounter(t *testing.T) {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
t.Run("float64 updowncounter", func(t *testing.T) {
|
t.Run("float64 updowncounter", func(t *testing.T) {
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
c := Must(meter).NewFloat64UpDownCounter("test.updowncounter.float")
|
c := Must(meter).NewFloat64UpDownCounter("test.updowncounter.float")
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
labels := []attribute.KeyValue{attribute.String("A", "B"), attribute.String("C", "D")}
|
labels := []attribute.KeyValue{attribute.String("A", "B"), attribute.String("C", "D")}
|
||||||
@@ -364,7 +364,7 @@ func TestCounter(t *testing.T) {
|
|||||||
|
|
||||||
func TestValueRecorder(t *testing.T) {
|
func TestValueRecorder(t *testing.T) {
|
||||||
t.Run("float64 valuerecorder", func(t *testing.T) {
|
t.Run("float64 valuerecorder", func(t *testing.T) {
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
m := Must(meter).NewFloat64ValueRecorder("test.valuerecorder.float")
|
m := Must(meter).NewFloat64ValueRecorder("test.valuerecorder.float")
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
labels := []attribute.KeyValue{}
|
labels := []attribute.KeyValue{}
|
||||||
@@ -377,7 +377,7 @@ func TestValueRecorder(t *testing.T) {
|
|||||||
)
|
)
|
||||||
})
|
})
|
||||||
t.Run("int64 valuerecorder", func(t *testing.T) {
|
t.Run("int64 valuerecorder", func(t *testing.T) {
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
m := Must(meter).NewInt64ValueRecorder("test.valuerecorder.int")
|
m := Must(meter).NewInt64ValueRecorder("test.valuerecorder.int")
|
||||||
ctx := context.Background()
|
ctx := context.Background()
|
||||||
labels := []attribute.KeyValue{attribute.Int("I", 1)}
|
labels := []attribute.KeyValue{attribute.Int("I", 1)}
|
||||||
@@ -394,7 +394,7 @@ func TestValueRecorder(t *testing.T) {
|
|||||||
func TestObserverInstruments(t *testing.T) {
|
func TestObserverInstruments(t *testing.T) {
|
||||||
t.Run("float valueobserver", func(t *testing.T) {
|
t.Run("float valueobserver", func(t *testing.T) {
|
||||||
labels := []attribute.KeyValue{attribute.String("O", "P")}
|
labels := []attribute.KeyValue{attribute.String("O", "P")}
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
o := Must(meter).NewFloat64ValueObserver("test.valueobserver.float", func(_ context.Context, result metric.Float64ObserverResult) {
|
o := Must(meter).NewFloat64ValueObserver("test.valueobserver.float", func(_ context.Context, result metric.Float64ObserverResult) {
|
||||||
result.Observe(42.1, labels...)
|
result.Observe(42.1, labels...)
|
||||||
})
|
})
|
||||||
@@ -405,7 +405,7 @@ func TestObserverInstruments(t *testing.T) {
|
|||||||
})
|
})
|
||||||
t.Run("int valueobserver", func(t *testing.T) {
|
t.Run("int valueobserver", func(t *testing.T) {
|
||||||
labels := []attribute.KeyValue{}
|
labels := []attribute.KeyValue{}
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
o := Must(meter).NewInt64ValueObserver("test.observer.int", func(_ context.Context, result metric.Int64ObserverResult) {
|
o := Must(meter).NewInt64ValueObserver("test.observer.int", func(_ context.Context, result metric.Int64ObserverResult) {
|
||||||
result.Observe(-142, labels...)
|
result.Observe(-142, labels...)
|
||||||
})
|
})
|
||||||
@@ -416,7 +416,7 @@ func TestObserverInstruments(t *testing.T) {
|
|||||||
})
|
})
|
||||||
t.Run("float sumobserver", func(t *testing.T) {
|
t.Run("float sumobserver", func(t *testing.T) {
|
||||||
labels := []attribute.KeyValue{attribute.String("O", "P")}
|
labels := []attribute.KeyValue{attribute.String("O", "P")}
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
o := Must(meter).NewFloat64SumObserver("test.sumobserver.float", func(_ context.Context, result metric.Float64ObserverResult) {
|
o := Must(meter).NewFloat64SumObserver("test.sumobserver.float", func(_ context.Context, result metric.Float64ObserverResult) {
|
||||||
result.Observe(42.1, labels...)
|
result.Observe(42.1, labels...)
|
||||||
})
|
})
|
||||||
@@ -427,7 +427,7 @@ func TestObserverInstruments(t *testing.T) {
|
|||||||
})
|
})
|
||||||
t.Run("int sumobserver", func(t *testing.T) {
|
t.Run("int sumobserver", func(t *testing.T) {
|
||||||
labels := []attribute.KeyValue{}
|
labels := []attribute.KeyValue{}
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
o := Must(meter).NewInt64SumObserver("test.observer.int", func(_ context.Context, result metric.Int64ObserverResult) {
|
o := Must(meter).NewInt64SumObserver("test.observer.int", func(_ context.Context, result metric.Int64ObserverResult) {
|
||||||
result.Observe(-142, labels...)
|
result.Observe(-142, labels...)
|
||||||
})
|
})
|
||||||
@@ -438,7 +438,7 @@ func TestObserverInstruments(t *testing.T) {
|
|||||||
})
|
})
|
||||||
t.Run("float updownsumobserver", func(t *testing.T) {
|
t.Run("float updownsumobserver", func(t *testing.T) {
|
||||||
labels := []attribute.KeyValue{attribute.String("O", "P")}
|
labels := []attribute.KeyValue{attribute.String("O", "P")}
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
o := Must(meter).NewFloat64UpDownSumObserver("test.updownsumobserver.float", func(_ context.Context, result metric.Float64ObserverResult) {
|
o := Must(meter).NewFloat64UpDownSumObserver("test.updownsumobserver.float", func(_ context.Context, result metric.Float64ObserverResult) {
|
||||||
result.Observe(42.1, labels...)
|
result.Observe(42.1, labels...)
|
||||||
})
|
})
|
||||||
@@ -449,7 +449,7 @@ func TestObserverInstruments(t *testing.T) {
|
|||||||
})
|
})
|
||||||
t.Run("int updownsumobserver", func(t *testing.T) {
|
t.Run("int updownsumobserver", func(t *testing.T) {
|
||||||
labels := []attribute.KeyValue{}
|
labels := []attribute.KeyValue{}
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
o := Must(meter).NewInt64UpDownSumObserver("test.observer.int", func(_ context.Context, result metric.Int64ObserverResult) {
|
o := Must(meter).NewInt64UpDownSumObserver("test.observer.int", func(_ context.Context, result metric.Int64ObserverResult) {
|
||||||
result.Observe(-142, labels...)
|
result.Observe(-142, labels...)
|
||||||
})
|
})
|
||||||
@@ -461,7 +461,7 @@ func TestObserverInstruments(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestBatchObserverInstruments(t *testing.T) {
|
func TestBatchObserverInstruments(t *testing.T) {
|
||||||
mockSDK, meter := oteltest.NewMeter()
|
mockSDK, meter := metrictest.NewMeter()
|
||||||
|
|
||||||
var obs1 metric.Int64ValueObserver
|
var obs1 metric.Int64ValueObserver
|
||||||
var obs2 metric.Float64ValueObserver
|
var obs2 metric.Float64ValueObserver
|
||||||
@@ -486,8 +486,8 @@ func TestBatchObserverInstruments(t *testing.T) {
|
|||||||
|
|
||||||
require.Len(t, mockSDK.MeasurementBatches, 1)
|
require.Len(t, mockSDK.MeasurementBatches, 1)
|
||||||
|
|
||||||
impl1 := obs1.AsyncImpl().Implementation().(*oteltest.Async)
|
impl1 := obs1.AsyncImpl().Implementation().(*metrictest.Async)
|
||||||
impl2 := obs2.AsyncImpl().Implementation().(*oteltest.Async)
|
impl2 := obs2.AsyncImpl().Implementation().(*metrictest.Async)
|
||||||
|
|
||||||
require.NotNil(t, impl1)
|
require.NotNil(t, impl1)
|
||||||
require.NotNil(t, impl2)
|
require.NotNil(t, impl2)
|
||||||
@@ -497,21 +497,21 @@ func TestBatchObserverInstruments(t *testing.T) {
|
|||||||
require.Len(t, got.Measurements, 2)
|
require.Len(t, got.Measurements, 2)
|
||||||
|
|
||||||
m1 := got.Measurements[0]
|
m1 := got.Measurements[0]
|
||||||
require.Equal(t, impl1, m1.Instrument.Implementation().(*oteltest.Async))
|
require.Equal(t, impl1, m1.Instrument.Implementation().(*metrictest.Async))
|
||||||
require.Equal(t, 0, m1.Number.CompareNumber(number.Int64Kind, oteltest.ResolveNumberByKind(t, number.Int64Kind, 42)))
|
require.Equal(t, 0, m1.Number.CompareNumber(number.Int64Kind, metrictest.ResolveNumberByKind(t, number.Int64Kind, 42)))
|
||||||
|
|
||||||
m2 := got.Measurements[1]
|
m2 := got.Measurements[1]
|
||||||
require.Equal(t, impl2, m2.Instrument.Implementation().(*oteltest.Async))
|
require.Equal(t, impl2, m2.Instrument.Implementation().(*metrictest.Async))
|
||||||
require.Equal(t, 0, m2.Number.CompareNumber(number.Float64Kind, oteltest.ResolveNumberByKind(t, number.Float64Kind, 42)))
|
require.Equal(t, 0, m2.Number.CompareNumber(number.Float64Kind, metrictest.ResolveNumberByKind(t, number.Float64Kind, 42)))
|
||||||
}
|
}
|
||||||
|
|
||||||
func checkObserverBatch(t *testing.T, labels []attribute.KeyValue, mock *oteltest.MeterImpl, nkind number.Kind, mkind metric.InstrumentKind, observer metric.AsyncImpl, expected float64) {
|
func checkObserverBatch(t *testing.T, labels []attribute.KeyValue, mock *metrictest.MeterImpl, nkind number.Kind, mkind metric.InstrumentKind, observer metric.AsyncImpl, expected float64) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
assert.Len(t, mock.MeasurementBatches, 1)
|
assert.Len(t, mock.MeasurementBatches, 1)
|
||||||
if len(mock.MeasurementBatches) < 1 {
|
if len(mock.MeasurementBatches) < 1 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
o := observer.Implementation().(*oteltest.Async)
|
o := observer.Implementation().(*metrictest.Async)
|
||||||
if !assert.NotNil(t, o) {
|
if !assert.NotNil(t, o) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -523,8 +523,8 @@ func checkObserverBatch(t *testing.T, labels []attribute.KeyValue, mock *oteltes
|
|||||||
}
|
}
|
||||||
measurement := got.Measurements[0]
|
measurement := got.Measurements[0]
|
||||||
require.Equal(t, mkind, measurement.Instrument.Descriptor().InstrumentKind())
|
require.Equal(t, mkind, measurement.Instrument.Descriptor().InstrumentKind())
|
||||||
assert.Equal(t, o, measurement.Instrument.Implementation().(*oteltest.Async))
|
assert.Equal(t, o, measurement.Instrument.Implementation().(*metrictest.Async))
|
||||||
ft := oteltest.ResolveNumberByKind(t, nkind, expected)
|
ft := metrictest.ResolveNumberByKind(t, nkind, expected)
|
||||||
assert.Equal(t, 0, measurement.Number.CompareNumber(nkind, ft))
|
assert.Equal(t, 0, measurement.Number.CompareNumber(nkind, ft))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -561,7 +561,7 @@ func TestWrappedInstrumentError(t *testing.T) {
|
|||||||
|
|
||||||
func TestNilCallbackObserverNoop(t *testing.T) {
|
func TestNilCallbackObserverNoop(t *testing.T) {
|
||||||
// Tests that a nil callback yields a no-op observer without error.
|
// Tests that a nil callback yields a no-op observer without error.
|
||||||
_, meter := oteltest.NewMeter()
|
_, meter := metrictest.NewMeter()
|
||||||
|
|
||||||
observer := Must(meter).NewInt64ValueObserver("test.observer", nil)
|
observer := Must(meter).NewInt64ValueObserver("test.observer", nil)
|
||||||
|
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
package oteltest
|
package metrictest
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
@@ -12,7 +12,7 @@
|
|||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
package oteltest // import "go.opentelemetry.io/otel/oteltest"
|
package metrictest // import "go.opentelemetry.io/otel/metric/metrictest"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
@@ -22,8 +22,8 @@ import (
|
|||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"go.opentelemetry.io/otel/metric"
|
"go.opentelemetry.io/otel/metric"
|
||||||
|
"go.opentelemetry.io/otel/metric/metrictest"
|
||||||
"go.opentelemetry.io/otel/metric/registry"
|
"go.opentelemetry.io/otel/metric/registry"
|
||||||
"go.opentelemetry.io/otel/oteltest"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
@@ -72,7 +72,7 @@ func unwrap(impl interface{}, err error) (metric.InstrumentImpl, error) {
|
|||||||
|
|
||||||
func TestRegistrySameInstruments(t *testing.T) {
|
func TestRegistrySameInstruments(t *testing.T) {
|
||||||
for _, nf := range allNew {
|
for _, nf := range allNew {
|
||||||
_, provider := oteltest.NewMeterProvider()
|
_, provider := metrictest.NewMeterProvider()
|
||||||
|
|
||||||
meter := provider.Meter("meter")
|
meter := provider.Meter("meter")
|
||||||
inst1, err1 := nf(meter, "this")
|
inst1, err1 := nf(meter, "this")
|
||||||
@@ -86,7 +86,7 @@ func TestRegistrySameInstruments(t *testing.T) {
|
|||||||
|
|
||||||
func TestRegistryDifferentNamespace(t *testing.T) {
|
func TestRegistryDifferentNamespace(t *testing.T) {
|
||||||
for _, nf := range allNew {
|
for _, nf := range allNew {
|
||||||
_, provider := oteltest.NewMeterProvider()
|
_, provider := metrictest.NewMeterProvider()
|
||||||
|
|
||||||
meter1 := provider.Meter("meter1")
|
meter1 := provider.Meter("meter1")
|
||||||
meter2 := provider.Meter("meter2")
|
meter2 := provider.Meter("meter2")
|
||||||
@@ -101,7 +101,7 @@ func TestRegistryDifferentNamespace(t *testing.T) {
|
|||||||
|
|
||||||
func TestRegistryDiffInstruments(t *testing.T) {
|
func TestRegistryDiffInstruments(t *testing.T) {
|
||||||
for origName, origf := range allNew {
|
for origName, origf := range allNew {
|
||||||
_, provider := oteltest.NewMeterProvider()
|
_, provider := metrictest.NewMeterProvider()
|
||||||
meter := provider.Meter("meter")
|
meter := provider.Meter("meter")
|
||||||
|
|
||||||
_, err := origf(meter, "this")
|
_, err := origf(meter, "this")
|
||||||
@@ -121,7 +121,7 @@ func TestRegistryDiffInstruments(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestMeterProvider(t *testing.T) {
|
func TestMeterProvider(t *testing.T) {
|
||||||
impl, _ := oteltest.NewMeter()
|
impl, _ := metrictest.NewMeter()
|
||||||
p := registry.NewMeterProvider(impl)
|
p := registry.NewMeterProvider(impl)
|
||||||
m1 := p.Meter("m1")
|
m1 := p.Meter("m1")
|
||||||
m1p := p.Meter("m1")
|
m1p := p.Meter("m1")
|
||||||
|
@@ -36,6 +36,8 @@ replace go.opentelemetry.io/otel/internal/tools => ../internal/tools
|
|||||||
|
|
||||||
replace go.opentelemetry.io/otel/metric => ../metric
|
replace go.opentelemetry.io/otel/metric => ../metric
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../internal/metric
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/oteltest => ./
|
replace go.opentelemetry.io/otel/oteltest => ./
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/sdk => ../sdk
|
replace go.opentelemetry.io/otel/sdk => ../sdk
|
||||||
@@ -49,7 +51,6 @@ replace go.opentelemetry.io/otel/trace => ../trace
|
|||||||
require (
|
require (
|
||||||
github.com/stretchr/testify v1.7.0
|
github.com/stretchr/testify v1.7.0
|
||||||
go.opentelemetry.io/otel v0.20.0
|
go.opentelemetry.io/otel v0.20.0
|
||||||
go.opentelemetry.io/otel/metric v0.20.0
|
|
||||||
go.opentelemetry.io/otel/trace v0.20.0
|
go.opentelemetry.io/otel/trace v0.20.0
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@@ -60,3 +60,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../../exporters/
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../../internal/metric
|
||||||
|
@@ -61,3 +61,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../exporters/otlp/o
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../internal/metric
|
||||||
|
@@ -50,6 +50,7 @@ require (
|
|||||||
github.com/benbjohnson/clock v1.1.0 // do not upgrade to v1.1.x because it would require Go >= 1.15
|
github.com/benbjohnson/clock v1.1.0 // do not upgrade to v1.1.x because it would require Go >= 1.15
|
||||||
github.com/stretchr/testify v1.7.0
|
github.com/stretchr/testify v1.7.0
|
||||||
go.opentelemetry.io/otel v0.20.0
|
go.opentelemetry.io/otel v0.20.0
|
||||||
|
go.opentelemetry.io/otel/internal/metric v0.20.0
|
||||||
go.opentelemetry.io/otel/metric v0.20.0
|
go.opentelemetry.io/otel/metric v0.20.0
|
||||||
go.opentelemetry.io/otel/sdk v0.20.0
|
go.opentelemetry.io/otel/sdk v0.20.0
|
||||||
go.opentelemetry.io/otel/sdk/export/metric v0.20.0
|
go.opentelemetry.io/otel/sdk/export/metric v0.20.0
|
||||||
@@ -62,3 +63,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../../exporters/otl
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../../internal/metric
|
||||||
|
@@ -59,3 +59,5 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../exporters/otlp/o
|
|||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../exporters/otlp/otlptrace/otlptracegrpc
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => ../exporters/otlp/otlptrace/otlptracegrpc
|
||||||
|
|
||||||
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../exporters/otlp/otlptrace/otlptracehttp
|
replace go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp => ../exporters/otlp/otlptrace/otlptracehttp
|
||||||
|
|
||||||
|
replace go.opentelemetry.io/otel/internal/metric => ../internal/metric
|
||||||
|
Reference in New Issue
Block a user