Skip to content

Commit b48daa3

Browse files
committed
Auto set span headers for each request
1 parent ed61add commit b48daa3

File tree

17 files changed

+85
-55
lines changed

17 files changed

+85
-55
lines changed

api/cloudcontroller/wrapper/trace_request.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ type CCTraceHeaderRequest struct {
1212
}
1313

1414
// NewCCTraceHeaderRequest returns a pointer to a CCTraceHeaderRequest wrapper.
15-
func NewCCTraceHeaderRequest(trace, span string) *CCTraceHeaderRequest {
15+
func NewCCTraceHeaderRequest(trace string) *CCTraceHeaderRequest {
1616
return &CCTraceHeaderRequest{
17-
headers: shared.NewTraceHeaders(trace, span),
17+
headers: shared.NewTraceHeaders(trace),
1818
}
1919
}
2020

api/cloudcontroller/wrapper/trace_request_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@ var _ = Describe("CCTraceHeaderRequest", func() {
2323
makeErr error
2424

2525
traceHeader string
26-
spanHeader string
2726
)
2827

2928
BeforeEach(func() {
3029
fakeConnection = new(cloudcontrollerfakes.FakeConnection)
3130

3231
traceHeader = "trace-id"
33-
spanHeader = "span-id"
3432

35-
wrapper = NewCCTraceHeaderRequest(traceHeader, spanHeader).Wrap(fakeConnection)
33+
wrapper = NewCCTraceHeaderRequest(traceHeader).Wrap(fakeConnection)
3634

3735
body := bytes.NewReader([]byte("foo"))
3836

@@ -54,7 +52,7 @@ var _ = Describe("CCTraceHeaderRequest", func() {
5452
It("Adds the request headers", func() {
5553
Expect(makeErr).NotTo(HaveOccurred())
5654
Expect(request.Header.Get("X-B3-TraceId")).To(Equal(traceHeader))
57-
Expect(request.Header.Get("X-B3-SpanId")).To(Equal(spanHeader))
55+
Expect(request.Header.Get("X-B3-SpanId")).ToNot(BeEmpty())
5856
})
5957

6058
It("Calls the inner connection", func() {

api/router/wrapper/trace_request.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ type RoutingTraceHeaderRequest struct {
1212
}
1313

1414
// NewRoutingTraceHeaderRequest returns a pointer to a RoutingTraceHeaderRequest wrapper.
15-
func NewRoutingTraceHeaderRequest(trace, span string) *RoutingTraceHeaderRequest {
15+
func NewRoutingTraceHeaderRequest(trace string) *RoutingTraceHeaderRequest {
1616
return &RoutingTraceHeaderRequest{
17-
headers: shared.NewTraceHeaders(trace, span),
17+
headers: shared.NewTraceHeaders(trace),
1818
}
1919
}
2020

api/router/wrapper/trace_request_test.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,13 @@ var _ = Describe("CCTraceHeaderRequest", func() {
2323
makeErr error
2424

2525
traceHeader string
26-
spanHeader string
2726
)
2827

2928
BeforeEach(func() {
3029
fakeConnection = new(routerfakes.FakeConnection)
3130

3231
traceHeader = "trace-id"
33-
spanHeader = "span-id"
34-
35-
wrapper = NewRoutingTraceHeaderRequest(traceHeader, spanHeader).Wrap(fakeConnection)
32+
wrapper = NewRoutingTraceHeaderRequest(traceHeader).Wrap(fakeConnection)
3633

3734
body := bytes.NewReader([]byte("foo"))
3835

@@ -54,7 +51,7 @@ var _ = Describe("CCTraceHeaderRequest", func() {
5451
It("Adds the request headers", func() {
5552
Expect(makeErr).NotTo(HaveOccurred())
5653
Expect(request.Header.Get("X-B3-TraceId")).To(Equal(traceHeader))
57-
Expect(request.Header.Get("X-B3-SpanId")).To(Equal(spanHeader))
54+
Expect(request.Header.Get("X-B3-SpanId")).ToNot(BeEmpty())
5855
})
5956

6057
It("Calls the inner connection", func() {

api/shared/trace_headers.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package shared
22

33
import (
44
"net/http"
5+
6+
"code.cloudfoundry.org/cli/util/trace"
57
)
68

79
const (
@@ -12,14 +14,12 @@ const (
1214
// TraceHeaders sets b3 trace headers to requests.
1315
type TraceHeaders struct {
1416
b3trace string
15-
b3span string
1617
}
1718

1819
// NewTraceHeaders returns a pointer to a TraceHeaderRequest.
19-
func NewTraceHeaders(trace, span string) *TraceHeaders {
20+
func NewTraceHeaders(trace string) *TraceHeaders {
2021
return &TraceHeaders{
2122
b3trace: trace,
22-
b3span: span,
2323
}
2424
}
2525

@@ -30,6 +30,8 @@ func (t *TraceHeaders) SetHeaders(request *http.Request) {
3030
request.Header.Add(B3TraceIDHeader, t.b3trace)
3131
}
3232
if request.Header.Get(B3SpanIDHeader) == "" {
33-
request.Header.Add(B3SpanIDHeader, t.b3span)
33+
request.Header.Add(B3SpanIDHeader, trace.GenerateRandomTraceID(16))
3434
}
35+
36+
// request.Header.Add(("B3", request.Header.Get(B3TraceIDHeader)+request.Header.Get(B3SpanIDHeader)))
3537
}

api/shared/trace_headers_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ var _ = Describe("B3 Trace Headers", func() {
1313
Describe("SetHeaders", func() {
1414
Context("when there are already headers set", func() {
1515
It("does not add the headers", func() {
16-
traceHeaders := NewTraceHeaders("new_trace_id", "new_span_id")
16+
traceHeaders := NewTraceHeaders("new_trace_id")
1717
request := &http.Request{
1818
Header: http.Header{},
1919
}
@@ -28,14 +28,14 @@ var _ = Describe("B3 Trace Headers", func() {
2828

2929
Context("when there are no headers set", func() {
3030
It("adds the headers", func() {
31-
traceHeaders := NewTraceHeaders("new_trace_id", "new_span_id")
31+
traceHeaders := NewTraceHeaders("new_trace_id")
3232
request := &http.Request{
3333
Header: http.Header{},
3434
}
3535
traceHeaders.SetHeaders(request)
3636

3737
Expect(request.Header.Get("X-B3-TraceId")).To(Equal("new_trace_id"))
38-
Expect(request.Header.Get("X-B3-SpanId")).To(Equal("new_span_id"))
38+
Expect(request.Header.Get("X-B3-SpanId")).ToNot(BeEmpty())
3939
})
4040
})
4141
})

api/uaa/wrapper/trace_request.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ type UAATraceHeaderRequest struct {
1414
}
1515

1616
// NewUAATraceHeaderRequest returns a pointer to a UAATraceHeaderRequest wrapper.
17-
func NewUAATraceHeaderRequest(trace, span string) *UAATraceHeaderRequest {
17+
func NewUAATraceHeaderRequest(trace string) *UAATraceHeaderRequest {
1818
return &UAATraceHeaderRequest{
19-
headers: shared.NewTraceHeaders(trace, span),
19+
headers: shared.NewTraceHeaders(trace),
2020
}
2121
}
2222

api/uaa/wrapper/trace_request_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@ var _ = Describe("CCTraceHeaderRequest", func() {
2323
makeErr error
2424

2525
traceHeader string
26-
spanHeader string
2726
)
2827

2928
BeforeEach(func() {
3029
fakeConnection = new(uaafakes.FakeConnection)
3130

3231
traceHeader = "trace-id"
33-
spanHeader = "span-id"
3432

35-
wrapper = NewUAATraceHeaderRequest(traceHeader, spanHeader).Wrap(fakeConnection)
33+
wrapper = NewUAATraceHeaderRequest(traceHeader).Wrap(fakeConnection)
3634

3735
body := bytes.NewReader([]byte("foo"))
3836

@@ -54,7 +52,7 @@ var _ = Describe("CCTraceHeaderRequest", func() {
5452
It("Adds the request headers", func() {
5553
Expect(makeErr).NotTo(HaveOccurred())
5654
Expect(request.Header.Get("X-B3-TraceId")).To(Equal(traceHeader))
57-
Expect(request.Header.Get("X-B3-SpanId")).To(Equal(spanHeader))
55+
Expect(request.Header.Get("X-B3-SpanId")).ToNot(BeEmpty())
5856
})
5957

6058
It("Calls the inner connection", func() {

command/config.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ type Config interface {
1616
AuthorizationEndpoint() string
1717
APIVersion() string
1818
B3TraceID() string
19-
B3SpanID() string
2019
BinaryName() string
2120
BinaryVersion() string
2221
CFPassword() string

command/v7/shared/new_clients.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func NewWrappedCloudControllerClient(config command.Config, ui command.UI, extra
4747
}
4848

4949
ccWrappers = append(ccWrappers, extraWrappers...)
50-
ccWrappers = append(ccWrappers, ccWrapper.NewCCTraceHeaderRequest(config.B3TraceID(), config.B3SpanID()))
50+
ccWrappers = append(ccWrappers, ccWrapper.NewCCTraceHeaderRequest(config.B3TraceID()))
5151
ccWrappers = append(ccWrappers, ccWrapper.NewRetryRequest(config.RequestRetryCount()))
5252

5353
return ccv3.NewClient(ccv3.Config{
@@ -86,7 +86,7 @@ func newWrappedUAAClient(config command.Config, ui command.UI) (*uaa.Client, err
8686

8787
uaaAuthWrapper := uaaWrapper.NewUAAAuthentication(uaaClient, config)
8888
uaaClient.WrapConnection(uaaAuthWrapper)
89-
uaaClient.WrapConnection(uaaWrapper.NewUAATraceHeaderRequest(config.B3TraceID(), config.B3SpanID()))
89+
uaaClient.WrapConnection(uaaWrapper.NewUAATraceHeaderRequest(config.B3TraceID()))
9090
uaaClient.WrapConnection(uaaWrapper.NewRetryRequest(config.RequestRetryCount()))
9191

9292
err = uaaClient.SetupResources(config.UAAEndpoint(), config.AuthorizationEndpoint())
@@ -123,6 +123,8 @@ func newWrappedRoutingClient(config command.Config, ui command.UI, uaaClient *ua
123123
authWrapper := routingWrapper.NewUAAAuthentication(uaaClient, config)
124124

125125
routingWrappers = append(routingWrappers, authWrapper)
126+
routingWrappers = append(routingWrappers, routingWrapper.NewRoutingTraceHeaderRequest(config.B3TraceID()))
127+
126128
routingConfig.Wrappers = routingWrappers
127129

128130
routingClient := router.NewClient(routingConfig)

0 commit comments

Comments
 (0)