@@ -954,7 +954,9 @@ def test_ignore_spans_promoting(sentry_init, capture_envelopes):
954954 assert len (spans ) == 2
955955 (span1 , span2 ) = spans
956956 assert span1 ["name" ] == "not ignored 1"
957+ assert span1 ["parent_span_id" ] is None
957958 assert span2 ["name" ] == "not ignored 2"
959+ assert span2 ["parent_span_id" ] is None
958960
959961
960962def test_ignore_spans_reparenting (sentry_init , capture_envelopes ):
@@ -985,6 +987,69 @@ def test_ignore_spans_reparenting(sentry_init, capture_envelopes):
985987 (span3 , span1 ) = spans
986988 assert span1 ["name" ] == "not ignored segment"
987989 assert span3 ["name" ] == "not ignored child"
990+ assert span3 ["parent_span_id" ] == span1 ["span_id" ]
991+
992+
993+ def test_ignore_spans_set_ignored_span_as_parent (sentry_init , capture_envelopes ):
994+ sentry_init (
995+ traces_sample_rate = 1.0 ,
996+ _experiments = {
997+ "trace_lifecycle" : "stream" ,
998+ "ignore_spans" : ["ignored" ],
999+ },
1000+ )
1001+
1002+ events = capture_envelopes ()
1003+
1004+ with sentry_sdk .traces .start_span (name = "ignored" ) as ignored_span :
1005+ assert ignored_span .sampled is False
1006+
1007+ with sentry_sdk .traces .start_span (
1008+ name = "not ignored" , parent_span = ignored_span
1009+ ) as span :
1010+ assert span .sampled is True
1011+ assert span .parent_span_id is None
1012+
1013+ sentry_sdk .get_client ().flush ()
1014+ spans = envelopes_to_spans (events )
1015+
1016+ assert len (spans ) == 1
1017+ (span ,) = spans
1018+ assert span ["name" ] == "not ignored"
1019+ assert span ["parent_span_id" ] is None
1020+
1021+
1022+ def test_ignore_spans_set_ignored_child_span_as_parent (sentry_init , capture_envelopes ):
1023+ sentry_init (
1024+ traces_sample_rate = 1.0 ,
1025+ _experiments = {
1026+ "trace_lifecycle" : "stream" ,
1027+ "ignore_spans" : ["ignored" ],
1028+ },
1029+ )
1030+
1031+ events = capture_envelopes ()
1032+
1033+ with sentry_sdk .traces .start_span (name = "not ignored segment" ) as segment :
1034+ assert segment .sampled is True
1035+
1036+ with sentry_sdk .traces .start_span (name = "ignored" ) as ignored_span :
1037+ assert ignored_span .sampled is False
1038+
1039+ with sentry_sdk .traces .start_span (
1040+ name = "not ignored child" , parent_span = ignored_span
1041+ ) as span :
1042+ assert span .sampled is True
1043+ assert span .parent_span_id == segment .span_id
1044+
1045+ sentry_sdk .get_client ().flush ()
1046+ spans = envelopes_to_spans (events )
1047+
1048+ assert len (spans ) == 2
1049+ (child , segment ) = spans
1050+ assert segment ["name" ] == "not ignored segment"
1051+ assert child ["name" ] == "not ignored child"
1052+ assert child ["parent_span_id" ] == segment ["span_id" ]
9881053
9891054
9901055def test_transport_format (sentry_init , capture_envelopes ):
0 commit comments