public async Task MultiGrainAbortTransactionOnExceptions(string grainStates) { const int grainCount = TransactionTestConstants.MaxCoordinatedTransactions - 1; const int expected = 5; ITransactionTestGrain throwGrain = RandomTestGrain(grainStates); List <ITransactionTestGrain> grains = Enumerable.Range(0, grainCount) .Select(i => RandomTestGrain(grainStates)) .ToList(); ITransactionCoordinatorGrain coordinator = this.grainFactory.GetGrain <ITransactionCoordinatorGrain>(Guid.NewGuid()); await throwGrain.Set(expected); await coordinator.MultiGrainSet(grains, expected); await Assert.ThrowsAsync <OrleansTransactionAbortedException>(() => coordinator.MultiGrainAddAndThrow(throwGrain, grains, expected)); grains.Add(throwGrain); await TestAfterDustSettles(async() => { foreach (var grain in grains) { int[] actualValues = await grain.Get(); foreach (var actual in actualValues) { Assert.Equal(expected, actual); } } }); }
public virtual void TransactionGrainsThrowWhenTransactions(string transactionTestGrainClassName) { const int delta = 5; ITransactionTestGrain grain = RandomTestGrain(transactionTestGrainClassName); Func <Task> task = () => grain.Set(delta); var response = task.ShouldThrow <OrleansTransactionsDisabledException>(); }
public async Task AbortTransactionOnOrphanCalls(string transactionTestGrainClassName) { const int expected = 5; ITransactionTestGrain grain = RandomTestGrain(transactionTestGrainClassName); ITransactionCoordinatorGrain coordinator = this.grainFactory.GetGrain <ITransactionCoordinatorGrain>(Guid.NewGuid()); await grain.Set(expected); await Assert.ThrowsAsync <OrleansOrphanCallException>(() => coordinator.OrphanCallTransaction(grain)); //await Task.Delay(20000); // give time for GC await TestAfterDustSettles(async() => { int actual = await grain.Get(); Assert.Equal(expected, actual); }); }
public async Task AbortTransactionOnOrphanCalls(TransactionTestConstants.TransactionGrainStates grainStates) { const int expected = 5; ITransactionTestGrain grain = RandomTestGrain(grainStates); ITransactionCoordinatorGrain coordinator = this.grainFactory.GetGrain <ITransactionCoordinatorGrain>(Guid.NewGuid()); await grain.Set(expected); await Assert.ThrowsAsync <OrleansOrphanCallException>(() => coordinator.OrphanCallTransaction(grain)); //await Task.Delay(20000); // give time for GC await TestAfterDustSettles(async() => { int[] actualValues = await grain.Get(); foreach (var actual in actualValues) { Assert.Equal(expected, actual); } }); }
public virtual async Task AbortTransactionOnOrphanCalls(string grainStates) { const int expected = 5; ITransactionTestGrain grain = RandomTestGrain(grainStates); ITransactionCoordinatorGrain coordinator = this.grainFactory.GetGrain <ITransactionCoordinatorGrain>(Guid.NewGuid()); await grain.Set(expected); Func <Task> task = () => coordinator.OrphanCallTransaction(grain); await task.Should().ThrowAsync <OrleansOrphanCallException>(); //await Task.Delay(20000); // give time for GC await TestAfterDustSettles(async() => { int[] actualValues = await grain.Get(); foreach (var actual in actualValues) { actual.Should().Be(expected); } }); }
public virtual async Task MultiGrainAbortTransactionOnExceptions(string grainStates) { const int grainCount = TransactionTestConstants.MaxCoordinatedTransactions - 1; const int expected = 5; ITransactionTestGrain throwGrain = RandomTestGrain(grainStates); List <ITransactionTestGrain> grains = Enumerable.Range(0, grainCount) .Select(i => RandomTestGrain(grainStates)) .ToList(); ITransactionCoordinatorGrain coordinator = this.grainFactory.GetGrain <ITransactionCoordinatorGrain>(Guid.NewGuid()); await throwGrain.Set(expected); await coordinator.MultiGrainSet(grains, expected); Func <Task> task = () => coordinator.MultiGrainAddAndThrow(new List <ITransactionTestGrain>() { throwGrain }, grains, expected); task.ShouldThrow <OrleansTransactionAbortedException>(); grains.Add(throwGrain); await TestAfterDustSettles(async() => { foreach (var grain in grains) { int[] actualValues = await grain.Get(); foreach (var actual in actualValues) { actual.ShouldBeEquivalentTo(expected); } } }); }
public virtual async Task TransactionGrainsThrowWhenTransactions(string transactionTestGrainClassName) { const int delta = 5; ITransactionTestGrain grain = RandomTestGrain(transactionTestGrainClassName); OrleansStartTransactionFailedException exception = await Assert.ThrowsAsync <OrleansStartTransactionFailedException>(() => grain.Set(delta)); Assert.IsAssignableFrom <OrleansTransactionsDisabledException>(exception.InnerException); }