|
15 | 15 | package zipkintracer_test
|
16 | 16 |
|
17 | 17 | import (
|
| 18 | + "net/http" |
18 | 19 | stdHTTP "net/http"
|
19 | 20 | "reflect"
|
20 | 21 | "testing"
|
@@ -249,6 +250,47 @@ func TestHTTPExtractInvalidParentIDError(t *testing.T) {
|
249 | 250 |
|
250 | 251 | }
|
251 | 252 |
|
| 253 | +// httpHeadersCarrier implements opentracing.TextMapReader |
| 254 | +type httpHeadersCarrier http.Header |
| 255 | + |
| 256 | +func (c httpHeadersCarrier) Set(key, val string) { |
| 257 | + h := http.Header(c) |
| 258 | + h.Set(key, val) |
| 259 | +} |
| 260 | + |
| 261 | +func (c httpHeadersCarrier) ForeachKey(handler func(key, val string) error) error { |
| 262 | + for k, vals := range c { |
| 263 | + for _, v := range vals { |
| 264 | + if err := handler(k, v); err != nil { |
| 265 | + return err |
| 266 | + } |
| 267 | + } |
| 268 | + } |
| 269 | + return nil |
| 270 | +} |
| 271 | + |
| 272 | +func TestTextMapReaderIsCaseInsensitive(t *testing.T) { |
| 273 | + tracer := zipkintracer.Wrap(nil) |
| 274 | + c := stdHTTP.Header{} |
| 275 | + c.Set("X-B3-Traceid", "1") |
| 276 | + c.Set("X-B3-Spanid", "2") |
| 277 | + |
| 278 | + sc, err := tracer.Extract(opentracing.HTTPHeaders, httpHeadersCarrier(c)) |
| 279 | + if err != nil { |
| 280 | + t.Errorf("unexpected error: %v", err) |
| 281 | + } |
| 282 | + |
| 283 | + zsc, _ := sc.(zipkintracer.SpanContext) |
| 284 | + if want, have := "0000000000000001", zsc.TraceID.String(); want != have { |
| 285 | + t.Errorf("Extract Error want %+v, have %+v", want, have) |
| 286 | + } |
| 287 | + |
| 288 | + if want, have := "0000000000000002", zsc.ID.String(); want != have { |
| 289 | + t.Errorf("Extract Error want %+v, have %+v", want, have) |
| 290 | + } |
| 291 | + |
| 292 | +} |
| 293 | + |
252 | 294 | func TestHTTPInjectEmptyContextError(t *testing.T) {
|
253 | 295 | tracer := zipkintracer.Wrap(nil)
|
254 | 296 | err := tracer.Inject(zipkintracer.SpanContext{}, opentracing.HTTPHeaders, opentracing.HTTPHeadersCarrier{})
|
@@ -368,7 +410,6 @@ func TestTextMapCarrier(t *testing.T) {
|
368 | 410 | })
|
369 | 411 |
|
370 | 412 | otSC, err := tracer.Extract(opentracing.TextMap, otMap)
|
371 |
| - |
372 | 413 | if err != nil {
|
373 | 414 | t.Errorf("[%d] Unexpected Extract failure %v", injectOption, err)
|
374 | 415 | }
|
|
0 commit comments