コード例 #1
0
        public async Task <int> Create(CatapultEngine entity, CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();

            entity.Created = DateTime.UtcNow;
            var user = _mapper.Map <ApplicationUser>(entity);

            user.Email = $"{user.UserName}@opencatapult.net"; // dummy email to avoid error

            var result = await _userManager.CreateAsync(user);

            if (!result.Succeeded)
            {
                result.ThrowErrorException();
            }

            await _userManager.AddToRoleAsync(user, UserRole.Engine);

            var profile = _mapper.Map <CatapultEngineProfile>(entity);

            profile.CatapultEngine = user;
            profile.IsActive       = true;
            await _profileRepository.Create(profile, cancellationToken);

            return(user.Id);
        }
コード例 #2
0
        public async Task <CatapultEngine> CreateCatapultEngine(string name, CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();

            var currentEngine = await _catapultEngineRepository.GetByCatapultEngineName(name, cancellationToken);

            if (currentEngine != null)
            {
                throw new DuplicateCatapultEngineException(name);
            }

            var catapultEngine = new CatapultEngine
            {
                Name = name
            };

            try
            {
                var id = await _catapultEngineRepository.Create(catapultEngine, cancellationToken);

                if (id > 0)
                {
                    catapultEngine.Id = id;
                }
            }
            catch (Exception ex)
            {
                throw new CatapultEngineCreationFailedException(name, ex);
            }

            return(catapultEngine);
        }
コード例 #3
0
        public async void CheckApiConnection_ReturnFailed()
        {
            _healthService.Setup(s => s.CheckHealthSecure()).ReturnsAsync(false);

            var engine = new CatapultEngine(_engineConfig.Object, _taskRunner.Object, _healthService.Object,
                                            _jobQueueService.Object, _jobDefinitionService.Object, _projectService.Object, _jobLogWriter.Object, _logger.Object);

            var success = await engine.CheckApiConnection();

            Assert.False(success);
        }
コード例 #4
0
        public async void GetJobInQueue_ReturnEmpty()
        {
            _jobQueueService.Setup(s => s.CheckJob()).ReturnsAsync((JobDto)null);

            var engine = new CatapultEngine(_engineConfig.Object, _taskRunner.Object, _healthService.Object,
                                            _jobQueueService.Object, _jobDefinitionService.Object, _projectService.Object, _jobLogWriter.Object, _logger.Object);

            var result = await engine.GetJobInQueue();

            Assert.Null(result);
        }
コード例 #5
0
        public async Task Update(CatapultEngine entity, CancellationToken cancellationToken = default(CancellationToken))
        {
            cancellationToken.ThrowIfCancellationRequested();

            var user = await _userManager.Users.Include(u => u.CatapultEngineProfile).FirstOrDefaultAsync(u => u.Id == entity.Id, cancellationToken);

            if (user != null && user.CatapultEngineProfile != null)
            {
                _mapper.Map(entity, user.CatapultEngineProfile);
                user.CatapultEngineProfile.Updated          = DateTime.UtcNow;
                user.CatapultEngineProfile.ConcurrencyStamp = Guid.NewGuid().ToString();
                await _profileRepository.Update(user.CatapultEngineProfile, cancellationToken);
            }
        }
コード例 #6
0
        public async void ExecuteJob_InvokeTaskRunner()
        {
            _jobQueueService.Setup(s => s.GetJobQueue(1, 1)).ReturnsAsync(new JobDto {
                Id = 1
            });
            _jobDefinitionService.Setup(s => s.GetJobTaskDefinitions(1, 1))
            .ReturnsAsync(new List <JobTaskDefinitionDto>());

            var engine = new CatapultEngine(_engineConfig.Object, _taskRunner.Object, _healthService.Object,
                                            _jobQueueService.Object, _jobDefinitionService.Object, _projectService.Object, _jobLogWriter.Object, _logger.Object);

            await engine.ExecuteJob(new JobDto { ProjectId = 1, Code = "20180817.1" });

            _taskRunner.Verify(tr => tr.Run(1, It.Is <JobDto>(j => j.Code == "20180817.1"), It.IsAny <List <JobTaskDefinitionDto> >(), It.IsAny <string>(), It.IsAny <string>()), Times.Once);
        }
コード例 #7
0
        public async void ExecuteJob_InvokeDeleteProject()
        {
            _jobQueueService.Setup(s => s.GetJobQueue(1, 1))
            .ReturnsAsync(new JobDto {
                Id = 1, IsDeletion = true, ProjectStatus = ProjectStatusFilterType.Deleting
            });
            _jobDefinitionService.Setup(s => s.GetJobTaskDefinitions(1, 1))
            .ReturnsAsync(new List <JobTaskDefinitionDto>());
            _taskRunner
            .Setup(t => t.Run(It.IsAny <int>(), It.IsAny <JobDto>(), It.IsAny <List <JobTaskDefinitionDto> >(), It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(new Dictionary <int, TaskRunnerResult>
            {
                { 1, new TaskRunnerResult(true, "") }
            });

            var engine = new CatapultEngine(_engineConfig.Object, _taskRunner.Object, _healthService.Object,
                                            _jobQueueService.Object, _jobDefinitionService.Object, _projectService.Object, _jobLogWriter.Object, _logger.Object);

            await engine.ExecuteJob(new JobDto { ProjectId = 1, Code = "20180817.1", IsDeletion = true, ProjectStatus = ProjectStatusFilterType.Deleting });

            _projectService.Verify(p => p.DeleteProjectByEngine(1), Times.Once);
        }