Esempio n. 1
0
 public Task AsyncRequestReply_Success()
 {
     return(TestServiceExecutor.ExecuteInScope(async scope =>
     {
         var bus = scope.ServiceProvider.GetService <IBus>();
         var repository = scope.ServiceProvider.GetService <IResponseRepository>();
         var request = new SafeRebusRequest();
         await bus.Send(request);
         await Utilities.Tools.WaitUntilSuccess(async() =>
         {
             (await repository.SelectResponse(request.Id)).Id.Should().Be(request.Id);
         });
     }));
 }
Esempio n. 2
0
 public Task BeginTransactionAndCommit_Success()
 {
     return(TestServiceExecutor.ExecuteInScope(async scope =>
     {
         var originalQueue = scope.ServiceProvider.GetService <IConfiguration>().GetRabbitMqInputQueue();
         var bus = scope.ServiceProvider.GetService <IOutboxBus>();
         var repository = scope.ServiceProvider.GetService <IResponseRepository>();
         var request = new SafeRebusRequest();
         await bus.BeginTransaction(GetTransportMessage(originalQueue));
         await bus.Send(request);
         await bus.Commit();
         await MessageHandler.Utilities.Tools.WaitUntilSuccess(async() =>
         {
             (await repository.SelectResponse(request.Id)).Id.Should().Be(request.Id);
         });
     }));
 }
        public Task SendFromNServiceBusToRebusWithReplyFromRebus_Success()
        {
            return(NServiceBusTestUtilities.ExecuteInNServiceBusScope(async(nServiceBusScope, rebusBus) =>
            {
                var outputQueue = nServiceBusScope.ServiceProvider.GetService <IConfiguration>().GetRabbitMqOutputQueue();
                var endpointInstance = nServiceBusScope.ServiceProvider.GetService <IEndpointInstance>();
                var repository = nServiceBusScope.ServiceProvider.GetService <IResponseRepository>();
                var request = new SafeRebusRequest();
                var request2 = new SafeRebusRequest();

                await endpointInstance.Send(outputQueue, request);
                await endpointInstance.Send(outputQueue, request2);
                await MessageHandler.Utilities.Tools.WaitUntilSuccess(async() =>
                {
                    (await repository.SelectResponse(request.Id)).Id.Should().Be(request.Id);
                    (await repository.SelectResponse(request2.Id)).Id.Should().Be(request2.Id);
                }, TimeSpan.FromSeconds(3));
            }));
        }
Esempio n. 4
0
        public async Task BeginTransactionAndNotCommit_ResendSuccess()
        {
            var request = new SafeRebusRequest();
            var additionalOverrideConfig = new Dictionary <string, string>();
            await TestServiceExecutor.ExecuteInScope(async scope =>
            {
                var inputQueue = scope.ServiceProvider.GetService <IConfiguration>().GetRabbitMqInputQueue();
                additionalOverrideConfig["rabbitMq:inputQueue"]  = inputQueue;
                additionalOverrideConfig["rabbitMq:outputQueue"] = inputQueue;
                var bus        = scope.ServiceProvider.GetService <IOutboxBus>();
                var dbProvider = scope.ServiceProvider.GetService <IDbProvider>();
                await bus.BeginTransaction(GetTransportMessage(inputQueue));
                await bus.Send(request);
                dbProvider.GetDbTransaction().Commit();
            });

            await Task.Delay(TimeSpan.FromSeconds(1));

            await TestServiceExecutor.ExecuteInScope(async scope =>
            {
                var outboxMessageCleaner = scope.ServiceProvider.GetService <IOutboxMessageCleaner>();
                await outboxMessageCleaner.CleanMessages(false);
                await Task.Delay(TimeSpan.FromSeconds(1));
            }, additionalOverrideConfig);

            await TestServiceExecutor.ExecuteInScope(async scope =>
            {
                var repository = scope.ServiceProvider.GetService <IResponseRepository>();
                var outboxMessageRepository = scope.ServiceProvider.GetService <IOutboxMessageRepository>();
                await MessageHandler.Utilities.Tools.WaitUntilSuccess(async() =>
                {
                    (await repository.SelectResponse(request.Id)).Id.Should().Be(request.Id);
                });
                var outboxMessages = await outboxMessageRepository.SelectOutboxMessagesBeforeThreshold(TimeSpan.Zero);
                outboxMessages.Should().BeEmpty();
            }, additionalOverrideConfig);
        }