Exemple #1
0
        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");
            }
        }
Exemple #2
0
        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));
 }
Exemple #4
0
 public Task Handle(FailingMessage message, IMessageHandlerContext context)
 {
     testContext.TimeoutManagerHeaderDetected  = context.MessageHeaders.ContainsKey("NServiceBus.Timeout.Expire");
     testContext.ExternalTimeoutManagerInvoked = true;
     return(Task.FromResult(0));
 }
Exemple #5
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");
     }
 }