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
{
@@ -120,6 +138,10 @@ class Context : ScenarioContext
120
138
public string IncomingMessageId { get ; set ; }
121
139
public string ReplyMessageId { get ; set ; }
122
140
public bool IncomingMessageReceived { get ; set ; }
141
+ public bool DelayedMessageReceived { get ; set ; }
142
+ #nullable enable
143
+ public string ? DelayedMessageCurrentActivityId { get ; set ; }
144
+ #nullable disable
123
145
}
124
146
class SagaContext : ScenarioContext
125
147
{
@@ -141,6 +163,7 @@ public Task Handle(IncomingMessage message, IMessageHandlerContext context)
141
163
{
142
164
testContext . IncomingMessageId = context . MessageId ;
143
165
testContext . IncomingMessageReceived = true ;
166
+ //testContext.IncomingMessageCurrentActivityId = Activity.Current?.Id;
144
167
return context . Reply ( new ReplyMessage ( ) ) ;
145
168
}
146
169
}
@@ -177,6 +200,20 @@ public Task Handle(ReplyMessage message, IMessageHandlerContext context)
177
200
return Task . CompletedTask ;
178
201
}
179
202
}
203
+
204
+ class DelayedMessageHandler : IHandleMessages < DelayedMessage >
205
+ {
206
+ Context testContext ;
207
+
208
+ public DelayedMessageHandler ( Context testContext ) => this . testContext = testContext ;
209
+
210
+ public Task Handle ( DelayedMessage message , IMessageHandlerContext context )
211
+ {
212
+ testContext . DelayedMessageReceived = true ;
213
+ testContext . DelayedMessageCurrentActivityId = Activity . Current ? . Id ;
214
+ return Task . CompletedTask ;
215
+ }
216
+ }
180
217
}
181
218
182
219
class SagaOtelEndpoint : EndpointConfigurationBuilder
@@ -265,6 +302,10 @@ public class MessageToBeRetried : IMessage
265
302
{
266
303
}
267
304
305
+ public class DelayedMessage : IMessage
306
+ {
307
+ }
308
+
268
309
public class IncomingMessage : IMessage
269
310
{
270
311
}
0 commit comments