Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion trace/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,10 @@ This module provides the `CtxTracerProvider()` function that allow to extract th
a `context.Context`.

If no tracer provider is found in context,
the [global tracer](https://github.com/open-telemetry/opentelemetry-go/blob/main/trace.go) will be used.
the [global tracer provider](https://github.com/open-telemetry/opentelemetry-go/blob/main/trace.go) will be used.

This module also provides the `CtxTracer()` function that allow to create a tracer (named `yokai`) from the tracer provider got from
a `context.Context`.

#### Span processors

Expand Down
10 changes: 10 additions & 0 deletions trace/context.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ import (
"go.opentelemetry.io/otel/trace"
)

// TracerName is the default tracer name.
const TracerName = "yokai"

// CtxKey is a contextual struct key.
type CtxKey struct{}

Expand All @@ -27,3 +30,10 @@ func CtxTracerProvider(ctx context.Context) trace.TracerProvider {
return otel.GetTracerProvider()
}
}

// CtxTracer returns the default contextual [OTEL Tracer] from a provided context (or returns the default one if missing).
//
// [OTEL Tracer]: https://go.opentelemetry.io/otel/trace
func CtxTracer(ctx context.Context) trace.Tracer {
return CtxTracerProvider(ctx).Tracer(TracerName)
}
17 changes: 16 additions & 1 deletion trace/context_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,10 @@ import (
"github.com/ankorstore/yokai/trace/tracetest"
"github.com/stretchr/testify/assert"
"go.opentelemetry.io/otel"
oteltrace "go.opentelemetry.io/otel/trace"
)

func TestCtxTracerProviderWithDefaultTracerProvider(t *testing.T) {
func TestCtxTracerProviderWithDefaultGlobalTracerProvider(t *testing.T) {
t.Parallel()

assert.Equal(t, otel.GetTracerProvider(), trace.CtxTracerProvider(context.Background()))
Expand All @@ -29,3 +30,17 @@ func TestCtxTracerProviderWithCustomTracerProvider(t *testing.T) {
ctx := trace.WithContext(context.Background(), tracerProvider)
assert.Equal(t, tracerProvider, trace.CtxTracerProvider(ctx))
}

func TestCtxTracer(t *testing.T) {
t.Parallel()

exporter := tracetest.NewDefaultTestTraceExporter()

tracerProvider, err := trace.NewDefaultTracerProviderFactory().Create(
trace.WithSpanProcessor(trace.NewTestSpanProcessor(exporter)),
)
assert.NoError(t, err)

ctx := trace.WithContext(context.Background(), tracerProvider)
assert.Implements(t, (*oteltrace.Tracer)(nil), trace.CtxTracer(ctx))
}
38 changes: 19 additions & 19 deletions trace/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,31 +3,31 @@ module github.com/ankorstore/yokai/trace
go 1.20

require (
github.com/stretchr/testify v1.8.4
go.opentelemetry.io/otel v1.16.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.16.0
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.16.0
go.opentelemetry.io/otel/sdk v1.16.0
go.opentelemetry.io/otel/trace v1.16.0
google.golang.org/grpc v1.56.2
github.com/stretchr/testify v1.9.0
go.opentelemetry.io/otel v1.24.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.24.0
go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.24.0
go.opentelemetry.io/otel/sdk v1.24.0
go.opentelemetry.io/otel/trace v1.24.0
google.golang.org/grpc v1.62.1
)

require (
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/go-logr/logr v1.2.4 // indirect
github.com/go-logr/logr v1.4.1 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/grpc-ecosystem/grpc-gateway/v2 v2.19.1 // indirect
github.com/pmezard/go-difflib v1.0.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.16.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.16.0 // indirect
go.opentelemetry.io/otel/metric v1.16.0 // indirect
go.opentelemetry.io/proto/otlp v0.19.0 // indirect
golang.org/x/net v0.9.0 // indirect
golang.org/x/sys v0.8.0 // indirect
golang.org/x/text v0.9.0 // indirect
google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect
google.golang.org/protobuf v1.30.0 // indirect
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.24.0 // indirect
go.opentelemetry.io/otel/metric v1.24.0 // indirect
go.opentelemetry.io/proto/otlp v1.1.0 // indirect
golang.org/x/net v0.22.0 // indirect
golang.org/x/sys v0.18.0 // indirect
golang.org/x/text v0.14.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240311173647-c811ad7063a7 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240311173647-c811ad7063a7 // indirect
google.golang.org/protobuf v1.33.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
Loading