Skip to content

Commit 0b88185

Browse files
Added concurrency support
1 parent 56c24b1 commit 0b88185

File tree

2 files changed

+24
-30
lines changed

2 files changed

+24
-30
lines changed

src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_failed_edit_is_resolved_by_retry.cs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
namespace ServiceControl.AcceptanceTests.Recoverability.ExternalIntegration
22
{
3+
using System.Collections.Generic;
34
using System.Linq;
45
using System.Threading.Tasks;
56
using AcceptanceTesting;
@@ -101,9 +102,11 @@ public async Task Should_publish_notification()
101102
{
102103
Assert.That(context.ResolvedMessageId, Is.EqualTo(context.OriginalMessageFailureId));
103104
Assert.That(context.EditedMessageEditOf, Is.EqualTo(context.OriginalMessageFailureId));
104-
Assert.That(context.FirstMessageFailedFailedMessageId, Is.EqualTo(context.OriginalMessageFailureId));
105+
Assert.That(context.MessageFailedFailedMessageIds.Count, Is.EqualTo(2));
106+
Assert.That(context.MessageFailedFailedMessageIds, Is.Unique);
107+
Assert.That(context.MessageFailedFailedMessageIds, Has.Some.EqualTo(context.OriginalMessageFailureId));
105108
Assert.That(context.RetryFailedMessageId, Is.EqualTo(context.OriginalMessageFailureId));
106-
Assert.That(context.SecondMessageFailedFailedMessageId, Is.EqualTo(context.EditedMessageFailureId));
109+
Assert.That(context.MessageFailedFailedMessageIds, Has.Some.EqualTo(context.EditedMessageFailureId));
107110
});
108111
}
109112

@@ -118,11 +121,10 @@ public class EditMessageResolutionContext : ScenarioContext
118121
public string EditedMessageEditOf { get; set; }
119122
public bool ExternalProcessorSubscribed { get; set; }
120123
public bool MessageResolved { get; set; }
121-
public string FirstMessageFailedFailedMessageId { get; set; }
122-
public string SecondMessageFailedFailedMessageId { get; set; }
123124
public bool MessageFailedResolved { get; set; }
124125
public string RetryFailedMessageId { get; set; }
125126
public bool EditAndRetryHandled { get; set; }
127+
public List<string> MessageFailedFailedMessageIds { get; } = [];
126128
}
127129

128130
public class MessageReceiver : EndpointConfigurationBuilder
@@ -164,13 +166,9 @@ public Task Handle(MessageFailureResolvedByRetry message, IMessageHandlerContext
164166

165167
public Task Handle(MessageFailed message, IMessageHandlerContext context)
166168
{
167-
if (testContext.FirstMessageFailedFailedMessageId == null)
169+
testContext.MessageFailedFailedMessageIds.Add(message.FailedMessageId);
170+
if (testContext.MessageFailedFailedMessageIds.Count == 2)
168171
{
169-
testContext.FirstMessageFailedFailedMessageId = message.FailedMessageId;
170-
}
171-
else
172-
{
173-
testContext.SecondMessageFailedFailedMessageId = message.FailedMessageId;
174172
testContext.MessageFailedResolved = true;
175173
}
176174
return Task.CompletedTask;

src/ServiceControl.AcceptanceTests/Recoverability/ExternalIntegration/When_a_reedit_solves_a_failed_msg.cs

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
namespace ServiceControl.AcceptanceTests.Recoverability.ExternalIntegration
22
{
3+
using System.Collections.Generic;
34
using System.Linq;
45
using System.Threading.Tasks;
56
using AcceptanceTesting;
@@ -119,12 +120,16 @@ public async Task Should_publish_notification()
119120

120121
Assert.Multiple(() =>
121122
{
122-
Assert.That(context.FirstMessageFailedFailedMessageId, Is.EqualTo(context.OriginalMessageFailureId));
123+
Assert.That(context.FailedMessageFailedMessageIds.Count, Is.EqualTo(2));
124+
Assert.That(context.FailedMessageFailedMessageIds, Is.Unique);
125+
Assert.That(context.FailedMessageFailedMessageIds, Has.Some.EqualTo(context.OriginalMessageFailureId));
123126
Assert.That(context.EditedMessageEditOf1, Is.EqualTo(context.OriginalMessageFailureId));
124-
Assert.That(context.SecondMessageFailedEditOf, Is.EqualTo(context.OriginalMessageFailureId));
125-
Assert.That(context.FirstRetryFailedMessageId, Is.EqualTo(context.OriginalMessageFailureId));
127+
Assert.That(context.FailedMessageFailedMessageIds, Has.Some.EqualTo(context.OriginalMessageFailureId));
128+
Assert.That(context.RetryFailedMessageIds.Count, Is.EqualTo(2));
129+
Assert.That(context.RetryFailedMessageIds, Is.Unique);
130+
Assert.That(context.RetryFailedMessageIds, Has.Some.EqualTo(context.OriginalMessageFailureId));
126131
Assert.That(context.EditedMessageEditOf2, Is.EqualTo(context.SecondMessageFailureId));
127-
Assert.That(context.SecondRetryFailedMessageId, Is.EqualTo(context.SecondMessageFailureId));
132+
Assert.That(context.RetryFailedMessageIds, Has.Some.EqualTo(context.SecondMessageFailureId));
128133
});
129134
}
130135

@@ -142,11 +147,9 @@ public class EditMessageResolutionContext : ScenarioContext
142147
public string EditedMessageEditOf2 { get; set; }
143148
public string EditedMessageEditOf1 { get; set; }
144149
public bool ExternalProcessorSubscribed { get; set; }
145-
public string FirstMessageFailedFailedMessageId { get; set; }
146-
public string SecondMessageFailedEditOf { get; set; }
147-
public string FirstRetryFailedMessageId { get; set; }
148-
public string SecondRetryFailedMessageId { get; set; }
149150
public bool EditAndRetryHandled { get; set; }
151+
public List<string> RetryFailedMessageIds { get; } = [];
152+
public List<string> FailedMessageFailedMessageIds { get; } = [];
150153
}
151154

152155
public class MessageReceiver : EndpointConfigurationBuilder
@@ -179,27 +182,20 @@ public Task Handle(EditResolutionMessage message, IMessageHandlerContext context
179182

180183
public Task Handle(MessageFailed message, IMessageHandlerContext context)
181184
{
182-
if (testContext.FirstMessageFailedFailedMessageId == null)
185+
testContext.FailedMessageFailedMessageIds.Add(message.FailedMessageId);
186+
if (testContext.FailedMessageFailedMessageIds.Count == 2)
183187
{
184-
testContext.FirstMessageFailedFailedMessageId = message.FailedMessageId;
185-
}
186-
else
187-
{
188-
testContext.SecondMessageFailedEditOf = message.MessageDetails.Headers["ServiceControl.EditOf"];
189188
testContext.MessageResolved = true;
190189
}
191190
return Task.CompletedTask;
192191
}
193192

194193
public Task Handle(MessageEditedAndRetried message, IMessageHandlerContext context)
195194
{
196-
if (testContext.FirstRetryFailedMessageId == null)
197-
{
198-
testContext.FirstRetryFailedMessageId = message.FailedMessageId;
199-
}
200-
else
195+
196+
testContext.RetryFailedMessageIds.Add(message.FailedMessageId);
197+
if (testContext.RetryFailedMessageIds.Count == 2)
201198
{
202-
testContext.SecondRetryFailedMessageId = message.FailedMessageId;
203199
testContext.EditAndRetryHandled = true;
204200
}
205201
return Task.CompletedTask;

0 commit comments

Comments
 (0)