You've already forked opentelemetry-go
							
							
				mirror of
				https://github.com/open-telemetry/opentelemetry-go.git
				synced 2025-10-31 00:07:40 +02:00 
			
		
		
		
	add shorter version for global providers (#538)
This commit is contained in:
		
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			
						parent
						
							9674c81cb7
						
					
				
				
					commit
					85751428a3
				
			| @@ -54,7 +54,7 @@ func initTracer() { | ||||
|  | ||||
| func main() { | ||||
| 	initTracer() | ||||
| 	tracer := global.TraceProvider().Tracer("ex.com/basic") | ||||
| 	tracer := global.Tracer("ex.com/basic") | ||||
|  | ||||
| 	tracer.WithSpan(context.Background(), "foo", | ||||
| 		func(ctx context.Context) error { | ||||
|   | ||||
| @@ -21,11 +21,21 @@ import ( | ||||
| 	"go.opentelemetry.io/otel/api/trace" | ||||
| ) | ||||
|  | ||||
| // Tracer creates a named tracer that implements Tracer interface. | ||||
| // If the name is an empty string then provider uses default name. | ||||
| // | ||||
| // This is short for TraceProvider().Tracer(name) | ||||
| func Tracer(name string) trace.Tracer { | ||||
| 	return TraceProvider().Tracer(name) | ||||
| } | ||||
|  | ||||
| // TraceProvider returns the registered global trace provider. | ||||
| // If none is registered then an instance of trace.NoopProvider is returned. | ||||
| // | ||||
| // Use the trace provider to create a named tracer. E.g. | ||||
| //     tracer := global.TraceProvider().Tracer("example.com/foo") | ||||
| // or | ||||
| //     tracer := global.Tracer("example.com/foo") | ||||
| func TraceProvider() trace.Provider { | ||||
| 	return internal.TraceProvider() | ||||
| } | ||||
| @@ -35,12 +45,22 @@ func SetTraceProvider(tp trace.Provider) { | ||||
| 	internal.SetTraceProvider(tp) | ||||
| } | ||||
|  | ||||
| // Meter gets a named Meter interface.  If the name is an | ||||
| // empty string, the provider uses a default name. | ||||
| // | ||||
| // This is short for MeterProvider().Meter(name) | ||||
| func Meter(name string) metric.Meter { | ||||
| 	return MeterProvider().Meter(name) | ||||
| } | ||||
|  | ||||
| // MeterProvider returns the registered global meter provider.  If | ||||
| // none is registered then a default meter provider is returned that | ||||
| // forwards the Meter interface to the first registered Meter. | ||||
| // | ||||
| // Use the meter provider to create a named meter. E.g. | ||||
| //     meter := global.MeterProvider().Meter("example.com/foo") | ||||
| // or | ||||
| //     meter := global.Meter("example.com/foo") | ||||
| func MeterProvider() metric.Provider { | ||||
| 	return internal.MeterProvider() | ||||
| } | ||||
|   | ||||
| @@ -70,7 +70,7 @@ func (fix *benchFixture) Meter(name string) metric.Meter { | ||||
| func BenchmarkGlobalInt64CounterAddNoSDK(b *testing.B) { | ||||
| 	internal.ResetForTest() | ||||
| 	ctx := context.Background() | ||||
| 	sdk := global.MeterProvider().Meter("test") | ||||
| 	sdk := global.Meter("test") | ||||
| 	labs := sdk.Labels(key.String("A", "B")) | ||||
| 	cnt := sdk.NewInt64Counter("int64.counter") | ||||
|  | ||||
| @@ -86,7 +86,7 @@ func BenchmarkGlobalInt64CounterAddWithSDK(b *testing.B) { | ||||
| 	ctx := context.Background() | ||||
| 	fix := newFixture(b) | ||||
|  | ||||
| 	sdk := global.MeterProvider().Meter("test") | ||||
| 	sdk := global.Meter("test") | ||||
|  | ||||
| 	global.SetMeterProvider(fix) | ||||
|  | ||||
| @@ -103,7 +103,7 @@ func BenchmarkGlobalInt64CounterAddWithSDK(b *testing.B) { | ||||
| func BenchmarkStartEndSpan(b *testing.B) { | ||||
| 	// Comapare with BenchmarkStartEndSpan() in ../../sdk/trace/benchmark_test.go | ||||
| 	traceBenchmark(b, func(b *testing.B) { | ||||
| 		t := global.TraceProvider().Tracer("Benchmark StartEndSpan") | ||||
| 		t := global.Tracer("Benchmark StartEndSpan") | ||||
| 		ctx := context.Background() | ||||
| 		b.ResetTimer() | ||||
| 		for i := 0; i < b.N; i++ { | ||||
|   | ||||
| @@ -21,8 +21,8 @@ func TestDirect(t *testing.T) { | ||||
| 	internal.ResetForTest() | ||||
|  | ||||
| 	ctx := context.Background() | ||||
| 	meter1 := global.MeterProvider().Meter("test1") | ||||
| 	meter2 := global.MeterProvider().Meter("test2") | ||||
| 	meter1 := global.Meter("test1") | ||||
| 	meter2 := global.Meter("test2") | ||||
| 	lvals1 := key.String("A", "B") | ||||
| 	labels1 := meter1.Labels(lvals1) | ||||
| 	lvals2 := key.String("C", "D") | ||||
| @@ -141,7 +141,7 @@ func TestBound(t *testing.T) { | ||||
| 	// Note: this test uses opposite Float64/Int64 number kinds | ||||
| 	// vs. the above, to cover all the instruments. | ||||
| 	ctx := context.Background() | ||||
| 	glob := global.MeterProvider().Meter("test") | ||||
| 	glob := global.Meter("test") | ||||
| 	lvals1 := key.String("A", "B") | ||||
| 	labels1 := glob.Labels(lvals1) | ||||
|  | ||||
| @@ -191,7 +191,7 @@ func TestUnbind(t *testing.T) { | ||||
| 	// Tests Unbind with SDK never installed. | ||||
| 	internal.ResetForTest() | ||||
|  | ||||
| 	glob := global.MeterProvider().Meter("test") | ||||
| 	glob := global.Meter("test") | ||||
| 	lvals1 := key.New("A").String("B") | ||||
| 	labels1 := glob.Labels(lvals1) | ||||
|  | ||||
| @@ -214,7 +214,7 @@ func TestDefaultSDK(t *testing.T) { | ||||
| 	internal.ResetForTest() | ||||
|  | ||||
| 	ctx := context.Background() | ||||
| 	meter1 := global.MeterProvider().Meter("builtin") | ||||
| 	meter1 := global.Meter("builtin") | ||||
| 	lvals1 := key.String("A", "B") | ||||
| 	labels1 := meter1.Labels(lvals1) | ||||
|  | ||||
| @@ -251,7 +251,7 @@ func TestUnbindThenRecordOne(t *testing.T) { | ||||
|  | ||||
| 	ctx := context.Background() | ||||
| 	sdk := metrictest.NewProvider() | ||||
| 	meter := global.MeterProvider().Meter("test") | ||||
| 	meter := global.Meter("test") | ||||
| 	counter := meter.NewInt64Counter("test.counter") | ||||
| 	boundC := counter.Bind(meter.Labels()) | ||||
| 	global.SetMeterProvider(sdk) | ||||
| @@ -260,6 +260,6 @@ func TestUnbindThenRecordOne(t *testing.T) { | ||||
| 	require.NotPanics(t, func() { | ||||
| 		boundC.Add(ctx, 1) | ||||
| 	}) | ||||
| 	mock := global.MeterProvider().Meter("test").(*metrictest.Meter) | ||||
| 	mock := global.Meter("test").(*metrictest.Meter) | ||||
| 	require.Equal(t, 0, len(mock.MeasurementBatches)) | ||||
| } | ||||
|   | ||||
| @@ -441,7 +441,7 @@ func (tm *tracerMessTest) setup(t *testing.T, tracer *internal.MockTracer) { | ||||
|  | ||||
| func (tm *tracerMessTest) check(t *testing.T, tracer *internal.MockTracer) { | ||||
| 	globalOtTracer := ot.GlobalTracer() | ||||
| 	globalOtelTracer := otelglobal.TraceProvider().Tracer("") | ||||
| 	globalOtelTracer := otelglobal.Tracer("") | ||||
| 	if len(tm.recordedOTSpanTracers) != 3 { | ||||
| 		t.Errorf("Expected 3 recorded OpenTracing tracers from spans, got %d", len(tm.recordedOTSpanTracers)) | ||||
| 	} | ||||
| @@ -685,7 +685,7 @@ func min(a, b int) int { | ||||
| } | ||||
|  | ||||
| func runOtelOTOtel(t *testing.T, ctx context.Context, name string, callback func(*testing.T, context.Context) context.Context) { | ||||
| 	tr := otelglobal.TraceProvider().Tracer("") | ||||
| 	tr := otelglobal.Tracer("") | ||||
| 	ctx, span := tr.Start(ctx, fmt.Sprintf("%s_Otel_OTOtel", name), oteltrace.WithSpanKind(oteltrace.SpanKindClient)) | ||||
| 	defer span.End() | ||||
| 	ctx = callback(t, ctx) | ||||
| @@ -702,7 +702,7 @@ func runOtelOTOtel(t *testing.T, ctx context.Context, name string, callback func | ||||
| } | ||||
|  | ||||
| func runOTOtelOT(t *testing.T, ctx context.Context, name string, callback func(*testing.T, context.Context) context.Context) { | ||||
| 	tr := otelglobal.TraceProvider().Tracer("") | ||||
| 	tr := otelglobal.Tracer("") | ||||
| 	span, ctx := ot.StartSpanFromContext(ctx, fmt.Sprintf("%s_OT_OtelOT", name), ot.Tag{Key: "span.kind", Value: "client"}) | ||||
| 	defer span.Finish() | ||||
| 	ctx = callback(t, ctx) | ||||
|   | ||||
| @@ -70,8 +70,8 @@ func main() { | ||||
| 	// Note: Have to get the meter and tracer after the global is | ||||
| 	// initialized.  See OTEP 0005. | ||||
|  | ||||
| 	tracer := global.TraceProvider().Tracer("ex.com/basic") | ||||
| 	meter := global.MeterProvider().Meter("ex.com/basic") | ||||
| 	tracer := global.Tracer("ex.com/basic") | ||||
| 	meter := global.Meter("ex.com/basic") | ||||
|  | ||||
| 	commonLabels := meter.Labels(lemonsKey.Int(10), key.String("A", "1"), key.String("B", "2"), key.String("C", "3")) | ||||
|  | ||||
|   | ||||
| @@ -47,7 +47,7 @@ func UnaryServerInterceptor(ctx context.Context, req interface{}, info *grpc.Una | ||||
| 		grpcServerKey.String("hello-world-server"), | ||||
| 	} | ||||
|  | ||||
| 	tr := global.TraceProvider().Tracer("example/grpc") | ||||
| 	tr := global.Tracer("example/grpc") | ||||
| 	ctx, span := tr.Start( | ||||
| 		trace.ContextWithRemoteSpanContext(ctx, spanCtx), | ||||
| 		"hello-api-op", | ||||
| @@ -64,7 +64,7 @@ func UnaryClientInterceptor(ctx context.Context, method string, req, reply inter | ||||
| 	requestMetadata, _ := metadata.FromOutgoingContext(ctx) | ||||
| 	metadataCopy := requestMetadata.Copy() | ||||
|  | ||||
| 	tr := global.TraceProvider().Tracer("example/grpc") | ||||
| 	tr := global.Tracer("example/grpc") | ||||
| 	err := tr.WithSpan(ctx, "hello-api-op", | ||||
| 		func(ctx context.Context) error { | ||||
| 			grpctrace.Inject(ctx, &metadataCopy) | ||||
|   | ||||
| @@ -59,7 +59,7 @@ func main() { | ||||
|  | ||||
| 	var body []byte | ||||
|  | ||||
| 	tr := global.TraceProvider().Tracer("example/client") | ||||
| 	tr := global.Tracer("example/client") | ||||
| 	err := tr.WithSpan(ctx, "say hello", | ||||
| 		func(ctx context.Context) error { | ||||
| 			req, _ := http.NewRequest("GET", "http://localhost:7777/hello", nil) | ||||
|   | ||||
| @@ -47,7 +47,7 @@ func initTracer() { | ||||
|  | ||||
| func main() { | ||||
| 	initTracer() | ||||
| 	tr := global.TraceProvider().Tracer("example/server") | ||||
| 	tr := global.Tracer("example/server") | ||||
|  | ||||
| 	helloHandler := func(w http.ResponseWriter, req *http.Request) { | ||||
| 		attrs, entries, spanCtx := httptrace.Extract(req.Context(), req) | ||||
|   | ||||
| @@ -58,14 +58,14 @@ func main() { | ||||
|  | ||||
| 	ctx := context.Background() | ||||
|  | ||||
| 	tr := global.TraceProvider().Tracer("component-main") | ||||
| 	tr := global.Tracer("component-main") | ||||
| 	ctx, span := tr.Start(ctx, "foo") | ||||
| 	bar(ctx) | ||||
| 	span.End() | ||||
| } | ||||
|  | ||||
| func bar(ctx context.Context) { | ||||
| 	tr := global.TraceProvider().Tracer("component-bar") | ||||
| 	tr := global.Tracer("component-bar") | ||||
| 	_, span := tr.Start(ctx, "bar") | ||||
| 	defer span.End() | ||||
|  | ||||
|   | ||||
| @@ -32,7 +32,7 @@ func SubOperation(ctx context.Context) error { | ||||
|  | ||||
| 	// Using global provider. Alternative is to have application provide a getter | ||||
| 	// for its component to get the instance of the provider. | ||||
| 	tr := global.TraceProvider().Tracer("example/namedtracer/foo") | ||||
| 	tr := global.Tracer("example/namedtracer/foo") | ||||
| 	return tr.WithSpan( | ||||
| 		ctx, | ||||
| 		"Sub operation...", | ||||
|   | ||||
| @@ -50,7 +50,7 @@ func initMeter() *push.Controller { | ||||
| func main() { | ||||
| 	defer initMeter().Stop() | ||||
|  | ||||
| 	meter := global.MeterProvider().Meter("ex.com/basic") | ||||
| 	meter := global.Meter("ex.com/basic") | ||||
| 	observerLock := new(sync.RWMutex) | ||||
| 	observerValueToReport := new(float64) | ||||
| 	observerLabelSetToReport := new(metric.LabelSet) | ||||
|   | ||||
| @@ -48,7 +48,7 @@ func Example_insecure() { | ||||
|  | ||||
| 	global.SetTraceProvider(tp) | ||||
|  | ||||
| 	tracer := global.TraceProvider().Tracer("test-tracer") | ||||
| 	tracer := global.Tracer("test-tracer") | ||||
|  | ||||
| 	// Then use the OpenTelemetry tracing library, like we normally would. | ||||
| 	ctx, span := tracer.Start(context.Background(), "CollectorExporter-Example") | ||||
| @@ -89,7 +89,7 @@ func Example_withTLS() { | ||||
|  | ||||
| 	global.SetTraceProvider(tp) | ||||
|  | ||||
| 	tracer := global.TraceProvider().Tracer("test-tracer") | ||||
| 	tracer := global.Tracer("test-tracer") | ||||
|  | ||||
| 	// Then use the OpenTelemetry tracing library, like we normally would. | ||||
| 	ctx, span := tracer.Start(context.Background(), "Securely-Talking-To-Collector-Span") | ||||
|   | ||||
| @@ -158,7 +158,7 @@ func TestExporter_ExportSpan(t *testing.T) { | ||||
| 	assert.NoError(t, err) | ||||
|  | ||||
| 	global.SetTraceProvider(tp) | ||||
| 	_, span := global.TraceProvider().Tracer("test-tracer").Start(context.Background(), "test-span") | ||||
| 	_, span := global.Tracer("test-tracer").Start(context.Background(), "test-span") | ||||
| 	span.End() | ||||
|  | ||||
| 	assert.True(t, span.SpanContext().IsValid()) | ||||
|   | ||||
| @@ -53,7 +53,7 @@ func NewClientTrace(ctx context.Context) *httptrace.ClientTrace { | ||||
| 		activeHooks: make(map[string]trace.Span), | ||||
| 	} | ||||
|  | ||||
| 	ct.tr = global.TraceProvider().Tracer("go.opentelemetry.io/otel/plugin/httptrace") | ||||
| 	ct.tr = global.Tracer("go.opentelemetry.io/otel/plugin/httptrace") | ||||
|  | ||||
| 	return &httptrace.ClientTrace{ | ||||
| 		GetConn:              ct.getConn, | ||||
|   | ||||
| @@ -128,7 +128,7 @@ func WithMessageEvents(events ...event) Option { | ||||
| func NewHandler(handler http.Handler, operation string, opts ...Option) http.Handler { | ||||
| 	h := Handler{handler: handler, operation: operation} | ||||
| 	defaultOpts := []Option{ | ||||
| 		WithTracer(global.TraceProvider().Tracer("go.opentelemetry.io/plugin/othttp")), | ||||
| 		WithTracer(global.Tracer("go.opentelemetry.io/plugin/othttp")), | ||||
| 		WithPropagators(global.Propagators()), | ||||
| 		WithSpanOptions(trace.WithSpanKind(trace.SpanKindServer)), | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user