diff --git a/client/opentelemetry.go b/client/opentelemetry.go index 70179a0e..dbc33dc7 100644 --- a/client/opentelemetry.go +++ b/client/opentelemetry.go @@ -6,6 +6,7 @@ import ( "github.com/go-openapi/runtime" "github.com/go-openapi/strfmt" "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/trace" ) @@ -63,7 +64,7 @@ func (t *openTelemetryTransport) Submit(op *runtime.ClientOperation) (interface{ return submit, err } -func createOpenTelemetryClientSpan(op *runtime.ClientOperation, header http.Header, host string, opts []trace.SpanStartOption) trace.Span { +func createOpenTelemetryClientSpan(op *runtime.ClientOperation, _ http.Header, _ string, opts []trace.SpanStartOption) trace.Span { ctx := op.Context span := trace.SpanFromContext(ctx) @@ -74,6 +75,12 @@ func createOpenTelemetryClientSpan(op *runtime.ClientOperation, header http.Head ctx, span = tracer.Start(ctx, operationName(op), opts...) op.Context = ctx + span.SetAttributes( + attribute.String("http.path", op.PathPattern), + attribute.String("http.method", op.Method), + attribute.String("span.kind", trace.SpanKindClient.String()), + ) + return span } diff --git a/client/opentelemetry_test.go b/client/opentelemetry_test.go index d37f50a0..b280342b 100644 --- a/client/opentelemetry_test.go +++ b/client/opentelemetry_test.go @@ -4,14 +4,15 @@ import ( "context" "testing" + "github.com/go-openapi/runtime" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/attribute" tracesdk "go.opentelemetry.io/otel/sdk/trace" "go.opentelemetry.io/otel/sdk/trace/tracetest" "go.opentelemetry.io/otel/trace" - - "github.com/go-openapi/runtime" ) func Test_OpenTelemetryRuntime_submit(t *testing.T) { @@ -81,15 +82,15 @@ func testOpenTelemetrySubmit(t *testing.T, operation *runtime.ClientOperation, e if expectedSpanCount == 1 { span := spans[0] assert.Equal(t, "getCluster", span.Name) - // assert.Equal(t, map[string]interface{}{ - // "component": "go-openapi", - // "http.method": "GET", - // "http.path": "/kubernetes-clusters/{cluster_id}", - // "http.status_code": uint16(490), - // "peer.hostname": "remote_host", - // "peer.service": "service", - // "span.kind": ext.SpanKindRPCClientEnum, - // "error": true, - // }, span.Tags()) + assert.Equal(t, []attribute.KeyValue{ + // "component": "go-openapi", + attribute.String("http.path", "/kubernetes-clusters/{cluster_id}"), + attribute.String("http.method", "GET"), + attribute.String("span.kind", trace.SpanKindClient.String()), + // // "http.status_code": uint16(490), + // "peer.hostname": "remote_host", + // "peer.service": "service", + // "error": true, + }, span.Attributes) } }