@@ -401,6 +401,10 @@ public void ToOtlpSpanTest()
401
401
{
402
402
OtlpTestHelpers . AssertOtlpAttributes ( childLinks [ i ] . Tags . ToList ( ) , otlpSpan . Links [ i ] . Attributes ) ;
403
403
}
404
+
405
+ var flags = ( OtlpTrace . SpanFlags ) otlpSpan . Flags ;
406
+ Assert . True ( flags . HasFlag ( OtlpTrace . SpanFlags . ContextHasIsRemoteMask ) ) ;
407
+ Assert . False ( flags . HasFlag ( OtlpTrace . SpanFlags . ContextIsRemoteMask ) ) ;
404
408
}
405
409
406
410
[ Fact ]
@@ -731,4 +735,99 @@ public void NamedOptionsMutateSeparateInstancesTest()
731
735
Assert . Equal ( "http://localhost/traces" , tracerOptions . Endpoint . OriginalString ) ;
732
736
Assert . Equal ( "http://localhost/metrics" , meterOptions . Endpoint . OriginalString ) ;
733
737
}
738
+
739
+ [ Theory ]
740
+ [ InlineData ( true , true ) ]
741
+ [ InlineData ( true , false ) ]
742
+ [ InlineData ( false , true ) ]
743
+ [ InlineData ( false , false ) ]
744
+ public void SpanFlagsTest ( bool isRecorded , bool isRemote )
745
+ {
746
+ using var activitySource = new ActivitySource ( nameof ( this . SpanFlagsTest ) ) ;
747
+
748
+ ActivityContext ctx = new ActivityContext (
749
+ ActivityTraceId . CreateRandom ( ) ,
750
+ ActivitySpanId . CreateRandom ( ) ,
751
+ isRecorded ? ActivityTraceFlags . Recorded : ActivityTraceFlags . None ,
752
+ isRemote : isRemote ) ;
753
+
754
+ using var rootActivity = activitySource . StartActivity ( "root" , ActivityKind . Server , ctx ) ;
755
+
756
+ var otlpSpan = rootActivity . ToOtlpSpan ( DefaultSdkLimitOptions ) ;
757
+
758
+ var flags = ( OtlpTrace . SpanFlags ) otlpSpan . Flags ;
759
+
760
+ ActivityTraceFlags traceFlags = ( ActivityTraceFlags ) ( flags & OtlpTrace . SpanFlags . TraceFlagsMask ) ;
761
+
762
+ if ( isRecorded )
763
+ {
764
+ Assert . True ( traceFlags . HasFlag ( ActivityTraceFlags . Recorded ) ) ;
765
+ }
766
+ else
767
+ {
768
+ Assert . False ( traceFlags . HasFlag ( ActivityTraceFlags . Recorded ) ) ;
769
+ }
770
+
771
+ Assert . True ( flags . HasFlag ( OtlpTrace . SpanFlags . ContextHasIsRemoteMask ) ) ;
772
+
773
+ if ( isRemote )
774
+ {
775
+ Assert . True ( flags . HasFlag ( OtlpTrace . SpanFlags . ContextIsRemoteMask ) ) ;
776
+ }
777
+ else
778
+ {
779
+ Assert . False ( flags . HasFlag ( OtlpTrace . SpanFlags . ContextIsRemoteMask ) ) ;
780
+ }
781
+ }
782
+
783
+ [ Theory ]
784
+ [ InlineData ( true , true ) ]
785
+ [ InlineData ( true , false ) ]
786
+ [ InlineData ( false , true ) ]
787
+ [ InlineData ( false , false ) ]
788
+ public void SpanLinkFlagsTest ( bool isRecorded , bool isRemote )
789
+ {
790
+ using var activitySource = new ActivitySource ( nameof ( this . SpanLinkFlagsTest ) ) ;
791
+
792
+ ActivityContext ctx = new ActivityContext (
793
+ ActivityTraceId . CreateRandom ( ) ,
794
+ ActivitySpanId . CreateRandom ( ) ,
795
+ isRecorded ? ActivityTraceFlags . Recorded : ActivityTraceFlags . None ,
796
+ isRemote : isRemote ) ;
797
+
798
+ var links = new [ ]
799
+ {
800
+ new ActivityLink ( ctx ) ,
801
+ } ;
802
+
803
+ using var rootActivity = activitySource . StartActivity ( "root" , ActivityKind . Server , default ( ActivityContext ) , links : links ) ;
804
+
805
+ var otlpSpan = rootActivity . ToOtlpSpan ( DefaultSdkLimitOptions ) ;
806
+
807
+ var spanLink = Assert . Single ( otlpSpan . Links ) ;
808
+
809
+ var flags = ( OtlpTrace . SpanFlags ) spanLink . Flags ;
810
+
811
+ ActivityTraceFlags traceFlags = ( ActivityTraceFlags ) ( flags & OtlpTrace . SpanFlags . TraceFlagsMask ) ;
812
+
813
+ if ( isRecorded )
814
+ {
815
+ Assert . True ( traceFlags . HasFlag ( ActivityTraceFlags . Recorded ) ) ;
816
+ }
817
+ else
818
+ {
819
+ Assert . False ( traceFlags . HasFlag ( ActivityTraceFlags . Recorded ) ) ;
820
+ }
821
+
822
+ Assert . True ( flags . HasFlag ( OtlpTrace . SpanFlags . ContextHasIsRemoteMask ) ) ;
823
+
824
+ if ( isRemote )
825
+ {
826
+ Assert . True ( flags . HasFlag ( OtlpTrace . SpanFlags . ContextIsRemoteMask ) ) ;
827
+ }
828
+ else
829
+ {
830
+ Assert . False ( flags . HasFlag ( OtlpTrace . SpanFlags . ContextIsRemoteMask ) ) ;
831
+ }
832
+ }
734
833
}
0 commit comments