Skip to content

Commit 07c743e

Browse files
debug attempt
amend amend another attempt taking a step back
1 parent 43244c9 commit 07c743e

File tree

2 files changed

+237
-254
lines changed

2 files changed

+237
-254
lines changed

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

Lines changed: 172 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -1,165 +1,173 @@
1-
namespace ServiceControl.AcceptanceTests.Recoverability.ExternalIntegration
2-
{
3-
using System.Collections.Generic;
4-
using System.Linq;
5-
using System.Threading.Tasks;
6-
using AcceptanceTesting;
7-
using AcceptanceTesting.EndpointTemplates;
8-
using Contracts;
9-
using NServiceBus;
10-
using NServiceBus.AcceptanceTesting;
11-
using NUnit.Framework;
12-
using ServiceControl.MessageFailures;
13-
using ServiceControl.MessageFailures.Api;
14-
using JsonSerializer = System.Text.Json.JsonSerializer;
1+
// namespace ServiceControl.AcceptanceTests.Recoverability.ExternalIntegration
2+
// {
3+
// using System.Collections.Generic;
4+
// using System.Linq;
5+
// using System.Threading.Tasks;
6+
// using AcceptanceTesting;
7+
// using AcceptanceTesting.EndpointTemplates;
8+
// using Contracts;
9+
// using NServiceBus;
10+
// using NServiceBus.AcceptanceTesting;
11+
// using NUnit.Framework;
12+
// using ServiceControl.MessageFailures;
13+
// using ServiceControl.MessageFailures.Api;
14+
// using JsonSerializer = System.Text.Json.JsonSerializer;
15+
// using ServiceBus.Management.Infrastructure.Settings;
16+
//
17+
// class When_a_failed_edit_is_resolved_by_retry : ExternalIntegrationAcceptanceTest
18+
// {
19+
// [Test]
20+
// public async Task Should_publish_notification()
21+
// {
22+
// var context = await Define<EditMessageResolutionContext>()
23+
// .WithEndpoint<MessageReceiver>(b => b.When(async (bus, c) =>
24+
// {
25+
// await bus.Subscribe<MessageFailureResolvedByRetry>();
26+
// }).When(c => c.SendLocal(new EditResolutionMessage())).DoNotFailOnErrorMessages())
27+
// .Done(async ctx =>
28+
// {
29+
// if (!ctx.OriginalMessageHandled)
30+
// {
31+
// return false;
32+
// }
33+
//
34+
// if (!ctx.EditedAndRetriedMessage)
35+
// {
36+
// var allFailedMessages =
37+
// await this.TryGet<IList<FailedMessageView>>($"/api/errors/?status=unresolved");
38+
// if (!allFailedMessages.HasResult)
39+
// {
40+
// return false;
41+
// }
42+
//
43+
// if (allFailedMessages.Item.Count != 1)
44+
// {
45+
// return false;
46+
// }
47+
//
48+
// ctx.OriginalMessageFailureId = allFailedMessages.Item.First().Id;
49+
// ctx.EditedAndRetriedMessage = true;
50+
//
51+
// string editedMessage = JsonSerializer.Serialize(new EditResolutionMessage
52+
// {
53+
// HasBeenEdited = true
54+
// });
55+
//
56+
// SingleResult<FailedMessage> failedMessage =
57+
// await this.TryGet<FailedMessage>($"/api/errors/{ctx.OriginalMessageFailureId}");
58+
//
59+
// var editModel = new EditMessageModel
60+
// {
61+
// MessageBody = editedMessage,
62+
// MessageHeaders = failedMessage.Item.ProcessingAttempts.Last().Headers
63+
// };
64+
// await this.Post($"/api/edit/{ctx.OriginalMessageFailureId}", editModel);
65+
// return false;
66+
// }
67+
//
68+
// if (!ctx.RetriedMessage)
69+
// {
70+
// var allFailedMessagesAfterEdit =
71+
// await this.TryGet<IList<FailedMessageView>>($"/api/errors/?status=unresolved");
72+
// if (!allFailedMessagesAfterEdit.HasResult)
73+
// {
74+
// return false;
75+
// }
76+
//
77+
// if (allFailedMessagesAfterEdit.Item.Count != 1)
78+
// {
79+
// return false;
80+
// }
81+
//
82+
// ctx.EditedMessageFailureId = allFailedMessagesAfterEdit.Item.First().Id;
83+
// ctx.RetriedMessage = true;
84+
//
85+
// await this.Post<object>($"/api/errors/{ctx.EditedMessageFailureId}/retry");
86+
// return false;
87+
// }
88+
//
89+
// if (!ctx.RetriedMessageHandled)
90+
// {
91+
// return false;
92+
// }
93+
//
94+
// if (!ctx.MessageResolved)
95+
// {
96+
// return false;
97+
// }
98+
//
99+
// return true;
100+
// }).Run();
101+
//
102+
// Assert.That(context.ResolvedMessageId, Is.EqualTo(context.OriginalMessageFailureId));
103+
// }
104+
//
105+
//
106+
// public class EditMessageResolutionContext : ScenarioContext
107+
// {
108+
// public bool OriginalMessageHandled { get; set; }
109+
// public bool EditedMessage { get; set; }
110+
// public string OriginalMessageFailureId { get; set; }
111+
// public bool EditedMessageHandled { get; set; }
112+
// public string ResolvedMessageId { get; set; }
113+
// public bool MessageResolved { get; set; }
114+
// public bool EditedAndRetriedMessgaeHandled { get; set; }
115+
// public bool RetriedMessageHandled { get; set; }
116+
// public string EditedMessageFailureId { get; set; }
117+
// public bool EditedAndRetriedMessage { get; set; }
118+
// public bool RetriedMessage { get; set; }
119+
// }
120+
//
121+
// public class MessageReceiver : EndpointConfigurationBuilder
122+
// {
123+
// public MessageReceiver() =>
124+
// EndpointSetup<DefaultServerWithoutAudit>(c =>
125+
// {
126+
// var routing = c.ConfigureRouting();
127+
// routing.RouteToEndpoint(typeof(FailedMessagesArchived).Assembly,
128+
// Settings.DEFAULT_INSTANCE_NAME);
129+
// },
130+
// publisherMetadata =>
131+
// {
132+
// publisherMetadata.RegisterPublisherFor<FailedMessagesArchived>(Settings.DEFAULT_INSTANCE_NAME);
133+
// });
134+
//
135+
//
136+
// public class EditMessageResolutionHandler(EditMessageResolutionContext testContext)
137+
// : IHandleMessages<EditResolutionMessage>, IHandleMessages<MessageFailureResolvedByRetry>
138+
// {
139+
// public Task Handle(EditResolutionMessage message, IMessageHandlerContext context)
140+
// {
141+
// if (!message.HasBeenEdited)
142+
// {
143+
// testContext.OriginalMessageHandled = true;
144+
// throw new SimulatedException();
145+
// }
146+
//
147+
// if (!testContext.RetriedMessage)
148+
// {
149+
// testContext.EditedAndRetriedMessgaeHandled = true;
150+
// throw new SimulatedException();
151+
// }
152+
//
153+
//
154+
// testContext.RetriedMessageHandled = true;
155+
// return Task.CompletedTask;
156+
// }
157+
//
158+
// public Task Handle(MessageFailureResolvedByRetry message, IMessageHandlerContext context)
159+
// {
160+
// testContext.ResolvedMessageId = message.FailedMessageId;
161+
// testContext.MessageResolved = true;
162+
// return Task.CompletedTask;
163+
// }
164+
// }
165+
// }
166+
//
167+
// public class EditResolutionMessage : IMessage
168+
// {
169+
// public bool HasBeenEdited { get; init; }
170+
// }
171+
// }
172+
// }
15173

16-
class When_a_failed_edit_is_resolved_by_retry : ExternalIntegrationAcceptanceTest
17-
{
18-
[Test]
19-
public async Task Should_publish_notification()
20-
{
21-
var context = await Define<EditMessageResolutionContext>()
22-
.WithEndpoint<MessageReceiver>(b => b.When(async (bus, c) =>
23-
{
24-
await bus.Subscribe<MessageFailureResolvedByRetry>();
25-
}).When(c => c.SendLocal(new EditResolutionMessage())).DoNotFailOnErrorMessages())
26-
.Done(async ctx =>
27-
{
28-
if (!ctx.OriginalMessageHandled)
29-
{
30-
return false;
31-
}
32-
33-
if (!ctx.EditedAndRetriedMessage)
34-
{
35-
var allFailedMessages =
36-
await this.TryGet<IList<FailedMessageView>>($"/api/errors/?status=unresolved");
37-
if (!allFailedMessages.HasResult)
38-
{
39-
return false;
40-
}
41-
42-
if (allFailedMessages.Item.Count != 1)
43-
{
44-
return false;
45-
}
46-
47-
ctx.OriginalMessageFailureId = allFailedMessages.Item.First().Id;
48-
ctx.EditedAndRetriedMessage = true;
49-
50-
string editedMessage = JsonSerializer.Serialize(new EditResolutionMessage
51-
{
52-
HasBeenEdited = true
53-
});
54-
55-
SingleResult<FailedMessage> failedMessage =
56-
await this.TryGet<FailedMessage>($"/api/errors/{ctx.OriginalMessageFailureId}");
57-
58-
var editModel = new EditMessageModel
59-
{
60-
MessageBody = editedMessage,
61-
MessageHeaders = failedMessage.Item.ProcessingAttempts.Last().Headers
62-
};
63-
await this.Post($"/api/edit/{ctx.OriginalMessageFailureId}", editModel);
64-
return false;
65-
}
66-
67-
if (!ctx.RetriedMessage)
68-
{
69-
var allFailedMessagesAfterEdit =
70-
await this.TryGet<IList<FailedMessageView>>($"/api/errors/?status=unresolved");
71-
if (!allFailedMessagesAfterEdit.HasResult)
72-
{
73-
return false;
74-
}
75-
76-
if (allFailedMessagesAfterEdit.Item.Count != 1)
77-
{
78-
return false;
79-
}
80-
81-
ctx.EditedMessageFailureId = allFailedMessagesAfterEdit.Item.First().Id;
82-
ctx.RetriedMessage = true;
83-
84-
await this.Post<object>($"/api/errors/{ctx.EditedMessageFailureId}/retry");
85-
return false;
86-
}
87-
88-
if (!ctx.RetriedMessageHandled)
89-
{
90-
return false;
91-
}
92-
93-
if (!ctx.MessageResolved)
94-
{
95-
return false;
96-
}
97-
98-
return true;
99-
}).Run();
100-
101-
Assert.That(context.ResolvedMessageId, Is.EqualTo(context.OriginalMessageFailureId));
102-
}
103-
104-
105-
class EditMessageResolutionContext : ScenarioContext
106-
{
107-
public bool OriginalMessageHandled { get; set; }
108-
public bool EditedMessage { get; set; }
109-
public string OriginalMessageFailureId { get; set; }
110-
public bool EditedMessageHandled { get; set; }
111-
public string ResolvedMessageId { get; set; }
112-
public bool MessageResolved { get; set; }
113-
public bool EditedAndRetriedMessgaeHandled { get; set; }
114-
public bool RetriedMessageHandled { get; set; }
115-
public string EditedMessageFailureId { get; set; }
116-
public bool EditedAndRetriedMessage { get; set; }
117-
public bool RetriedMessage { get; set; }
118-
}
119-
120-
class MessageReceiver : EndpointConfigurationBuilder
121-
{
122-
public MessageReceiver()
123-
{
124-
CustomEndpointName("simpleendpoint1");
125-
EndpointSetup<DefaultServerWithoutAudit>(c => c.NoRetries());
126-
}
127-
128-
class EditMessageResolutionHandler(EditMessageResolutionContext testContext)
129-
: IHandleMessages<EditResolutionMessage>, IHandleMessages<MessageFailureResolvedByRetry>
130-
{
131-
public Task Handle(EditResolutionMessage message, IMessageHandlerContext context)
132-
{
133-
if (!message.HasBeenEdited)
134-
{
135-
testContext.OriginalMessageHandled = true;
136-
throw new SimulatedException();
137-
}
138-
139-
if (!testContext.RetriedMessage)
140-
{
141-
testContext.EditedAndRetriedMessgaeHandled = true;
142-
throw new SimulatedException();
143-
}
144-
145-
146-
testContext.RetriedMessageHandled = true;
147-
return Task.CompletedTask;
148-
}
149-
150-
public Task Handle(MessageFailureResolvedByRetry message, IMessageHandlerContext context)
151-
{
152-
testContext.ResolvedMessageId = message.FailedMessageId;
153-
testContext.MessageResolved = true;
154-
return Task.CompletedTask;
155-
}
156-
}
157-
}
158-
159-
class EditResolutionMessage : IMessage
160-
{
161-
public bool HasBeenEdited { get; init; }
162-
public bool HasBeenRetried { get; init; }
163-
}
164-
}
165-
}

0 commit comments

Comments
 (0)