@@ -179,14 +179,14 @@ func TestError(t *testing.T) {
179179 mt := mocktracer .Start ()
180180 defer mt .Stop ()
181181
182- // setup
183- router := gin .New ()
184- router .Use (Middleware ("foobar" ))
185182 responseErr := errors .New ("oh no" )
186183
187- t .Run ("server error" , func (* testing.T ) {
184+ t .Run ("server error - with error propagation " , func (* testing.T ) {
188185 defer mt .Reset ()
189186
187+ router := gin .New ()
188+ router .Use (Middleware ("foobar" , WithErrorPropagation ()))
189+
190190 // configure a handler that returns an error and 5xx status code
191191 router .GET ("/server_err" , func (c * gin.Context ) {
192192 c .AbortWithError (500 , responseErr )
@@ -216,9 +216,47 @@ func TestError(t *testing.T) {
216216 assert .Equal (componentName , span .Integration ())
217217 })
218218
219+ t .Run ("server error - without error propagation" , func (* testing.T ) {
220+ defer mt .Reset ()
221+
222+ router := gin .New ()
223+ router .Use (Middleware ("foobar" ))
224+
225+ // configure a handler that returns an error and 5xx status code
226+ router .GET ("/server_err" , func (c * gin.Context ) {
227+ c .AbortWithError (500 , responseErr )
228+ })
229+ r := httptest .NewRequest ("GET" , "/server_err" , nil )
230+ w := httptest .NewRecorder ()
231+ router .ServeHTTP (w , r )
232+ response := w .Result ()
233+ defer response .Body .Close ()
234+ assert .Equal (response .StatusCode , 500 )
235+
236+ // verify the errors and status are correct
237+ spans := mt .FinishedSpans ()
238+ assert .Len (spans , 1 )
239+ if len (spans ) < 1 {
240+ t .Fatalf ("no spans" )
241+ }
242+ span := spans [0 ]
243+ assert .Equal ("http.request" , span .OperationName ())
244+ assert .Equal ("foobar" , span .Tag (ext .ServiceName ))
245+ assert .Equal ("500" , span .Tag (ext .HTTPCode ))
246+ assert .Equal (fmt .Sprintf ("Error #01: %s\n " , responseErr ), span .Tag ("gin.errors" ))
247+ // server errors set the ext.ErrorMsg tag
248+ assert .Equal ("500: Internal Server Error" , span .Tag (ext .ErrorMsg ))
249+ assert .Equal (ext .SpanKindServer , span .Tag (ext .SpanKind ))
250+ assert .Equal ("gin-gonic/gin" , span .Tag (ext .Component ))
251+ assert .Equal (componentName , span .Integration ())
252+ })
253+
219254 t .Run ("client error" , func (* testing.T ) {
220255 defer mt .Reset ()
221256
257+ router := gin .New ()
258+ router .Use (Middleware ("foobar" ))
259+
222260 // configure a handler that returns an error and 4xx status code
223261 router .GET ("/client_err" , func (c * gin.Context ) {
224262 c .AbortWithError (418 , responseErr )
0 commit comments