public SlowConcurrentSaga_Specs() { _sagaRepository = new Lazy <ISagaRepository <SlowConcurrentSaga> >(() => AzureTableSagaRepository <SlowConcurrentSaga> .Create(() => TestCloudTable)); _sagaTestHarness = BusTestHarness.StateMachineSaga(new SlowConcurrentSagaStateMachine(), _sagaRepository.Value); }
public async Task Setup() { correlationId = Guid.NewGuid(); stateMachine = new GameStateMachine(new Mock <ILogger <GameStateMachine> >().Object, Options.Create(new RabbitMQConfiguration { Endpoint = "rabbitmq://localhost" })); harness = new InMemoryTestHarness(); sagaTestHarness = harness.StateMachineSaga <GameSaga, GameStateMachine>(stateMachine); await harness.Start(); }
public SlowConcurrentSaga_Specs() { // rowlock statements that don't work to cause a deadlock. var notWorkingRowLockStatements = new SqlLockStatementProvider("dbo", "SELECT * FROM \"{1}\" WHERE \"CorrelationId\" = @p0"); // add new migration by calling // dotnet ef migrations add --context "SagaDbContext``2" Init -v _sagaRepository = new Lazy <ISagaRepository <SlowConcurrentSaga> >(() => EntityFrameworkSagaRepository <SlowConcurrentSaga> .CreatePessimistic( () => new SlowConcurrentSagaContextFactory().CreateDbContext(DbContextOptionsBuilder), notWorkingRowLockStatements)); _sagaTestHarness = BusTestHarness.StateMachineSaga(new SlowConcurrentSagaStateMachine(), _sagaRepository.Value); }
public async Task A_saga_is_being_tested() { _sagaId = Guid.NewGuid(); _testValueA = "TestValueA"; _harness = new InMemoryTestHarness(); _saga = _harness.Saga <TestSaga>(); await _harness.Start(); await _harness.InputQueueSendEndpoint.Send(new A { CorrelationId = _sagaId, Value = _testValueA }); }
public async Task WhenGoodbyeReceivedFromAnotherUser_ShouldRemainUnchanged() { await SayManyHellos("aSender", 3); await InputQueueSendEndpoint.Send <ISayGoodbye>(new { Sender = "anotherSender" }); var stateIds = await SagaTestHarness.Exists(state => state.Sender == "aSender", machine => machine.Greeted); var instance = SagaTestHarness.Sagas.Contains(stateIds.FirstOrDefault()); Assert.That(instance, Is.Not.Null); Assert.That(instance.CorrelationId, Is.Not.EqualTo(Guid.Empty)); Assert.That(instance.CurrentState, Is.EqualTo(nameof(GreetingsStateMachine.Greeted))); Assert.That(instance.Sender, Is.EqualTo("aSender")); Assert.That(instance.Occurrences, Is.EqualTo(3)); }
public async Task WhenGoodbyeReceivedFromSameUser_ShouldFinalize() { await SayManyHellos("aSender", 3); await InputQueueSendEndpoint.Send <ISayGoodbye>(new { Sender = "aSender" }); Assert.That(await TestHarness.Consumed.Any <ISayGoodbye>(), Is.True); var stateIds = await SagaTestHarness.Exists(state => state.Sender == "aSender", machine => machine.Final); var instance = SagaTestHarness.Sagas.Contains(stateIds.FirstOrDefault()); Assert.That(instance, Is.Not.Null); Assert.That(instance.CorrelationId, Is.Not.EqualTo(Guid.Empty)); Assert.That(instance.Sender, Is.EqualTo("aSender")); }
public async Task WhenHelloReceived_ShouldCreateState() { await InputQueueSendEndpoint.Send <ISayHello>(new { Sender = "aSender" }); Assert.That(await TestHarness.Consumed.Any <ISayHello>(), Is.True); Assert.That(SagaTestHarness.Created.Count(), Is.EqualTo(1)); var stateIds = await SagaTestHarness.Exists(state => state.Sender == "aSender", machine => machine.Greeted); var instance = SagaTestHarness.Sagas.Contains(stateIds.FirstOrDefault()); Assert.That(instance, Is.Not.Null); Assert.That(instance.CorrelationId, Is.Not.EqualTo(Guid.Empty)); Assert.That(instance.Sender, Is.EqualTo("aSender")); Assert.That(instance.Occurrences, Is.EqualTo(1)); Assert.IsTrue(instance.Created == instance.Updated); }