Ejemplo n.º 1
0
        private async Task ExecuteTasksThenUpdateMarkSession(
            IEnumerable <Task> tasks,
            MarkSessionModel markSessionModel
            )
        {
            Exception exception = null;

            try
            {
                await TaskUtil.ExecuteTasksInParallel(tasks);
            }
            catch (Exception e)
            {
                exception = e;
            }
            finally
            {
                await _markSessionRepository.Update(markSessionModel);

                if (exception != null)
                {
                    throw exception;
                }
            }
        }
Ejemplo n.º 2
0
        public async Task DeleteDependantResourcesForMarkSession(
            MarkSessionModel markSessionModel
            )
        {
            var taskList = new List <Task>();

            foreach (var dependantResourceModel in markSessionModel.DependantResources)
            {
                switch (dependantResourceModel.ResourceType)
                {
                case ResourceTypeEnum.Project:
                    // The project must not be deleted !
                    break;

                case ResourceTypeEnum.Metadata:
                    taskList.Add(
                        _fileClient.DeleteResource(dependantResourceModel)
                        );
                    break;

                case ResourceTypeEnum.Scenario:
                    taskList.Add(
                        _scenarioClient.DeleteResource(dependantResourceModel)
                        );
                    break;

                case ResourceTypeEnum.ResultConfig:
                    taskList.Add(
                        _resultConfigClient.DeleteResource(dependantResourceModel)
                        );
                    break;

                case ResourceTypeEnum.SimPlan:
                    taskList.Add(
                        _simPlanClient.DeleteResource(dependantResourceModel, markSessionModel.ProjectId)
                        );
                    break;

                case ResourceTypeEnum.SimRun:
                    taskList.Add(
                        _simRunClient.DeleteResource(dependantResourceModel, markSessionModel.ProjectId)
                        );
                    break;

                case ResourceTypeEnum.ResultData:
                    taskList.Add(
                        _resultDataClient.DeleteResource(dependantResourceModel)
                        );
                    break;

                default:
                    throw new UnknownResourceTypeExcetion(
                              $"{dependantResourceModel.ResourceType} is unknown!"
                              );
                }
            }

            await TaskUtil.ExecuteTasksInParallel(taskList);
        }
        public async void ExecuteTasksInParallel_FailedTask_ThrowsException()
        {
            // Arrange
            var taskList = new List <Task>
            {
                Task.CompletedTask,
                Task.CompletedTask,
                Task.FromException(new Exception())
            };
            Exception exception = null;

            try
            {
                // Act
                await TaskUtil.ExecuteTasksInParallel(taskList);
            }
            catch (Exception e)
            {
                exception = e;
            }

            // Assert
            Assert.NotNull(exception);
        }
        public async void ExecuteTasksInParallel_CompletedTasks_NoExceptionThrown()
        {
            // Arrange
            var taskList = new List <Task>
            {
                Task.CompletedTask,
                Task.CompletedTask,
                Task.CompletedTask
            };
            Exception exception = null;

            // Act
            try
            {
                await TaskUtil.ExecuteTasksInParallel(taskList);
            }
            catch (Exception e)
            {
                exception = e;
            }

            // Assert
            Assert.Null(exception);
        }