From 25179b88daa34d6a7b9699c5f28a6e93fc7b5910 Mon Sep 17 00:00:00 2001 From: Bartek Wasielak Date: Wed, 26 Nov 2025 15:56:29 -0500 Subject: [PATCH 1/2] Test modification --- .../When_edited_message_fails_to_process.cs | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs b/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs index 5ed8d19098..4d7600880a 100644 --- a/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs +++ b/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs @@ -1,14 +1,13 @@ namespace ServiceControl.AcceptanceTests.Recoverability { using System; - using System.Collections.Generic; using System.Linq; using System.Text.Json; using System.Threading.Tasks; using AcceptanceTesting; using AcceptanceTesting.EndpointTemplates; using AcceptanceTests; - using ExternalIntegration; + using Contracts.MessageFailures; using NServiceBus; using NServiceBus.AcceptanceTesting; using NUnit.Framework; @@ -20,9 +19,21 @@ class When_edited_message_fails_to_process : AcceptanceTest [Test] public async Task A_new_message_failure_is_created() { + CustomConfiguration = config => config.OnEndpointSubscribed((s, ctx) => + { + ctx.ExternalProcessorSubscribed = s.SubscriberReturnAddress.Contains(nameof(FailingEditedMessageReceiver)); + }); + var context = await Define() - .WithEndpoint(e => e - .When(c => c.SendLocal(new FailingMessage())) + .WithEndpoint(b => b.When(async (bus, c) => + { + await bus.Subscribe(); + + if (c.HasNativePubSubSupport) + { + c.ExternalProcessorSubscribed = true; + } + }).When(c => c.SendLocal(new FailingMessage())) .DoNotFailOnErrorMessages()) .Done(async ctx => { @@ -62,7 +73,7 @@ public async Task A_new_message_failure_is_created() return false; } - if (!ctx.EditedMessageHandled) + if (!ctx.EditedMessageHandled || !ctx.MessageFailedHandled) { return false; } @@ -112,6 +123,10 @@ class EditMessageFailureContext : ScenarioContext public string OriginalMessageFailureId { get; set; } public string EditedMessageFailureId { get; set; } public string EditedMessageInternalId { get; set; } + public bool ExternalProcessorSubscribed { get; set; } + public string FirstMessageFailedId { get; set; } + public string SecondMessageFailedId { get; set; } + public bool MessageFailedHandled { get; set; } } class FailingEditedMessageReceiver : EndpointConfigurationBuilder @@ -119,7 +134,7 @@ class FailingEditedMessageReceiver : EndpointConfigurationBuilder public FailingEditedMessageReceiver() => EndpointSetup(c => { c.NoRetries(); }); class FailingMessageHandler(EditMessageFailureContext testContext) - : IHandleMessages + : IHandleMessages, IHandleMessages { public Task Handle(FailingMessage message, IMessageHandlerContext context) { @@ -134,6 +149,20 @@ public Task Handle(FailingMessage message, IMessageHandlerContext context) throw new SimulatedException(); } + + public Task Handle(MessageFailed message, IMessageHandlerContext context) + { + if (testContext.FirstMessageFailedId == null) + { + testContext.FirstMessageFailedId = message.FailedMessageId; + } + else + { + testContext.SecondMessageFailedId = message.FailedMessageId; + testContext.MessageFailedHandled = true; + } + return Task.CompletedTask; + } } } From d44ee94aec9b5586de1e521b7f795a6ede99db90 Mon Sep 17 00:00:00 2001 From: SzymonPobiega Date: Thu, 27 Nov 2025 09:13:04 +0100 Subject: [PATCH 2/2] Change contract types --- .../Recoverability/When_edited_message_fails_to_process.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs b/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs index 4d7600880a..8b7f768ae3 100644 --- a/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs +++ b/src/ServiceControl.AcceptanceTests/Recoverability/When_edited_message_fails_to_process.cs @@ -27,7 +27,7 @@ public async Task A_new_message_failure_is_created() var context = await Define() .WithEndpoint(b => b.When(async (bus, c) => { - await bus.Subscribe(); + await bus.Subscribe(); if (c.HasNativePubSubSupport) { @@ -134,7 +134,7 @@ class FailingEditedMessageReceiver : EndpointConfigurationBuilder public FailingEditedMessageReceiver() => EndpointSetup(c => { c.NoRetries(); }); class FailingMessageHandler(EditMessageFailureContext testContext) - : IHandleMessages, IHandleMessages + : IHandleMessages, IHandleMessages { public Task Handle(FailingMessage message, IMessageHandlerContext context) { @@ -150,7 +150,7 @@ public Task Handle(FailingMessage message, IMessageHandlerContext context) throw new SimulatedException(); } - public Task Handle(MessageFailed message, IMessageHandlerContext context) + public Task Handle(ServiceControl.Contracts.MessageFailed message, IMessageHandlerContext context) { if (testContext.FirstMessageFailedId == null) {