1- using Sentry . Protocol . Spans ;
1+ namespace Sentry . Tests . Protocol ;
22
3- namespace Sentry . Tests . Protocol . Envelopes ;
4-
5- public class SpanV2EnvelopeTests
3+ public class SpanV2Tests
64{
75 [ Fact ]
8- public async Task EnvelopeItem_FromSpanV2_SerializesHeaderWithContentTypeAndItemCount ( )
6+ public async Task EnvelopeItem_FromSpans_SerializesHeaderWithContentTypeAndItemCount ( )
97 {
108 var span = new SpanV2 ( SentryId . Parse ( "0123456789abcdef0123456789abcdef" ) , SpanId . Parse ( "0123456789abcdef" ) , "db" , DateTimeOffset . Parse ( "2020-01-01T00:00:00Z" ) )
119 {
@@ -14,7 +12,8 @@ public async Task EnvelopeItem_FromSpanV2_SerializesHeaderWithContentTypeAndItem
1412 EndTimestamp = DateTimeOffset . Parse ( "2020-01-01T00:00:01Z" ) ,
1513 } ;
1614
17- using var envelopeItem = EnvelopeItem . FromSpanV2 ( span ) ;
15+ var spanItems = new SpanV2Items ( [ span ] ) ;
16+ using var envelopeItem = EnvelopeItem . FromSpans ( spanItems ) ;
1817
1918 using var stream = new MemoryStream ( ) ;
2019 await envelopeItem . SerializeAsync ( stream , null ) ;
@@ -23,31 +22,34 @@ public async Task EnvelopeItem_FromSpanV2_SerializesHeaderWithContentTypeAndItem
2322 var output = await reader . ReadToEndAsync ( ) ;
2423
2524 var firstLine = output . Split ( '\n ' , StringSplitOptions . RemoveEmptyEntries ) [ 0 ] ;
26- firstLine . Should ( ) . Contain ( "\" type\" :\" span_v2 \" " ) ;
25+ firstLine . Should ( ) . Contain ( "\" type\" :\" span \" " ) ;
2726 firstLine . Should ( ) . Contain ( "\" item_count\" :1" ) ;
2827 firstLine . Should ( ) . Contain ( "\" content_type\" :\" application/vnd.sentry.items.span\\ u002Bjson\" " ) ;
2928 }
3029
3130 [ Fact ]
32- public void Envelope_FromSpanV2_ThrowsWhenMoreThan100Spans ( )
31+ public void Envelope_FromSpans_CreatesSingleItem ( )
3332 {
34- var spans = Enumerable . Range ( 0 , 101 ) . Select ( _ =>
35- new SpanV2 ( SentryId . Create ( ) , SpanId . Create ( ) , "op" , DateTimeOffset . UtcNow ) ) ;
33+ SpanV2 [ ] spans = [ new ( SentryId . Create ( ) , SpanId . Create ( ) , "op" , DateTimeOffset . UtcNow ) ] ;
3634
37- Action act = ( ) => Envelope . FromSpanV2 ( spans ) ;
35+ using var envelope = Envelope . FromSpans ( spans ) ;
3836
39- act . Should ( ) . Throw < ArgumentOutOfRangeException > ( ) ;
37+ envelope . Items . Should ( ) . HaveCount ( 1 ) ;
38+ envelope . Items [ 0 ] . TryGetType ( ) . Should ( ) . Be ( "span" ) ;
39+ envelope . Items [ 0 ] . Header . GetValueOrDefault ( "item_count" ) . Should ( ) . Be ( 1 ) ;
4040 }
4141
4242 [ Fact ]
43- public void Envelope_FromSpanV2_CreatesUpTo100Items ( )
43+ public void Envelope_FromSpan_RespectsMaxSpans ( )
4444 {
45- var spans = Enumerable . Range ( 0 , 100 ) . Select ( _ =>
46- new SpanV2 ( SentryId . Create ( ) , SpanId . Create ( ) , "op" , DateTimeOffset . UtcNow ) ) . ToList ( ) ;
45+ var spans = Enumerable . Range ( 0 , SpanV2 . MaxSpansPerEnvelope + 10 )
46+ . Select ( _ => new SpanV2 ( SentryId . Create ( ) , SpanId . Create ( ) , "op" , DateTimeOffset . UtcNow ) )
47+ . ToArray ( ) ;
4748
48- using var envelope = Envelope . FromSpanV2 ( spans ) ;
49+ using var envelope = Envelope . FromSpans ( spans ) ;
4950
50- envelope . Items . Should ( ) . HaveCount ( 100 ) ;
51- envelope . Items . All ( i => i . TryGetType ( ) == "span_v2" ) . Should ( ) . BeTrue ( ) ;
51+ envelope . Items . Should ( ) . HaveCount ( 1 ) ;
52+ envelope . Items [ 0 ] . TryGetType ( ) . Should ( ) . Be ( "span" ) ;
53+ envelope . Items [ 0 ] . Header . GetValueOrDefault ( "item_count" ) . Should ( ) . Be ( SpanV2 . MaxSpansPerEnvelope ) ;
5254 }
5355}
0 commit comments