OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / go-kit / kit / tracing / opentracing / endpoint_test.go
1 package opentracing_test
2
3 import (
4         "context"
5         "testing"
6
7         "github.com/opentracing/opentracing-go"
8         "github.com/opentracing/opentracing-go/mocktracer"
9
10         "github.com/go-kit/kit/endpoint"
11         kitot "github.com/go-kit/kit/tracing/opentracing"
12 )
13
14 func TestTraceServer(t *testing.T) {
15         tracer := mocktracer.New()
16
17         // Initialize the ctx with a nameless Span.
18         contextSpan := tracer.StartSpan("").(*mocktracer.MockSpan)
19         ctx := opentracing.ContextWithSpan(context.Background(), contextSpan)
20
21         tracedEndpoint := kitot.TraceServer(tracer, "testOp")(endpoint.Nop)
22         if _, err := tracedEndpoint(ctx, struct{}{}); err != nil {
23                 t.Fatal(err)
24         }
25
26         finishedSpans := tracer.FinishedSpans()
27         if want, have := 1, len(finishedSpans); want != have {
28                 t.Fatalf("Want %v span(s), found %v", want, have)
29         }
30
31         // Test that the op name is updated
32         endpointSpan := finishedSpans[0]
33         if want, have := "testOp", endpointSpan.OperationName; want != have {
34                 t.Fatalf("Want %q, have %q", want, have)
35         }
36         contextContext := contextSpan.Context().(mocktracer.MockSpanContext)
37         endpointContext := endpointSpan.Context().(mocktracer.MockSpanContext)
38         // ...and that the ID is unmodified.
39         if want, have := contextContext.SpanID, endpointContext.SpanID; want != have {
40                 t.Errorf("Want SpanID %q, have %q", want, have)
41         }
42 }
43
44 func TestTraceServerNoContextSpan(t *testing.T) {
45         tracer := mocktracer.New()
46
47         // Empty/background context.
48         tracedEndpoint := kitot.TraceServer(tracer, "testOp")(endpoint.Nop)
49         if _, err := tracedEndpoint(context.Background(), struct{}{}); err != nil {
50                 t.Fatal(err)
51         }
52
53         // tracedEndpoint created a new Span.
54         finishedSpans := tracer.FinishedSpans()
55         if want, have := 1, len(finishedSpans); want != have {
56                 t.Fatalf("Want %v span(s), found %v", want, have)
57         }
58
59         endpointSpan := finishedSpans[0]
60         if want, have := "testOp", endpointSpan.OperationName; want != have {
61                 t.Fatalf("Want %q, have %q", want, have)
62         }
63 }
64
65 func TestTraceClient(t *testing.T) {
66         tracer := mocktracer.New()
67
68         // Initialize the ctx with a parent Span.
69         parentSpan := tracer.StartSpan("parent").(*mocktracer.MockSpan)
70         defer parentSpan.Finish()
71         ctx := opentracing.ContextWithSpan(context.Background(), parentSpan)
72
73         tracedEndpoint := kitot.TraceClient(tracer, "testOp")(endpoint.Nop)
74         if _, err := tracedEndpoint(ctx, struct{}{}); err != nil {
75                 t.Fatal(err)
76         }
77
78         // tracedEndpoint created a new Span.
79         finishedSpans := tracer.FinishedSpans()
80         if want, have := 1, len(finishedSpans); want != have {
81                 t.Fatalf("Want %v span(s), found %v", want, have)
82         }
83
84         endpointSpan := finishedSpans[0]
85         if want, have := "testOp", endpointSpan.OperationName; want != have {
86                 t.Fatalf("Want %q, have %q", want, have)
87         }
88
89         parentContext := parentSpan.Context().(mocktracer.MockSpanContext)
90         endpointContext := parentSpan.Context().(mocktracer.MockSpanContext)
91
92         // ... and that the parent ID is set appropriately.
93         if want, have := parentContext.SpanID, endpointContext.SpanID; want != have {
94                 t.Errorf("Want ParentID %q, have %q", want, have)
95         }
96 }
97
98 func TestTraceClientNoContextSpan(t *testing.T) {
99         tracer := mocktracer.New()
100
101         // Empty/background context.
102         tracedEndpoint := kitot.TraceClient(tracer, "testOp")(endpoint.Nop)
103         if _, err := tracedEndpoint(context.Background(), struct{}{}); err != nil {
104                 t.Fatal(err)
105         }
106
107         // tracedEndpoint created a new Span.
108         finishedSpans := tracer.FinishedSpans()
109         if want, have := 1, len(finishedSpans); want != have {
110                 t.Fatalf("Want %v span(s), found %v", want, have)
111         }
112
113         endpointSpan := finishedSpans[0]
114         if want, have := "testOp", endpointSpan.OperationName; want != have {
115                 t.Fatalf("Want %q, have %q", want, have)
116         }
117 }