@@ -74,3 +74,51 @@ func TestTransportBasics(t *testing.T) {
74
74
t .Fatalf ("unexpected content: got %s, expected %s" , body , content )
75
75
}
76
76
}
77
+
78
+ func TestNilTransport (t * testing.T ) {
79
+ prop := propagation.TraceContext {}
80
+ provider := oteltest .NewTracerProvider ()
81
+ content := []byte ("Hello, world!" )
82
+
83
+ ts := httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
84
+ ctx := prop .Extract (r .Context (), propagation .HeaderCarrier (r .Header ))
85
+ span := trace .RemoteSpanContextFromContext (ctx )
86
+ tgtID , err := trace .SpanIDFromHex (fmt .Sprintf ("%016x" , uint (2 )))
87
+ if err != nil {
88
+ t .Fatalf ("Error converting id to SpanID: %s" , err .Error ())
89
+ }
90
+ if span .SpanID () != tgtID {
91
+ t .Fatalf ("testing remote SpanID: got %s, expected %s" , span .SpanID (), tgtID )
92
+ }
93
+ if _ , err := w .Write (content ); err != nil {
94
+ t .Fatal (err )
95
+ }
96
+ }))
97
+ defer ts .Close ()
98
+
99
+ r , err := http .NewRequest (http .MethodGet , ts .URL , nil )
100
+ if err != nil {
101
+ t .Fatal (err )
102
+ }
103
+
104
+ tr := NewTransport (
105
+ nil ,
106
+ WithTracerProvider (provider ),
107
+ WithPropagators (prop ),
108
+ )
109
+
110
+ c := http.Client {Transport : tr }
111
+ res , err := c .Do (r )
112
+ if err != nil {
113
+ t .Fatal (err )
114
+ }
115
+
116
+ body , err := ioutil .ReadAll (res .Body )
117
+ if err != nil {
118
+ t .Fatal (err )
119
+ }
120
+
121
+ if ! bytes .Equal (body , content ) {
122
+ t .Fatalf ("unexpected content: got %s, expected %s" , body , content )
123
+ }
124
+ }
0 commit comments