public BatchOperationResponse Execute(BatchOperationRequest request) { var adjacentGroups = GetAdjacentGroups(request.Operations); var results = new List <OperationResult>(); foreach (var kvp in adjacentGroups) { if (kvp.Key == ProcessingType.Serial) { results.AddRange(ProcessSerial(request.FaultCancellationOption, request.Arguments, GetExecutors(kvp.Value))); } else { results.AddRange(ProcessParallel(request.FaultCancellationOption, request.Arguments, GetExecutors(kvp.Value))); } if (request.FaultCancellationOption == FaultCancellationOption.Cancel && results.Any(x => x.IsFaulted)) { break; } } return(new BatchOperationResponse { Results = results }); }
public void OperationAggregatorUsingParallel() { var expected = new BatchOperationResponse { Results = new List <OperationResult> { new OperationResult { Value = "1" } } }; var request = new BatchOperationRequest { Operations = CreateOperations(ProcessingType.Parallel), Arguments = new List <OperationArgument> { new OperationArgument { Name = "Operation Args", Value = "1" } } }; var result = _operationAggregator.Execute(request); Assert.AreEqual(expected.Results.First().Value, result.Results.First().Value); }