Skip to content

Commit d0b1aee

Browse files
authored
Merge pull request #4856 from Particular/john/bug-4841
Adding tests back
2 parents 76d9bb7 + c7611e0 commit d0b1aee

File tree

2 files changed

+25
-25
lines changed

2 files changed

+25
-25
lines changed

src/ServiceControl.MultiInstance.AcceptanceTests/Recoverability/WhenRetryingSameMessageMultipleTimes.cs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,52 +21,50 @@ public enum RetryType
2121
Edit
2222
}
2323

24-
[Explicit]
2524
[TestCase(new[] { RetryType.NoEdit, RetryType.NoEdit, RetryType.Edit })]
26-
[TestCase(new[] { RetryType.Edit, RetryType.NoEdit, RetryType.Edit })]
27-
[TestCase(new[] { RetryType.NoEdit, RetryType.Edit, RetryType.NoEdit })]
25+
[TestCase(new[] { RetryType.Edit, RetryType.NoEdit, RetryType.Edit, RetryType.NoEdit })]
26+
//[TestCase(new[] { RetryType.NoEdit, RetryType.Edit, RetryType.NoEdit, RetryType.Edit })]
2827
[TestCase(new[] { RetryType.Edit, RetryType.Edit, RetryType.NoEdit })]
2928
public async Task WithMixOfRetryTypes(RetryType[] retryTypes)
3029
{
3130
CustomServiceControlPrimarySettings = s => { s.AllowMessageEditing = true; };
3231

33-
await Define<MyContext>()
32+
await Define<MyContext>(context => context.NumberOfRetriesToComplete = retryTypes.Length)
3433
.WithEndpoint<FailureEndpoint>(b =>
3534
b.When(bus => bus.SendLocal(new MyMessage())).DoNotFailOnErrorMessages())
3635
.Done(async c =>
3736
{
38-
if (c.RetryCount >= retryTypes.Length) // Are all retries done?
37+
if (c.ExceptionsRetried >= c.NumberOfRetriesToComplete) // Are all retries done?
3938
{
4039
return !(await GetAllFailedMessage(ServiceControlInstanceName, FailedMessageStatus.Unresolved))
4140
.HasResult; // Should return true if all failed messages are no longer unresolved
4241
}
4342

44-
if (retryTypes[c.RetryCount] == RetryType.Edit)
43+
if (c.ExceptionsRetried >= c.ExceptionsThrown)
4544
{
46-
var results = await GetAllFailedMessage(ServiceControlInstanceName,
47-
FailedMessageStatus.Unresolved);
48-
if (!results.HasResult)
49-
{
50-
return false; // No failed messages yet
51-
}
52-
53-
var result = results.Items.Single();
45+
return false;
46+
}
5447

55-
c.MessageId = result.MessageId;
48+
var results = await GetAllFailedMessage(ServiceControlInstanceName, FailedMessageStatus.Unresolved);
49+
if (!results.HasResult)
50+
{
51+
return false; // No failed messages yet
5652
}
5753

58-
var failedMessage = await GetFailedMessage(c.UniqueMessageId, ServiceControlInstanceName, FailedMessageStatus.Unresolved);
54+
var mostRecentFailure = results.Items.Single();
55+
56+
var failedMessage = await GetFailedMessage(mostRecentFailure.Id, ServiceControlInstanceName, FailedMessageStatus.Unresolved);
5957
if (!failedMessage.HasResult)
6058
{
6159
return false; // No failed message yet
6260
}
6361

64-
if (retryTypes[c.RetryCount] == RetryType.Edit)
62+
if (retryTypes[c.ExceptionsThrown - 1] == RetryType.Edit)
6563
{
6664
await this.Post<object>($"/api/edit/{failedMessage.Item.UniqueMessageId}",
6765
new
6866
{
69-
MessageBody = $"{{ \"Name\": \"Hello {c.RetryCount}\" }}",
67+
MessageBody = $"{{ \"Name\": \"Hello {c.ExceptionsThrown}\" }}",
7068
MessageHeaders = failedMessage.Item.ProcessingAttempts[^1].Headers
7169
}, null,
7270
ServiceControlInstanceName);
@@ -76,13 +74,12 @@ await this.Post<object>($"/api/edit/{failedMessage.Item.UniqueMessageId}",
7674
await this.Post<object>($"/api/errors/{failedMessage.Item.UniqueMessageId}/retry", null, null,
7775
ServiceControlInstanceName);
7876
}
79-
80-
c.RetryCount++;
77+
c.ExceptionsRetried++;
8178

8279
return false;
8380

8481
})
85-
.Run(TimeSpan.FromMinutes(2));
82+
.Run(TimeSpan.FromSeconds(15));
8683
}
8784

8885
class FailureEndpoint : EndpointConfigurationBuilder
@@ -97,8 +94,9 @@ public Task Handle(MyMessage message, IMessageHandlerContext context)
9794
testContext.MessageId = context.MessageId.Replace(@"\", "-");
9895
testContext.EndpointNameOfReceivingEndpoint = settings.EndpointName();
9996

100-
if (testContext.RetryCount < 3)
97+
if (testContext.ExceptionsThrown < testContext.NumberOfRetriesToComplete)
10198
{
99+
testContext.ExceptionsThrown++;
102100
Console.Out.WriteLine("Throwing exception");
103101
throw new Exception("Simulated exception");
104102
}
@@ -122,7 +120,9 @@ class MyContext : ScenarioContext
122120
public string EndpointNameOfReceivingEndpoint { get; set; }
123121

124122
public string UniqueMessageId => DeterministicGuid.MakeId(MessageId, EndpointNameOfReceivingEndpoint).ToString();
125-
public int RetryCount { get; set; }
123+
public int ExceptionsThrown { get; set; }
124+
public int ExceptionsRetried { get; set; }
125+
public int NumberOfRetriesToComplete { get; set; }
126126
}
127127
}
128128
}

src/ServiceControl.MultiInstance.AcceptanceTests/Recoverability/WhenRetryingWithEdit.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace ServiceControl.MultiInstance.AcceptanceTests.Recoverability;
1414

1515
class WhenRetryingWithEdit : WhenRetrying
1616
{
17-
[Test, Explicit]
17+
[Test]
1818
public async Task ShouldCreateNewMessageAndResolveEditedMessage()
1919
{
2020
CustomServiceControlPrimarySettings = s => { s.AllowMessageEditing = true; };
@@ -49,7 +49,7 @@ await this.Post<object>($"/api/edit/{failedMessage.Item.UniqueMessageId}",
4949

5050
return failedResolvedMessage.HasResult; // If there is a result it means the message was resolved
5151
})
52-
.Run(TimeSpan.FromMinutes(2));
52+
.Run(TimeSpan.FromSeconds(30));
5353
}
5454

5555
class FailureEndpoint : EndpointConfigurationBuilder

0 commit comments

Comments
 (0)