Changes from PR feedback

Signed-off-by: Drew Robbins <drew@drewby.com>
This commit is contained in:
Drew Robbins 2023-01-21 10:12:03 +09:00
parent dd3eae1bd5
commit f8d69c93d2
2 changed files with 39 additions and 24 deletions

View File

@ -38,12 +38,14 @@ import (
)
const (
MTLSEnable = "MTLSEnable"
MTLSRootCA = "MTLSRootCA"
MTLSClientCert = "MTLSClientCert"
MTLSClientKey = "MTLSClientKey"
traceparentHeader = "traceparent"
tracestateHeader = "tracestate"
MTLSEnable = "MTLSEnable"
MTLSRootCA = "MTLSRootCA"
MTLSClientCert = "MTLSClientCert"
MTLSClientKey = "MTLSClientKey"
TraceparentHeaderKey = "traceparent"
TracestateHeaderKey = "tracestate"
TraceMetadataKey = "traceHeaders"
)
// HTTPSource is a binding for an http url endpoint invocation
@ -107,12 +109,7 @@ func (h *HTTPSource) Init(metadata bindings.Metadata) error {
h.errorIfNot2XX = true
}
if val, ok := metadata.Properties["traceHeaders"]; ok {
h.traceHeaders = utils.IsTruthy(val)
} else {
// Default behavior
h.traceHeaders = false
}
h.traceHeaders = utils.IsTruthy(metadata.Properties[TraceMetadataKey])
return nil
}
@ -196,7 +193,6 @@ func (h *HTTPSource) Operations() []bindings.OperationKind {
func (h *HTTPSource) Invoke(ctx context.Context, req *bindings.InvokeRequest) (*bindings.InvokeResponse, error) {
u := h.metadata.URL
traceHeaders := h.traceHeaders
errorIfNot2XX := h.errorIfNot2XX // Default to the component config (default is true)
if req.Metadata != nil {
@ -246,12 +242,12 @@ func (h *HTTPSource) Invoke(ctx context.Context, req *bindings.InvokeRequest) (*
}
// HTTP binding needs to inject traceparent header for proper tracing stack.
if traceHeaders {
if tp, ok := req.Metadata[traceparentHeader]; ok {
request.Header.Set(traceparentHeader, tp)
if h.traceHeaders {
if tp, ok := req.Metadata[TraceparentHeaderKey]; ok && tp != "" {
request.Header.Set(TraceparentHeaderKey, tp)
}
if ts, ok := req.Metadata[tracestateHeader]; ok {
request.Header.Set(tracestateHeader, ts)
if ts, ok := req.Metadata[TracestateHeaderKey]; ok && ts != "" {
request.Header.Set(TracestateHeaderKey, ts)
}
}

View File

@ -177,15 +177,17 @@ func TestTraceHeadersForwarded(t *testing.T) {
req := TestCase{
input: "GET",
operation: "get",
metadata: map[string]string{"path": "/somewhere", "traceparent": "12345", "tracestate": "67890"},
path: "/somewhere",
metadata: map[string]string{"path": "/", "traceparent": "12345", "tracestate": "67890"},
path: "/",
err: "",
statusCode: 200,
}.ToInvokeRequest()
_, err = hs.Invoke(context.Background(), &req)
assert.NoError(t, err)
assert.Empty(t, handler.Headers["Traceparent"])
assert.Empty(t, handler.Headers["Tracestate"])
_, traceParentExists := handler.Headers["Traceparent"]
assert.False(t, traceParentExists)
_, traceStateExists := handler.Headers["Traceparent"]
assert.False(t, traceStateExists)
})
hs, err = InitBinding(s, map[string]string{"traceHeaders": "true"})
@ -195,8 +197,8 @@ func TestTraceHeadersForwarded(t *testing.T) {
req := TestCase{
input: "GET",
operation: "get",
metadata: map[string]string{"path": "/somewhere", "traceparent": "12345", "tracestate": "67890"},
path: "/somewhere",
metadata: map[string]string{"path": "/", "traceparent": "12345", "tracestate": "67890"},
path: "/",
err: "",
statusCode: 200,
}.ToInvokeRequest()
@ -205,6 +207,23 @@ func TestTraceHeadersForwarded(t *testing.T) {
assert.Equal(t, "12345", handler.Headers["Traceparent"])
assert.Equal(t, "67890", handler.Headers["Tracestate"])
})
t.Run("trace headers should not be forwarded if empty", func(t *testing.T) {
req := TestCase{
input: "GET",
operation: "get",
metadata: map[string]string{"path": "/", "traceparent": "", "tracestate": ""},
path: "/",
err: "",
statusCode: 200,
}.ToInvokeRequest()
_, err = hs.Invoke(context.Background(), &req)
assert.NoError(t, err)
_, traceParentExists := handler.Headers["Traceparent"]
assert.False(t, traceParentExists)
_, traceStateExists := handler.Headers["Traceparent"]
assert.False(t, traceStateExists)
})
}
func InitBindingForHTTPS(s *httptest.Server, extraProps map[string]string) (bindings.OutputBinding, error) {