1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
package otelaws
import (
"context"
"net/http"
"testing"
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/otel/propagation"
)
type mockPropagator struct {
injectKey string
injectValue string
}
func (p mockPropagator) Inject(ctx context.Context, carrier propagation.TextMapCarrier) {
carrier.Set(p.injectKey, p.injectValue)
}
func (p mockPropagator) Extract(ctx context.Context, carrier propagation.TextMapCarrier) context.Context {
return context.TODO()
}
func (p mockPropagator) Fields() []string {
return []string{}
}
func Test_otelMiddlewares_finalizeMiddleware(t *testing.T) {
stack := middleware.Stack{
Finalize: middleware.NewFinalizeStep(),
}
propagator := mockPropagator{
injectKey: "mock-key",
injectValue: "mock-value",
}
m := otelMiddlewares{
propagator: propagator,
}
err := m.finalizeMiddleware(&stack)
require.NoError(t, err)
input := &smithyhttp.Request{
Request: &http.Request{
Header: http.Header{},
},
}
next := middleware.HandlerFunc(func(ctx context.Context, input interface{}) (output interface{}, metadata middleware.Metadata, err error) {
return nil, middleware.Metadata{}, nil
})
_, _, _ = stack.Finalize.HandleMiddleware(context.Background(), input, next)
// Assert header has been updated with injected values
key := http.CanonicalHeaderKey(propagator.injectKey)
value := propagator.injectValue
assert.Contains(t, input.Header, key)
assert.Contains(t, input.Header[key], value)
}
func Test_Span_name(t *testing.T) {
serviceID1 := ""
serviceID2 := "ServiceID"
operation1 := ""
operation2 := "Operation"
assert.Equal(t, "", spanName(serviceID1, operation1))
assert.Equal(t, spanName(serviceID1, operation2), "."+operation2)
assert.Equal(t, spanName(serviceID2, operation1), serviceID2)
assert.Equal(t, spanName(serviceID2, operation2), serviceID2+"."+operation2)
}
|