public async Task Write(TransportTransactionMode transactionMode) { var endpointConfiguration = EndpointConfigBuilder.BuildEndpoint(nameof(MsmqTransportIntegrationTests)); var typesToScan = TypeScanner.NestedTypes <MsmqTransportIntegrationTests>(); endpointConfiguration.SetTypesToScan(typesToScan); var transport = endpointConfiguration.UseTransport <MsmqTransport>(); transport.Transactions(transactionMode); var persistence = endpointConfiguration.UsePersistence <SqlPersistence>(); persistence.ConnectionBuilder(MsSqlConnectionBuilder.Build); persistence.DisableInstaller(); persistence.SubscriptionSettings().DisableCache(); var endpoint = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false); var startSagaMessage = new StartSagaMessage { StartId = Guid.NewGuid() }; await endpoint.SendLocal(startSagaMessage).ConfigureAwait(false); ManualResetEvent.WaitOne(); await endpoint.Stop().ConfigureAwait(false); }
public async Task SmokeTest(TransportTransactionMode transactionMode) { var endpointConfiguration = EndpointConfigBuilder.BuildEndpoint(nameof(SqlTransportIntegrationTests)); var typesToScan = TypeScanner.NestedTypes <SqlTransportIntegrationTests>(); endpointConfiguration.SetTypesToScan(typesToScan); var transport = endpointConfiguration.UseTransport <SqlServerTransport>(); transport.Transactions(transactionMode); 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(); var endpoint = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false); var startSagaMessage = new StartSagaMessage { StartId = Guid.NewGuid() }; await endpoint.SendLocal(startSagaMessage).ConfigureAwait(false); ManualResetEvent.WaitOne(); await endpoint.Stop().ConfigureAwait(false); }
public async Task RunSqlSecondary() { var endpointConfiguration = EndpointConfigBuilder.BuildEndpoint(nameof(MixedSagaAndNoOutbox)); var typesToScan = TypeScanner.NestedTypes <MixedSagaAndNoOutbox>(); endpointConfiguration.SetTypesToScan(typesToScan); endpointConfiguration.UseTransport <LearningTransport>(); endpointConfiguration.UsePersistence <InMemoryPersistence>(); var persistence = endpointConfiguration.UsePersistence <SqlPersistence, StorageType.Sagas>(); persistence.ConnectionBuilder(MsSqlConnectionBuilder.Build); persistence.DisableInstaller(); var endpoint = await Endpoint.Start(endpointConfiguration).ConfigureAwait(false); var startSagaMessage = new StartSagaMessage { StartId = Guid.NewGuid() }; await endpoint.SendLocal(startSagaMessage).ConfigureAwait(false); Assert.IsTrue(manualResetEvent.WaitOne(TimeSpan.FromSeconds(30))); await endpoint.Stop().ConfigureAwait(false); }
async Task RunTest(Action <EndpointConfiguration> testCase) { manualResetEvent.Reset(); string message = null; Execute(endpointName, OutboxScriptBuilder.BuildDropScript(BuildSqlVariant.MsSqlServer)); Execute(endpointName, OutboxScriptBuilder.BuildCreateScript(BuildSqlVariant.MsSqlServer)); Execute(createUserDataTableText); var endpointConfiguration = EndpointConfigBuilder.BuildEndpoint(endpointName); var typesToScan = TypeScanner.NestedTypes <UserDataConsistencyTests>(); endpointConfiguration.SetTypesToScan(typesToScan); endpointConfiguration.DisableFeature <NServiceBus.Features.TimeoutManager>(); var transport = endpointConfiguration.UseTransport <SqlServerTransport>(); testCase(endpointConfiguration); transport.ConnectionString(MsSqlConnectionBuilder.ConnectionString); var persistence = endpointConfiguration.UsePersistence <SqlPersistence>(); 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(); await endpoint.SendLocal(new FailingMessage { EntityId = dataId }).ConfigureAwait(false); await endpoint.SendLocal(new CheckMessage { EntityId = dataId }).ConfigureAwait(false); manualResetEvent.WaitOne(); await endpoint.Stop().ConfigureAwait(false); Assert.AreEqual("Success", message); }
public void RunSqlForSaga() { var endpointConfiguration = EndpointConfigBuilder.BuildEndpoint(nameof(MixedSagaAndOutbox)); var typesToScan = TypeScanner.NestedTypes <MixedSagaAndOutbox>(); endpointConfiguration.SetTypesToScan(typesToScan); endpointConfiguration.UseTransport <LearningTransport>(); endpointConfiguration.EnableOutbox(); var persistence = endpointConfiguration.UsePersistence <SqlPersistence>(); persistence.ConnectionBuilder(MsSqlConnectionBuilder.Build); persistence.DisableInstaller(); endpointConfiguration.UsePersistence <InMemoryPersistence, StorageType.Outbox>(); var exception = Assert.ThrowsAsync <Exception>(() => Endpoint.Start(endpointConfiguration)); Assert.IsTrue(exception.Message == "Sql Persistence must be enable for either both Sagas and Outbox, or neither."); }
async Task RunTest(Action <EndpointConfiguration> testCase) { ManualResetEvent.Reset(); string message = null; var sagaDefinition = new SagaDefinition( tableSuffix: nameof(Saga1), name: nameof(Saga1), correlationProperty: new CorrelationProperty ( name: nameof(Saga1.SagaData.CorrelationId), type: CorrelationPropertyType.Guid ) ); Execute(SagaScriptBuilder.BuildDropScript(sagaDefinition, BuildSqlDialect.MsSqlServer)); Execute(OutboxScriptBuilder.BuildDropScript(BuildSqlDialect.MsSqlServer)); Execute(SagaScriptBuilder.BuildCreateScript(sagaDefinition, BuildSqlDialect.MsSqlServer)); Execute(OutboxScriptBuilder.BuildCreateScript(BuildSqlDialect.MsSqlServer)); var endpointConfiguration = EndpointConfigBuilder.BuildEndpoint(endpointName); var typesToScan = TypeScanner.NestedTypes <SagaConsistencyTests>(); endpointConfiguration.SetTypesToScan(typesToScan); endpointConfiguration.DisableFeature <NServiceBus.Features.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.SubscriptionSettings().DisableCache(); persistence.DisableInstaller(); 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 sagaId = Guid.NewGuid(); await endpoint.SendLocal(new StartSagaMessage { SagaId = sagaId }).ConfigureAwait(false); await endpoint.SendLocal(new FailingMessage { SagaId = sagaId }).ConfigureAwait(false); await endpoint.SendLocal(new CheckMessage { SagaId = sagaId }).ConfigureAwait(false); ManualResetEvent.WaitOne(); await endpoint.Stop().ConfigureAwait(false); Assert.AreEqual("Success", message); }