11from flask import Blueprint
22
3+ from ddtrace .contrib .flask .patch import flask_version
34from ddtrace .ext import http
45from tests .utils import assert_span_http_status_code
56
67from . import BaseFlaskTestCase
78
89
10+ REMOVED_SPANS_2_2_0 = 1 if flask_version >= (2 , 2 , 0 ) else 0
11+
12+
913class FlaskHookTestCase (BaseFlaskTestCase ):
1014 def setUp (self ):
1115 super (FlaskHookTestCase , self ).setUp ()
@@ -35,7 +39,7 @@ def before_request():
3539 self .assertEqual (req .data , b"Hello Flask" )
3640
3741 spans = self .get_spans ()
38- self .assertEqual (len (spans ), 9 )
42+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
3943
4044 # DEV: This will raise an exception if this span doesn't exist
4145 self .find_span_by_name (spans , "flask.dispatch_request" )
@@ -68,7 +72,7 @@ def before_request():
6872 self .assertEqual (req .data , b"Not Allowed" )
6973
7074 spans = self .get_spans ()
71- self .assertEqual (len (spans ), 7 )
75+ self .assertEqual (len (spans ), 7 - REMOVED_SPANS_2_2_0 )
7276
7377 dispatch = self .find_span_by_name (spans , "flask.dispatch_request" , required = False )
7478 self .assertIsNone (dispatch )
@@ -112,7 +116,7 @@ def before_first_request():
112116 self .assertEqual (req .data , b"Hello Flask" )
113117
114118 spans = self .get_spans ()
115- self .assertEqual (len (spans ), 9 )
119+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
116120
117121 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.before_first_request" )
118122 parent = self .find_span_parent (spans , span )
@@ -124,15 +128,18 @@ def before_first_request():
124128 self .assertEqual (span .get_tags (), dict ())
125129
126130 # Assert correct parent span
127- self .assertEqual (parent .name , "flask.try_trigger_before_first_request_functions" )
131+ if flask_version >= (2 , 2 , 0 ):
132+ self .assertEqual (parent .name , "flask.request" )
133+ else :
134+ self .assertEqual (parent .name , "flask.try_trigger_before_first_request_functions" )
128135
129136 # Make a second request to ensure a span isn't created
130137 req = self .client .get ("/" )
131138 self .assertEqual (req .status_code , 200 )
132139 self .assertEqual (req .data , b"Hello Flask" )
133140
134141 spans = self .get_spans ()
135- self .assertEqual (len (spans ), 8 )
142+ self .assertEqual (len (spans ), 8 - REMOVED_SPANS_2_2_0 )
136143
137144 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.before_first_request" , required = False )
138145 self .assertIsNone (span )
@@ -152,7 +159,7 @@ def after_request(response):
152159 self .assertEqual (req .data , b"Hello Flask" )
153160
154161 spans = self .get_spans ()
155- self .assertEqual (len (spans ), 9 )
162+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
156163
157164 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.after_request" )
158165 parent = self .find_span_parent (spans , span )
@@ -182,7 +189,7 @@ def after_request(response):
182189 self .assertEqual (req .data , b"Hello Flask" )
183190
184191 spans = self .get_spans ()
185- self .assertEqual (len (spans ), 9 )
192+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
186193
187194 root = self .find_span_by_name (spans , "flask.request" )
188195 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.after_request" )
@@ -215,7 +222,7 @@ def teardown_request(request):
215222 self .assertEqual (req .data , b"Hello Flask" )
216223
217224 spans = self .get_spans ()
218- self .assertEqual (len (spans ), 9 )
225+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
219226
220227 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.teardown_request" )
221228 parent = self .find_span_parent (spans , span )
@@ -244,7 +251,7 @@ def teardown_appcontext(appctx):
244251 self .assertEqual (req .data , b"Hello Flask" )
245252
246253 spans = self .get_spans ()
247- self .assertEqual (len (spans ), 9 )
254+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
248255
249256 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.teardown_appcontext" )
250257 parent = self .find_span_parent (spans , span )
@@ -274,7 +281,7 @@ def bp_before_request():
274281 self .assertEqual (req .data , b"Hello Blueprint" )
275282
276283 spans = self .get_spans ()
277- self .assertEqual (len (spans ), 9 )
284+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
278285
279286 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.bp_before_request" )
280287 parent = self .find_span_parent (spans , span )
@@ -304,7 +311,7 @@ def bp_before_app_request():
304311 self .assertEqual (req .data , b"Hello Flask" )
305312
306313 spans = self .get_spans ()
307- self .assertEqual (len (spans ), 9 )
314+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
308315
309316 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.bp_before_app_request" )
310317 parent = self .find_span_parent (spans , span )
@@ -334,7 +341,7 @@ def bp_before_app_first_request():
334341 self .assertEqual (req .data , b"Hello Flask" )
335342
336343 spans = self .get_spans ()
337- self .assertEqual (len (spans ), 9 )
344+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
338345
339346 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.bp_before_app_first_request" )
340347 parent = self .find_span_parent (spans , span )
@@ -346,15 +353,18 @@ def bp_before_app_first_request():
346353 self .assertEqual (span .get_tags (), dict ())
347354
348355 # Assert correct parent span
349- self .assertEqual (parent .name , "flask.try_trigger_before_first_request_functions" )
356+ if flask_version >= (2 , 2 , 0 ):
357+ self .assertEqual (parent .name , "flask.request" )
358+ else :
359+ self .assertEqual (parent .name , "flask.try_trigger_before_first_request_functions" )
350360
351361 # Make a second request to ensure a span isn't created
352362 req = self .client .get ("/" )
353363 self .assertEqual (req .status_code , 200 )
354364 self .assertEqual (req .data , b"Hello Flask" )
355365
356366 spans = self .get_spans ()
357- self .assertEqual (len (spans ), 8 )
367+ self .assertEqual (len (spans ), 8 - REMOVED_SPANS_2_2_0 )
358368
359369 span = self .find_span_by_name (
360370 spans ,
@@ -379,7 +389,7 @@ def bp_after_request(response):
379389 self .assertEqual (req .data , b"Hello Blueprint" )
380390
381391 spans = self .get_spans ()
382- self .assertEqual (len (spans ), 9 )
392+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
383393
384394 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.bp_after_request" )
385395 parent = self .find_span_parent (spans , span )
@@ -409,7 +419,7 @@ def bp_after_app_request(response):
409419 self .assertEqual (req .data , b"Hello Flask" )
410420
411421 spans = self .get_spans ()
412- self .assertEqual (len (spans ), 9 )
422+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
413423
414424 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.bp_after_app_request" )
415425 parent = self .find_span_parent (spans , span )
@@ -439,7 +449,7 @@ def bp_teardown_request(request):
439449 self .assertEqual (req .data , b"Hello Blueprint" )
440450
441451 spans = self .get_spans ()
442- self .assertEqual (len (spans ), 9 )
452+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
443453
444454 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.bp_teardown_request" )
445455 parent = self .find_span_parent (spans , span )
@@ -469,7 +479,7 @@ def bp_teardown_app_request(request):
469479 self .assertEqual (req .data , b"Hello Flask" )
470480
471481 spans = self .get_spans ()
472- self .assertEqual (len (spans ), 9 )
482+ self .assertEqual (len (spans ), 9 - REMOVED_SPANS_2_2_0 )
473483
474484 span = self .find_span_by_name (spans , "tests.contrib.flask.test_hooks.bp_teardown_app_request" )
475485 parent = self .find_span_parent (spans , span )
0 commit comments