@@ -275,7 +275,7 @@ def test_do_request(
275275@pytest .mark .parametrize ("otel_mode" , [0 , 1 ], ids = ["to mock" , "to otelcol" ])
276276class TestOTelSpans :
277277 @pytest .mark .parametrize (
278- ("idx" , "value" ), [( 0 , 10 ), ( 1 , 10 ), ( 2 , 10 )] , ids = ["batch" ] * 3
278+ ("idx" , "value" ), enumerate ([ 10 ] * 3 ) , ids = ["batch" ] * 3
279279 )
280280 def test_batch_size (self , http_ver , batches , idx , value , otel_mode ):
281281 assert len (batches [idx ][0 ].scope_spans [0 ].spans ) == value
@@ -442,34 +442,28 @@ def test_no_custom_metrics(
442442 ):
443443 assert span_attr (span , name , atype ) == value
444444
445+ @pytest .mark .parametrize ("idx" , [0 , 1 ], ids = ["no context" , "context" ])
445446 @pytest .mark .parametrize (
446- ("name" , "value" , "idx" ),
447+ ("name" , "value" ),
447448 [
448- ("X-Otel-Trace-Id" , "trace_id" , 0 ),
449- ("X-Otel-Span-Id" , "span_id" , 0 ),
450- ("X-Otel-Parent-Id" , None , 0 ),
451- ("X-Otel-Parent-Sampled" , "0" , 0 ),
452- ("X-Otel-Trace-Id" , trace_id , 1 ),
453- ("X-Otel-Span-Id" , "span_id" , 1 ),
454- ("X-Otel-Parent-Id" , span_id , 1 ),
455- ("X-Otel-Parent-Sampled" , "1" , 1 ),
449+ ("X-Otel-Trace-Id" , ["trace_id" , trace_id ]),
450+ ("X-Otel-Span-Id" , ["span_id" ] * 2 ),
451+ ("X-Otel-Parent-Id" , [None , span_id ]),
452+ ("X-Otel-Parent-Sampled" , ["0" , "1" ]),
456453 ],
457454 ids = [
458- "otel_trace_id-no context" ,
459- "otel_span_id-no context" ,
460- "otel_parent_id-no context" ,
461- "otel_parent_sampled-no context" ,
462- "otel_trace_id-context" ,
463- "otel_span_id-context" ,
464- "otel_parent_id-context" ,
465- "otel_parent_sampled-context" ,
455+ "otel_trace_id" ,
456+ "otel_span_id" ,
457+ "otel_parent_id" ,
458+ "otel_parent_sampled" ,
466459 ],
467460 )
468461 def test_variables (
469462 self , http_ver , span , headers , name , value , idx , otel_mode
470463 ):
471464 if http_ver == 0 :
472465 pytest .skip ("no headers support" )
466+ value = value [idx ]
473467 if type (value ) is str and value in ["trace_id" , "span_id" ]:
474468 value = hexlify (getattr (span , value )).decode ("utf-8" )
475469 assert headers .get (name ) == value
@@ -497,77 +491,41 @@ def test_no_variables(self, http_ver, headers, name, value, idx, otel_mode):
497491 assert headers .get (name ) == value
498492
499493 @pytest .mark .parametrize (
500- ("name" , "value" , "idx" ),
494+ "idx" ,
495+ range (2 , 10 ),
496+ ids = ["ingnore-no context" , "ingnore-context" ]
497+ + ["extract-no context" , "extract-context" ]
498+ + ["inject-no context" , "inject-context" ]
499+ + ["propagate-no context" , "propagate-context" ],
500+ )
501+ @pytest .mark .parametrize (
502+ ("name" , "value" ),
501503 [
502- ("X-Otel-Parent-Id" , None , 2 ),
503- ("X-Otel-Traceparent" , None , 2 ),
504- ("X-Otel-Tracestate" , None , 2 ),
505- ("X-Otel-Parent-Id" , None , 3 ),
506- ("X-Otel-Traceparent" , context ["Traceparent" ], 3 ),
507- ("X-Otel-Tracestate" , context ["Tracestate" ], 3 ),
508- ]
509- + [
510- ("X-Otel-Parent-Id" , None , 4 ),
511- ("X-Otel-Traceparent" , None , 4 ),
512- ("X-Otel-Tracestate" , None , 4 ),
513- ("X-Otel-Parent-Id" , span_id , 5 ),
514- ("X-Otel-Traceparent" , context ["Traceparent" ], 5 ),
515- ("X-Otel-Tracestate" , context ["Tracestate" ], 5 ),
516- ]
517- + [
518- ("X-Otel-Parent-Id" , None , 6 ),
519- ("X-Otel-Traceparent" , "00-trace_id-span_id-01" , 6 ),
520- ("X-Otel-Tracestate" , None , 6 ),
521- ("X-Otel-Parent-Id" , None , 7 ),
522- ("X-Otel-Traceparent" , "00-trace_id-span_id-01" , 7 ),
523- ("X-Otel-Tracestate" , None , 7 ),
524- ]
525- + [
526- ("X-Otel-Parent-Id" , None , 8 ),
527- ("X-Otel-Traceparent" , "00-trace_id-span_id-01" , 8 ),
528- ("X-Otel-Tracestate" , None , 8 ),
529- ("X-Otel-Parent-Id" , span_id , 9 ),
530- ("X-Otel-Traceparent" , f"00-{ trace_id } -span_id-01" , 9 ),
531- ("X-Otel-Tracestate" , context ["Tracestate" ], 9 ),
532- ],
533- ids = [
534- "ignore-parent id-no context" ,
535- "ignore-traceparent-no context" ,
536- "ignore-tracestate-no context" ,
537- "ignore-parent id-context" ,
538- "ignore-traceparent-context" ,
539- "ignore-tracestate-context" ,
540- ]
541- + [
542- "extract-parent id-no context" ,
543- "extract-traceparent-no context" ,
544- "extract-tracestate-no context" ,
545- "extract-parent id-context" ,
546- "extract-traceparent-context" ,
547- "extract-tracestate-context" ,
548- ]
549- + [
550- "inject-parent id-no context" ,
551- "inject-traceparent-no context" ,
552- "inject-tracestate-no context" ,
553- "inject-parent id-context" ,
554- "inject-traceparent-context" ,
555- "inject-tracestate-context" ,
556- ]
557- + [
558- "propagate-parent id-no context" ,
559- "propagate-traceparent-no context" ,
560- "propagate-tracestate-no context" ,
561- "propagate-parent id-context" ,
562- "propagate-traceparent-context" ,
563- "propagate-tracestate-context" ,
504+ (
505+ "X-Otel-Parent-Id" ,
506+ [None ] * 3 + [span_id ] + [None ] * 3 + [span_id ],
507+ ),
508+ (
509+ "X-Otel-Traceparent" ,
510+ [None , context ["Traceparent" ]] * 2
511+ + ["00-trace_id-span_id-01" ] * 3
512+ + [f"00-{ trace_id } -span_id-01" ],
513+ ),
514+ (
515+ "X-Otel-Tracestate" ,
516+ [None , context ["Tracestate" ]] * 2
517+ + [None ] * 3
518+ + [context ["Tracestate" ]],
519+ ),
564520 ],
521+ ids = ["parent id" , "traceparent" , "tracestate" ],
565522 )
566523 def test_trace_context (
567524 self , http_ver , span , headers , name , value , idx , otel_mode
568525 ):
569526 if http_ver == 0 :
570527 pytest .skip ("no headers support" )
528+ value = value [idx - 2 ]
571529 if type (value ) is str :
572530 value = "-" .join (
573531 (
0 commit comments