forked from open-telemetry/opentelemetry-go-contrib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
aws_test.go
83 lines (64 loc) · 2.03 KB
/
aws_test.go
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)
}