public void MoveJobForProcessing_StatusUpdateFailed_Test() { var job = new Jobs.Model.Job() { JobId = 1, JobType = JobType.IlrSubmission }; var jobQueueManagerMock = new Mock <IJobManager>(); jobQueueManagerMock.Setup(x => x.GetJobsByPriorityAsync(It.IsAny <int>())).ReturnsAsync(new List <Job>() { new Jobs.Model.Job() }); jobQueueManagerMock.Setup(x => x.UpdateJobStatus(It.IsAny <long>(), It.IsAny <JobStatusType>())).ReturnsAsync(false); var auditorMock = new Mock <IAuditor>(); auditorMock.Setup(x => x.AuditAsync(It.IsAny <JobContextMessage>(), AuditEventType.ServiceFailed, It.IsAny <string>())).Returns(Task.CompletedTask); var messagingServiceMock = new Mock <IMessagingService>(); messagingServiceMock.Setup(x => x.SendMessageAsync(new MessageParameters(JobType.IlrSubmission))); var queueHandler = GetJobQueueHandler(messagingServiceMock.Object, auditorMock.Object, jobQueueManagerMock.Object); var task = queueHandler.MoveJobForProcessingAsync(job).ConfigureAwait(true); task.GetAwaiter().GetResult(); jobQueueManagerMock.Verify(x => x.UpdateJobStatus(job.JobId, JobStatusType.MovedForProcessing), Times.Once); messagingServiceMock.Verify(x => x.SendMessageAsync(It.IsAny <MessageParameters>()), Times.Never); auditorMock.Verify(x => x.AuditAsync(It.IsAny <JobContextMessage>(), AuditEventType.JobFailed, It.IsAny <string>()), Times.Once); }
public static JobQueueManager.Data.Entities.Job Convert(Jobs.Model.Job source) { if (source == null) { return(null); } var entity = new JobQueueManager.Data.Entities.Job(); Convert(source, entity); return(entity); }
public static void Convert(JobQueueManager.Data.Entities.Job source, Jobs.Model.Job destination) { destination.DateTimeSubmittedUtc = source.DateTimeSubmittedUtc; destination.Priority = source.Priority; destination.Status = (JobStatus.Interface.JobStatusType)source.Status; destination.DateTimeUpdatedUtc = source.DateTimeUpdatedUtc; destination.JobId = source.JobId; destination.RowVersion = source.RowVersion == null ? null : System.Convert.ToBase64String(source.RowVersion); destination.SubmittedBy = source.SubmittedBy; destination.NotifyEmail = source.NotifyEmail; destination.JobType = (Jobs.Model.Enums.JobType)source.JobType; destination.CrossLoadingStatus = source.CrossLoadingStatus.HasValue ? (JobStatus.Interface.JobStatusType)source.CrossLoadingStatus.Value : (JobStatus.Interface.JobStatusType?)null; }
public static void Convert(Jobs.Model.Job source, JobQueueManager.Data.Entities.Job destination) { destination.DateTimeSubmittedUtc = source.DateTimeSubmittedUtc; destination.JobType = (short)source.JobType; destination.Priority = source.Priority; destination.Status = (short)source.Status; destination.DateTimeUpdatedUtc = source.DateTimeUpdatedUtc; destination.JobId = source.JobId; destination.SubmittedBy = source.SubmittedBy; destination.NotifyEmail = source.NotifyEmail; destination.RowVersion = source.RowVersion == null ? null : System.Text.Encoding.UTF8.GetBytes(source.RowVersion); destination.CrossLoadingStatus = source.CrossLoadingStatus.HasValue ? (short)source.CrossLoadingStatus : (short?)null; }
public ActionResult Post([FromBody] FileUploadJob job) { _logger.LogInfo("Post for job received for job: {@job}", new[] { job }); if (job == null) { _logger.LogWarning("Job Post request received with empty data"); return(BadRequest()); } if (!Enum.IsDefined(typeof(JobStatusType), job.Status)) { _logger.LogWarning($"Job Post request received with bad status {job.Status}"); return(BadRequest("Status is not a valid value")); } if (!Enum.IsDefined(typeof(JobType), job.JobType)) { _logger.LogWarning($"Job Post request received with bad job type {job.JobType}"); return(BadRequest("Job type is not a valid value")); } try { var jobModel = new Jobs.Model.Job { Status = job.Status, JobId = job.JobId, JobType = job.JobType, Priority = job.Priority, SubmittedBy = job.SubmittedBy, NotifyEmail = job.NotifyEmail, DateTimeSubmittedUtc = job.DateTimeSubmittedUtc, }; if (job.JobId > 0) { if (job.Status == JobStatusType.Ready || job.Status == JobStatusType.Paused || job.Status == JobStatusType.FailedRetry) { _logger.LogInfo($"Going to update job with job Id: {job.JobId}"); var result = _jobManager.UpdateJob(jobModel); if (result) { _logger.LogInfo($"Successfully updated job with job Id: {job.JobId}"); return(Ok()); } _logger.LogWarning($"Update job failed for job Id: {job.JobId}"); return(BadRequest()); } _logger.LogWarning($"Update job rejected because job status is not updateable for job Id: {job.JobId}; status: {job.Status}"); return(BadRequest($"Only job with status of {nameof(JobStatusType.Ready)}, {nameof(JobStatusType.Paused)} or {nameof(JobStatusType.FailedRetry)} can be updated.")); } _logger.LogInfo($"Create Job request received with object: {job} "); job.JobId = _fileUploadJobManager.AddJob(job); if (job.JobId > 0) { _logger.LogInfo($"Created job successfully with Id: {job.JobId}"); return(Ok(job.JobId)); } _logger.LogInfo("Create job failed for job: {@job}", new[] { job }); return(BadRequest()); } catch (Exception ex) { _logger.LogError("Post for job failed for job: {@job}", ex, new[] { job }); return(BadRequest()); } }