public async Task ProcessDeadLetteredMessage_GivenMessageAndLogIsUpdated_LogsInformation() { // Arrange const string jobId = "job-id-1"; JobLog jobLog = new JobLog { Id = "job-log-id-1" }; ApiResponse <JobLog> jobLogResponse = new ApiResponse <JobLog>(HttpStatusCode.OK, jobLog); Message message = new Message(); message.UserProperties.Add("jobId", jobId); IJobsApiClient jobsApiClient = CreateJobsApiClient(); jobsApiClient .AddJobLog(Arg.Is(jobId), Arg.Any <JobLogUpdateModel>()) .Returns(jobLogResponse); ILogger logger = CreateLogger(); IJobHelperService service = CreateJobHelperService(jobsApiClient, logger); // Act await service.ProcessDeadLetteredMessage(message); // Assert logger .Received(1) .Information(Arg.Is($"A new job log was added to inform of a dead lettered message with job log id '{jobLog.Id}' on job with id '{jobId}'")); }
public async Task ProcessDeadLetteredMessage_GivenMessageButAddingLogCausesException_LogsAnError() { // Arrange const string jobId = "job-id-1"; Message message = new Message(); message.UserProperties.Add("jobId", jobId); IJobsApiClient jobsApiClient = CreateJobsApiClient(); jobsApiClient .When(x => x.AddJobLog(Arg.Is(jobId), Arg.Any <JobLogUpdateModel>())) .Do(x => { throw new Exception(); }); ILogger logger = CreateLogger(); IJobHelperService service = CreateJobHelperService(jobsApiClient, logger); // Act await service.ProcessDeadLetteredMessage(message); // Assert logger .Received(1) .Error(Arg.Any <Exception>(), Arg.Is($"Failed to add a job log for job id '{jobId}'")); }
public async Task Run([ServiceBusTrigger(ServiceBusConstants.QueueNames.AllocationLineResultStatusUpdatesPoisoned, Connection = ServiceBusConstants.ConnectionStringConfigurationKey)] Message message) { try { _correlationIdProvider.SetCorrelationId(message.GetCorrelationId()); await _jobHelperService.ProcessDeadLetteredMessage(message); } catch (Exception exception) { _logger.Error(exception, $"An error occurred getting message from queue: {ServiceBusConstants.QueueNames.AllocationLineResultStatusUpdates}"); throw; } }
public async Task Run([ServiceBusTrigger(ServiceBusConstants.QueueNames.CalculationJobInitialiserPoisoned, Connection = ServiceBusConstants.ConnectionStringConfigurationKey)] Message message) { try { _correlationIdProvider.SetCorrelationId(message.GetCorrelationId()); await _jobHelperService.ProcessDeadLetteredMessage(message); _logger.Information("Proccessed instruct generate allocations dead lettered message complete"); } catch (Exception exception) { _logger.Error(exception, $"An error occurred getting message from queue: {ServiceBusConstants.QueueNames.CalculationJobInitialiserPoisoned}"); throw; } }
public async Task Run([ServiceBusTrigger(ServiceBusConstants.QueueNames.CalcEngineGenerateAllocationResultsPoisoned, Connection = ServiceBusConstants.ConnectionStringConfigurationKey)] Message message) { _logger.Information("Scope created, starting to process dead letter message for generating allocations"); try { _correlationIdProvider.SetCorrelationId(message.GetCorrelationId()); await _jobHelperService.ProcessDeadLetteredMessage(message); _logger.Information("Proccessed generate allocations dead lettered message complete"); } catch (Exception exception) { _logger.Error(exception, $"An error occurred processing message on queue: {ServiceBusConstants.QueueNames.CalcEngineGenerateAllocationResultsPoisoned}"); throw; } }
public async Task ProcessDeadLetteredMessage_GivenMessageButNoJobId_LogsAnErrorAndDoesNotUpdadeJobLog() { // Arrange Message message = new Message(); IJobsApiClient jobsApiClient = CreateJobsApiClient(); ILogger logger = CreateLogger(); IJobHelperService service = CreateJobHelperService(jobsApiClient, logger); // Act await service.ProcessDeadLetteredMessage(message); // Assert logger .Received(1) .Error(Arg.Is("Missing job id from dead lettered message")); await jobsApiClient .DidNotReceive() .AddJobLog(Arg.Any <string>(), Arg.Any <JobLogUpdateModel>()); }