Merged in feature/movetocfg (pull request #44)

Move OTEL to Config

* move
This commit is contained in:
Michael McGuinness
2025-02-03 19:01:37 +00:00
parent 00e7dca3c7
commit 84abc3a813
6 changed files with 55 additions and 74 deletions
-8
View File
@@ -1,8 +0,0 @@
package objectstorage
import (
"context"
)
func Get(ctx context.Context) {
}
-37
View File
@@ -1,37 +0,0 @@
package otel
import (
"context"
"log/slog"
"queryorchestration/internal/serviceconfig/observability"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
)
func New(ctx context.Context, cfg observability.ConfigProvider) func() error {
if !cfg.IsOtelEnabled() {
slog.Warn("OpenTelemetry is disabled. Set ENABLE_OTEL to true to enable.")
return func() error { return nil }
}
exporter, err := otlptracegrpc.New(ctx)
if err != nil {
return func() error { return nil }
}
tp := sdktrace.NewTracerProvider(
sdktrace.WithBatcher(exporter),
)
otel.SetTracerProvider(tp)
return func() error {
err := tp.Shutdown(ctx)
if err != nil {
return err
}
return nil
}
}
-27
View File
@@ -1,27 +0,0 @@
package otel_test
import (
"context"
"fmt"
"queryorchestration/internal/server/otel"
"queryorchestration/internal/serviceconfig/observability"
"testing"
"github.com/stretchr/testify/assert"
)
func TestNew(t *testing.T) {
ctx := context.Background()
cfg := &observability.ObsConfig{
EnableOtel: true,
}
clean := otel.New(ctx, cfg)
assert.NotNil(t, clean)
defer func() {
if err := clean(); err != nil {
// Log cleanup error but don't panic since we're shutting down
fmt.Printf("Error during clean: %v", err)
}
}()
}
+1 -2
View File
@@ -3,7 +3,6 @@ package server
import (
"context"
"queryorchestration/internal/database/migrations"
"queryorchestration/internal/server/otel"
"queryorchestration/internal/serviceconfig"
"github.com/go-playground/validator/v10"
@@ -30,7 +29,7 @@ func (c *BaseConfig) GetValidator() *validator.Validate {
}
func New(ctx context.Context, cfg Config) (func() error, error) {
closeTracer := otel.New(ctx, cfg)
closeTracer := cfg.SetOtel(ctx)
err := migrations.Run(ctx, cfg)
if err != nil {
@@ -1,7 +1,17 @@
package observability
import (
"context"
"log/slog"
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
)
type ConfigProvider interface {
IsOtelEnabled() bool
SetOtel(context.Context) func() error
}
type ObsConfig struct {
@@ -11,3 +21,29 @@ type ObsConfig struct {
func (o *ObsConfig) IsOtelEnabled() bool {
return o.EnableOtel
}
func (o *ObsConfig) SetOtel(ctx context.Context) func() error {
if !o.EnableOtel {
slog.Warn("OpenTelemetry is disabled. Set ENABLE_OTEL to true to enable.")
return func() error { return nil }
}
exporter, err := otlptracegrpc.New(ctx)
if err != nil {
return func() error { return nil }
}
tp := sdktrace.NewTracerProvider(
sdktrace.WithBatcher(exporter),
)
otel.SetTracerProvider(tp)
return func() error {
err := tp.Shutdown(ctx)
if err != nil {
return err
}
return nil
}
}
@@ -1,6 +1,8 @@
package observability_test
import (
"context"
"fmt"
"queryorchestration/internal/serviceconfig/observability"
"testing"
@@ -13,3 +15,19 @@ func TestIsOtelEnabled(t *testing.T) {
c.EnableOtel = true
assert.True(t, c.IsOtelEnabled())
}
func TestSetOtel(t *testing.T) {
ctx := context.Background()
cfg := &observability.ObsConfig{
EnableOtel: true,
}
clean := cfg.SetOtel(ctx)
assert.NotNil(t, clean)
defer func() {
if err := clean(); err != nil {
// Log cleanup error but don't panic since we're shutting down
fmt.Printf("Error during clean: %v", err)
}
}()
}