11
11
12
12
public class When_incoming_message_was_delayed : OpenTelemetryAcceptanceTest // assuming W3C trace!
13
13
{
14
+ [ Test ]
15
+ public async Task By_sendoptions_Should_create_new_trace_and_set_current_activity ( )
16
+ {
17
+ var context = await Scenario . Define < Context > ( )
18
+ . WithEndpoint < TestEndpoint > ( b => b
19
+ . When ( s =>
20
+ {
21
+ var sendOptions = new SendOptions ( ) ;
22
+ sendOptions . DelayDeliveryWith ( TimeSpan . FromMilliseconds ( 100 ) ) ;
23
+ sendOptions . RouteToThisEndpoint ( ) ;
24
+ return s . Send ( new DelayedMessage ( ) , sendOptions ) ;
25
+ } ) )
26
+ . Done ( c => c . DelayedMessageReceived )
27
+ . Run ( ) ;
28
+
29
+ Assert . That ( context . DelayedMessageCurrentActivityId , Is . Not . Null , "delayed message current activityId is not null" ) ;
30
+ }
31
+
14
32
[ Test ]
15
33
public async Task By_sendoptions_Should_create_new_trace_and_link_to_send ( )
16
34
{
@@ -141,6 +159,10 @@ class Context : ScenarioContext
141
159
public string IncomingMessageId { get ; set ; }
142
160
public string ReplyMessageId { get ; set ; }
143
161
public bool IncomingMessageReceived { get ; set ; }
162
+ public bool DelayedMessageReceived { get ; set ; }
163
+ #nullable enable
164
+ public string ? DelayedMessageCurrentActivityId { get ; set ; }
165
+ #nullable disable
144
166
}
145
167
class SagaContext : ScenarioContext
146
168
{
@@ -162,6 +184,7 @@ public Task Handle(IncomingMessage message, IMessageHandlerContext context)
162
184
{
163
185
testContext . IncomingMessageId = context . MessageId ;
164
186
testContext . IncomingMessageReceived = true ;
187
+ //testContext.IncomingMessageCurrentActivityId = Activity.Current?.Id;
165
188
return context . Reply ( new ReplyMessage ( ) ) ;
166
189
}
167
190
}
@@ -198,6 +221,20 @@ public Task Handle(ReplyMessage message, IMessageHandlerContext context)
198
221
return Task . CompletedTask ;
199
222
}
200
223
}
224
+
225
+ class DelayedMessageHandler : IHandleMessages < DelayedMessage >
226
+ {
227
+ Context testContext ;
228
+
229
+ public DelayedMessageHandler ( Context testContext ) => this . testContext = testContext ;
230
+
231
+ public Task Handle ( DelayedMessage message , IMessageHandlerContext context )
232
+ {
233
+ testContext . DelayedMessageReceived = true ;
234
+ testContext . DelayedMessageCurrentActivityId = Activity . Current ? . Id ;
235
+ return Task . CompletedTask ;
236
+ }
237
+ }
201
238
}
202
239
203
240
class SagaOtelEndpoint : EndpointConfigurationBuilder
@@ -286,6 +323,10 @@ public class MessageToBeRetried : IMessage
286
323
{
287
324
}
288
325
326
+ public class DelayedMessage : IMessage
327
+ {
328
+ }
329
+
289
330
public class IncomingMessage : IMessage
290
331
{
291
332
}
0 commit comments