protected static void SmartFailing(FailingMessage message, NuclearStorage storage) { var status = storage.GetSingletonOrNew <int>(); if (status < message.FailXTimes) { storage.AddOrUpdateSingleton(() => 1, i => i + 1); throw new InvalidOperationException("Failure requested"); } }
private static async Task Run() { var ep1 = await StartEndpoint("Ep1"); var ep2 = await StartEndpoint("Ep2"); var message = new FailingMessage(); await ep1.Send("Ep1", message) .ConfigureAwait(false); }
public Task Handle(FailingMessage message, IMessageHandlerContext context) { Data.PersistedFailingMessageResult = true; return(Task.FromResult(0)); }
public Task Handle(FailingMessage message, IMessageHandlerContext context) { testContext.TimeoutManagerHeaderDetected = context.MessageHeaders.ContainsKey("NServiceBus.Timeout.Expire"); testContext.ExternalTimeoutManagerInvoked = true; return(Task.FromResult(0)); }
async Task RunTest(Action <EndpointConfiguration> testCase) { manualResetEvent.Reset(); string message = null; Execute(endpointName, OutboxScriptBuilder.BuildDropScript(BuildSqlDialect.MsSqlServer)); Execute(endpointName, OutboxScriptBuilder.BuildCreateScript(BuildSqlDialect.MsSqlServer)); Execute(createUserDataTableText); var endpointConfiguration = EndpointConfigBuilder.BuildEndpoint(endpointName); //Hack: enable outbox to force sql session since we have no saga endpointConfiguration.EnableOutbox(); var typesToScan = TypeScanner.NestedTypes <UserDataConsistencyTests>(); endpointConfiguration.SetTypesToScan(typesToScan); endpointConfiguration.DisableFeature <TimeoutManager>(); var transport = endpointConfiguration.UseTransport <SqlServerTransport>(); testCase(endpointConfiguration); transport.UseCustomSqlConnectionFactory(async() => { var connection = MsSqlConnectionBuilder.Build(); await connection.OpenAsync().ConfigureAwait(false); return(connection); }); var persistence = endpointConfiguration.UsePersistence <SqlPersistence>(); persistence.SqlDialect <SqlDialect.MsSqlServer>(); persistence.ConnectionBuilder(MsSqlConnectionBuilder.Build); persistence.DisableInstaller(); persistence.SubscriptionSettings().DisableCache(); endpointConfiguration.DefineCriticalErrorAction(c => { message = c.Error; manualResetEvent.Set(); return(Task.FromResult(0)); }); endpointConfiguration.LimitMessageProcessingConcurrencyTo(1); endpointConfiguration.Pipeline.Register(new FailureTrigger(), "Failure trigger"); var endpoint = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false); var dataId = Guid.NewGuid(); var failingMessage = new FailingMessage { EntityId = dataId }; await endpoint.SendLocal(failingMessage).ConfigureAwait(false); var checkMessage = new CheckMessage { EntityId = dataId }; await endpoint.SendLocal(checkMessage).ConfigureAwait(false); manualResetEvent.WaitOne(); await endpoint.Stop().ConfigureAwait(false); Assert.AreEqual("Success", message); }
protected static void SmartFailing(FailingMessage message, NuclearStorage storage) { var status = storage.GetSingletonOrNew<int>(); if (status < message.FailXTimes) { storage.AddOrUpdateSingleton(() => 1, i => i + 1); throw new InvalidOperationException("Failure requested"); } }