Skip to content

Commit c9b9710

Browse files
committed
Bump message-test timeouts to 60s to absorb push-only delivery latency
Push-only delivery (watchdog poll + suspend/restart) is slower than the old synchronous fetch, and under the full parallel suite some message-delivery tests exceeded their 10s waits. Raise the harness waits (BusyWaitUntil / Completion) and the in-flow "before timeout" message waits to 60s. Harmless on success (waits return as soon as the flow completes); only affects the slow path.
1 parent 4568ce6 commit c9b9710

2 files changed

Lines changed: 34 additions & 34 deletions

File tree

Core/Cleipnir.ResilientFunctions.Tests/Messaging/TestTemplates/MessagesSubscriptionTests.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ protected async Task QueueClientCanPullSingleMessage(Task<IFunctionStore> functi
102102
var messageWriter = rFunc.MessageWriters.For("instanceId".ToFlowInstance());
103103
await messageWriter.AppendMessage("test message");
104104

105-
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(5));
105+
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(60));
106106
result.ShouldBe("test message");
107107

108108
unhandledExceptionCatcher.ShouldNotHaveExceptions();
@@ -142,7 +142,7 @@ protected async Task QueueClientCanPullMultipleMessages(Task<IFunctionStore> fun
142142
await messageWriter.AppendMessage("second");
143143
await messageWriter.AppendMessage("third");
144144

145-
var result = await scheduled.Completion(TimeSpan.FromSeconds(5));
145+
var result = await scheduled.Completion(TimeSpan.FromSeconds(60));
146146
result.ShouldBe("first,second,third");
147147

148148
var results = await functionStore.EffectsStore.GetEffectResults([storedId!]);
@@ -174,7 +174,7 @@ protected async Task QueueClientReturnsNullAfterTimeout(Task<IFunctionStore> fun
174174
var scheduled = await rFunc.Schedule("instanceId", "");
175175
// No message is sent, so the pull should timeout
176176

177-
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(5));
177+
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(60));
178178
result.ShouldBeNull();
179179

180180
var cp = await rFunc.ControlPanel("instanceId").ShouldNotBeNullAsync();
@@ -230,7 +230,7 @@ protected async Task QueueClientPullsFiveMessagesAndTimesOutOnSixth(Task<IFuncti
230230

231231
flag.Raise();
232232

233-
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(5));
233+
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(60));
234234
result.ShouldBe("message1,message2,message3,message4,message5,NULL");
235235

236236
unhandledExceptionCatcher.ShouldNotHaveExceptions();
@@ -273,7 +273,7 @@ protected async Task OnlyFirstMessageWithSameIdempotencyKeyIsDeliveredAndBothAre
273273
await BusyWait.Until(async () => await functionStore.MessageStore.GetMessages(storedId!).SelectAsync(m => m.Count) == 0);
274274

275275
// Only the first message should be delivered
276-
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(5));
276+
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(60));
277277
result.Item1.ShouldBe("first message");
278278
result.Item2.ShouldBeNull();
279279

@@ -400,7 +400,7 @@ protected async Task QueueClientFilterParameterFiltersMessages(Task<IFunctionSto
400400
await messageWriter.AppendMessage("odd-5");
401401
await messageWriter.AppendMessage("even-6");
402402

403-
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(5));
403+
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(60));
404404
// Should only receive the even messages, filtered out the odd ones
405405
result.ShouldBe("even-2,even-4,even-6");
406406

@@ -438,7 +438,7 @@ protected async Task QueueClientWorksWithCustomSerializer(Task<IFunctionStore> f
438438
await messageWriter.AppendMessage(new WrappedInt(42));
439439
await messageWriter.AppendMessage(new TestRecord("world"));
440440

441-
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(10));
441+
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(60));
442442
result.ShouldBe("hello,42,world");
443443

444444
unhandledExceptionCatcher.ShouldNotHaveExceptions();
@@ -475,8 +475,8 @@ await rFunc.SendMessages(
475475
var scheduled2 = await rFunc.Schedule("Instance#2", "");
476476

477477
// Wait for completion
478-
var result1 = await scheduled1.Completion(timeout: TimeSpan.FromSeconds(10));
479-
var result2 = await scheduled2.Completion(timeout: TimeSpan.FromSeconds(10));
478+
var result1 = await scheduled1.Completion(timeout: TimeSpan.FromSeconds(60));
479+
var result2 = await scheduled2.Completion(timeout: TimeSpan.FromSeconds(60));
480480

481481
result1.ShouldBe("hallo world 1");
482482
result2.ShouldBe("hallo world 2");
@@ -579,7 +579,7 @@ protected async Task QueueManagerFailsOnMessageDeserializationError(Task<IFuncti
579579
await messageWriter.AppendMessage(new BadMessage("will-fail"), idempotencyKey: "bad-message");
580580

581581
var controlPanel = await rFunc.ControlPanel("instanceId").ShouldNotBeNullAsync();
582-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Failed, maxWait: TimeSpan.FromSeconds(10));
582+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Failed, maxWait: TimeSpan.FromSeconds(60));
583583

584584
controlPanel.Status.ShouldBe(Status.Failed);
585585

@@ -623,7 +623,7 @@ protected async Task RegisteredTimeoutIsRemovedWhenPullingMessage(Task<IFunction
623623
var controlPanel = await rFunc.ControlPanel("instanceId").ShouldNotBeNullAsync();
624624
await controlPanel.BusyWaitUntil(
625625
c => c.Status == Status.Postponed && c.PostponedUntil > DateTime.UtcNow + TimeSpan.FromHours(12),
626-
maxWait: TimeSpan.FromSeconds(10)
626+
maxWait: TimeSpan.FromSeconds(60)
627627
);
628628

629629
controlPanel.PostponedUntil!.Value.ShouldBeGreaterThan(DateTime.UtcNow + TimeSpan.FromHours(23));
@@ -661,7 +661,7 @@ protected async Task PullEnvelopeReturnsEnvelopeWithReceiverAndSender(Task<IFunc
661661
var messageWriter = rFunc.MessageWriters.For("instanceId".ToFlowInstance());
662662
await messageWriter.AppendMessage("test message", receiver: "receiver1", sender: "sender1");
663663

664-
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(10));
664+
var result = await scheduled.Completion(timeout: TimeSpan.FromSeconds(60));
665665
result.ShouldBe("test message|receiver1|sender1");
666666

667667
unhandledExceptionCatcher.ShouldNotHaveExceptions();

Core/Cleipnir.ResilientFunctions.Tests/TestTemplates/FunctionTests/WorkflowMessageTests.cs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ async Task<string> (string _, Workflow workflow) =>
3838
var controlPanel = await registration.ControlPanel("instanceId");
3939
controlPanel.ShouldNotBeNull();
4040

41-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
41+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
4242
controlPanel.Result.ShouldBe("hello world");
4343

4444
unhandledExceptionHandler.ShouldNotHaveExceptions();
@@ -71,7 +71,7 @@ async Task<string> (string _, Workflow workflow) =>
7171
var controlPanel = await registration.ControlPanel("instanceId");
7272
controlPanel.ShouldNotBeNull();
7373

74-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
74+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
7575
controlPanel.Result.ShouldBe("first");
7676

7777
unhandledExceptionHandler.ShouldNotHaveExceptions();
@@ -92,7 +92,7 @@ public async Task WorkflowMessageWithDateTimeReturnsMessageBeforeTimeout(Task<IF
9292
nameof(WorkflowMessageWithDateTimeReturnsMessageBeforeTimeout),
9393
async Task<string?> (string _, Workflow workflow) =>
9494
{
95-
var message = await workflow.Message<string>(DateTime.UtcNow.AddSeconds(10));
95+
var message = await workflow.Message<string>(DateTime.UtcNow.AddSeconds(60));
9696
return message;
9797
}
9898
);
@@ -103,7 +103,7 @@ public async Task WorkflowMessageWithDateTimeReturnsMessageBeforeTimeout(Task<IF
103103
var controlPanel = await registration.ControlPanel("instanceId");
104104
controlPanel.ShouldNotBeNull();
105105

106-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
106+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
107107
controlPanel.Result.ShouldBe("hello world");
108108

109109
unhandledExceptionHandler.ShouldNotHaveExceptions();
@@ -137,7 +137,7 @@ await BusyWait.Until(async () =>
137137
{
138138
await controlPanel.Refresh();
139139
return controlPanel.Status == Status.Succeeded;
140-
}, maxWait: TimeSpan.FromSeconds(10));
140+
}, maxWait: TimeSpan.FromSeconds(60));
141141

142142
controlPanel.Result.ShouldBeNull();
143143

@@ -159,7 +159,7 @@ public async Task WorkflowMessageWithTimeSpanReturnsMessageBeforeTimeout(Task<IF
159159
nameof(WorkflowMessageWithTimeSpanReturnsMessageBeforeTimeout),
160160
async Task<string?> (string _, Workflow workflow) =>
161161
{
162-
var message = await workflow.Message<string>(TimeSpan.FromSeconds(10));
162+
var message = await workflow.Message<string>(TimeSpan.FromSeconds(60));
163163
return message;
164164
}
165165
);
@@ -170,7 +170,7 @@ public async Task WorkflowMessageWithTimeSpanReturnsMessageBeforeTimeout(Task<IF
170170
var controlPanel = await registration.ControlPanel("instanceId");
171171
controlPanel.ShouldNotBeNull();
172172

173-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
173+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
174174
controlPanel.Result.ShouldBe("hello world");
175175

176176
unhandledExceptionHandler.ShouldNotHaveExceptions();
@@ -204,7 +204,7 @@ await BusyWait.Until(async () =>
204204
{
205205
await controlPanel.Refresh();
206206
return controlPanel.Status == Status.Succeeded;
207-
}, maxWait: TimeSpan.FromSeconds(10));
207+
}, maxWait: TimeSpan.FromSeconds(60));
208208

209209
controlPanel.Result.ShouldBeNull();
210210

@@ -238,7 +238,7 @@ async Task<string> (string _, Workflow workflow) =>
238238
var controlPanel = await registration.ControlPanel("instanceId");
239239
controlPanel.ShouldNotBeNull();
240240

241-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
241+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
242242
controlPanel.Result.ShouldBe("longer string");
243243

244244
unhandledExceptionHandler.ShouldNotHaveExceptions();
@@ -270,7 +270,7 @@ async Task<string> (string _, Workflow workflow) =>
270270
var controlPanel = await registration.ControlPanel("instanceId");
271271
controlPanel.ShouldNotBeNull();
272272

273-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
273+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
274274
controlPanel.Result.ShouldBe("hello world");
275275

276276
unhandledExceptionHandler.ShouldNotHaveExceptions();
@@ -291,7 +291,7 @@ public async Task WorkflowMessageWithFilterAndDateTimeReturnsMatchingMessageBefo
291291
nameof(WorkflowMessageWithFilterAndDateTimeReturnsMatchingMessageBeforeTimeout),
292292
async Task<string?> (string _, Workflow workflow) =>
293293
{
294-
string? message = await workflow.Message<string>(s => s.Length > 5, DateTime.UtcNow.AddSeconds(10));
294+
string? message = await workflow.Message<string>(s => s.Length > 5, DateTime.UtcNow.AddSeconds(60));
295295
return message;
296296
}
297297
);
@@ -303,7 +303,7 @@ public async Task WorkflowMessageWithFilterAndDateTimeReturnsMatchingMessageBefo
303303
var controlPanel = await registration.ControlPanel("instanceId");
304304
controlPanel.ShouldNotBeNull();
305305

306-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
306+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
307307
controlPanel.Result.ShouldBe("longer string");
308308

309309
unhandledExceptionHandler.ShouldNotHaveExceptions();
@@ -338,7 +338,7 @@ await BusyWait.Until(async () =>
338338
{
339339
await controlPanel.Refresh();
340340
return controlPanel.Status == Status.Succeeded;
341-
}, maxWait: TimeSpan.FromSeconds(10));
341+
}, maxWait: TimeSpan.FromSeconds(60));
342342

343343
controlPanel.Result.ShouldBeNull();
344344

@@ -360,7 +360,7 @@ public async Task WorkflowMessageWithFilterAndTimeSpanReturnsMatchingMessageBefo
360360
nameof(WorkflowMessageWithFilterAndTimeSpanReturnsMatchingMessageBeforeTimeout),
361361
async Task<string?> (string _, Workflow workflow) =>
362362
{
363-
var message = await workflow.Message<string>(s => s.Length > 5, TimeSpan.FromSeconds(10));
363+
var message = await workflow.Message<string>(s => s.Length > 5, TimeSpan.FromSeconds(60));
364364
return message;
365365
}
366366
);
@@ -372,7 +372,7 @@ public async Task WorkflowMessageWithFilterAndTimeSpanReturnsMatchingMessageBefo
372372
var controlPanel = await registration.ControlPanel("instanceId");
373373
controlPanel.ShouldNotBeNull();
374374

375-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
375+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
376376
controlPanel.Result.ShouldBe("longer string");
377377

378378
unhandledExceptionHandler.ShouldNotHaveExceptions();
@@ -407,7 +407,7 @@ await BusyWait.Until(async () =>
407407
{
408408
await controlPanel.Refresh();
409409
return controlPanel.Status == Status.Succeeded;
410-
}, maxWait: TimeSpan.FromSeconds(10));
410+
}, maxWait: TimeSpan.FromSeconds(60));
411411

412412
controlPanel.Result.ShouldBeNull();
413413

@@ -451,15 +451,15 @@ await BusyWait.Until(async () =>
451451
{
452452
await controlPanel.Refresh();
453453
return controlPanel.Status == Status.Failed;
454-
}, maxWait: TimeSpan.FromSeconds(10));
454+
}, maxWait: TimeSpan.FromSeconds(60));
455455

456456
await controlPanel.ScheduleRestart().Completion();
457457

458458
await BusyWait.Until(async () =>
459459
{
460460
await controlPanel.Refresh();
461461
return controlPanel.Status == Status.Succeeded;
462-
}, maxWait: TimeSpan.FromSeconds(10));
462+
}, maxWait: TimeSpan.FromSeconds(60));
463463

464464
controlPanel.Result.ShouldBe("hello world");
465465
invocationCount.ShouldBe(2);
@@ -497,7 +497,7 @@ async Task<string> (string _, Workflow workflow) =>
497497
var controlPanel = await registration.ControlPanel("instanceId");
498498
controlPanel.ShouldNotBeNull();
499499

500-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
500+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
501501
controlPanel.Result.ShouldBe("hello world");
502502

503503
unhandledExceptionHandler.ShouldNotHaveExceptions();
@@ -531,7 +531,7 @@ async Task<string> (string _, Workflow workflow) =>
531531
var controlPanel = await registration.ControlPanel("instanceId");
532532
controlPanel.ShouldNotBeNull();
533533

534-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
534+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
535535
controlPanel.Result.ShouldBe("test:value");
536536

537537
unhandledExceptionHandler.ShouldNotHaveExceptions();
@@ -566,7 +566,7 @@ async Task<string> (string _, Workflow workflow) =>
566566
var controlPanel = await registration.ControlPanel("instanceId");
567567
controlPanel.ShouldNotBeNull();
568568

569-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
569+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
570570
controlPanel.Result.ShouldBe("test:42");
571571

572572
unhandledExceptionHandler.ShouldNotHaveExceptions();
@@ -607,7 +607,7 @@ async Task<string> (string _, Workflow workflow) =>
607607
await registration.SendMessage("instanceId", "hello after suspend");
608608

609609
// The flow should resume and complete
610-
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(10));
610+
await controlPanel.BusyWaitUntil(c => c.Status == Status.Succeeded, maxWait: TimeSpan.FromSeconds(60));
611611
controlPanel.Result.ShouldBe("hello after suspend");
612612

613613
unhandledExceptionHandler.ShouldNotHaveExceptions();

0 commit comments

Comments
 (0)