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); }); })); }
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)); })); }
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); }