public virtual async Task MultiGrainWriteTransactionWithCommitException(string grainStates, int grainCount) { const int expected = 5; ITransactionCommitterTestGrain committer = this.grainFactory.GetGrain <ITransactionCommitterTestGrain>(Guid.NewGuid()); List <ITransactionTestGrain> grains = Enumerable.Range(0, grainCount) .Select(i => RandomTestGrain(grainStates)) .ToList(); ITransactionCoordinatorGrain coordinator = this.grainFactory.GetGrain <ITransactionCoordinatorGrain>(Guid.NewGuid()); await coordinator.MultiGrainAdd(committer, new PassOperation("pass"), grains, expected); Func <Task> task = () => coordinator.MultiGrainAdd(committer, new ThrowOperation("throw"), grains, expected); await task.Should().ThrowAsync <OrleansTransactionInDoubtException>(); foreach (var grain in grains) { var actualValues = await grain.Get(); foreach (var actual in actualValues) { actual.Should().Be(expected); } } // TODO : Add verification that commit service receive call with proper args. }
public virtual async Task MultiGrainWriteTransaction(string grainStates, int grainCount) { const int expected = 5; ITransactionCommitterTestGrain committer = this.grainFactory.GetGrain <ITransactionCommitterTestGrain>(Guid.NewGuid()); List <ITransactionTestGrain> grains = Enumerable.Range(0, grainCount) .Select(i => RandomTestGrain(grainStates)) .ToList(); ITransactionCoordinatorGrain coordinator = this.grainFactory.GetGrain <ITransactionCoordinatorGrain>(Guid.NewGuid()); await coordinator.MultiGrainAdd(committer, "arg", grains, expected); foreach (var grain in grains) { var actualValues = await grain.Get(); foreach (var actual in actualValues) { Assert.Equal(expected, actual); } } // TODO : Add verification that commit service recieve call with proper args. }
public Task MultiGrainAdd(ITransactionCommitterTestGrain committer, ITransactionCommitOperation <IRemoteCommitService> operation, List <ITransactionTestGrain> grains, int numberToAdd) { List <Task> tasks = new List <Task>(); tasks.AddRange(grains.Select(g => g.Add(numberToAdd))); tasks.Add(committer.Commit(operation)); return(Task.WhenAll(tasks)); }
public Task MultiGrainAdd(ITransactionCommitterTestGrain committer, string commitArg, List <ITransactionTestGrain> grains, int numberToAdd) { List <Task> tasks = new List <Task>(); tasks.AddRange(grains.Select(g => g.Add(numberToAdd))); tasks.Add(committer.Commit(commitArg)); return(Task.WhenAll(tasks)); }