Search in sources :

Example 21 with Job

use of gov.cms.ab2d.common.model.Job in project ab2d by CMSgov.

the class ContractProcessorUnitTest method whenExpectedPatientsNotMatchActualPatientsFail.

@Test
@DisplayName("When a job is cancelled while it is being processed, then attempt to stop the job gracefully without completing it")
void whenExpectedPatientsNotMatchActualPatientsFail() {
    when(coverageDriver.pageCoverage(any(CoveragePagingRequest.class))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 1), null));
    when(coverageDriver.numberOfBeneficiariesToProcess(any(Job.class), any(ContractDTO.class))).thenReturn(3);
    ContractProcessingException exception = assertThrows(ContractProcessingException.class, () -> cut.process(job));
    assertTrue(exception.getMessage().contains("from database but retrieved"));
}
Also used : CoveragePagingRequest(gov.cms.ab2d.coverage.model.CoveragePagingRequest) CoveragePagingResult(gov.cms.ab2d.coverage.model.CoveragePagingResult) ContractDTO(gov.cms.ab2d.common.dto.ContractDTO) Job(gov.cms.ab2d.common.model.Job) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 22 with Job

use of gov.cms.ab2d.common.model.Job in project ab2d by CMSgov.

the class ContractProcessorUnitTest method whenManyPatientIdsAreProcessed_shouldUpdatePercentageCompletedMultipleTimes.

@Test
@DisplayName("When many patientId are present, 'PercentageCompleted' should be updated many times")
void whenManyPatientIdsAreProcessed_shouldUpdatePercentageCompletedMultipleTimes() {
    when(coverageDriver.numberOfBeneficiariesToProcess(any(Job.class), any(ContractDTO.class))).thenReturn(18);
    when(coverageDriver.pageCoverage(any(CoveragePagingRequest.class))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), new CoveragePagingRequest(2, null, contractForCoverageDTO, OffsetDateTime.now()))).thenReturn(new CoveragePagingResult(createPatientsByContractResponse(contractForCoverageDTO, 2), null));
    jobChannelService.sendUpdate(jobUuid, JobMeasure.PATIENTS_EXPECTED, 18);
    jobChannelService.sendUpdate(jobUuid, JobMeasure.FAILURE_THRESHHOLD, 10);
    var jobOutputs = cut.process(job);
    assertEquals(6, jobRepository.getUpdatePercentageCompletedCount());
    verify(patientClaimsProcessor, atLeast(1)).process(any());
}
Also used : CoveragePagingRequest(gov.cms.ab2d.coverage.model.CoveragePagingRequest) CoveragePagingResult(gov.cms.ab2d.coverage.model.CoveragePagingResult) ContractDTO(gov.cms.ab2d.common.dto.ContractDTO) Job(gov.cms.ab2d.common.model.Job) Test(org.junit.jupiter.api.Test) DisplayName(org.junit.jupiter.api.DisplayName)

Example 23 with Job

use of gov.cms.ab2d.common.model.Job in project ab2d by CMSgov.

the class JobPreProcessorIntegrationTest method whenJobIsInSubmittedStatus_ThenJobShouldBePutInProgress.

@Test
@DisplayName("When a job is in submitted status, it can be put into progress upon starting processing")
void whenJobIsInSubmittedStatus_ThenJobShouldBePutInProgress() throws InterruptedException {
    when(coverageDriver.isCoverageAvailable(any(Job.class), any(ContractDTO.class))).thenReturn(true);
    var processedJob = cut.preprocess(job.getJobUuid());
    assertEquals(JobStatus.IN_PROGRESS, processedJob.getStatus());
    List<LoggableEvent> jobStatusChange = loggerEventRepository.load(JobStatusChangeEvent.class);
    assertEquals(1, jobStatusChange.size());
    JobStatusChangeEvent event = (JobStatusChangeEvent) jobStatusChange.get(0);
    assertEquals("SUBMITTED", event.getOldStatus());
    assertEquals("IN_PROGRESS", event.getNewStatus());
    assertTrue(UtilMethods.allEmpty(loggerEventRepository.load(ApiRequestEvent.class), loggerEventRepository.load(ApiResponseEvent.class), loggerEventRepository.load(ReloadEvent.class), loggerEventRepository.load(ContractSearchEvent.class), loggerEventRepository.load(ErrorEvent.class), loggerEventRepository.load(FileEvent.class)));
    loggerEventRepository.delete();
}
Also used : LoggableEvent(gov.cms.ab2d.eventlogger.LoggableEvent) ContractDTO(gov.cms.ab2d.common.dto.ContractDTO) JobStatusChangeEvent(gov.cms.ab2d.eventlogger.events.JobStatusChangeEvent) Job(gov.cms.ab2d.common.model.Job) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) DisplayName(org.junit.jupiter.api.DisplayName)

Example 24 with Job

use of gov.cms.ab2d.common.model.Job in project ab2d by CMSgov.

the class JobPreProcessorIntegrationTest method createJob.

private Job createJob(PdpClient pdpClient, String contractNumber) {
    Job job = new Job();
    job.setJobUuid("S0000");
    job.setStatus(JobStatus.SUBMITTED);
    job.setStatusMessage("0%");
    job.setOrganization(pdpClient.getOrganization());
    job.setOutputFormat(NDJSON_FIRE_CONTENT_TYPE);
    job.setCreatedAt(OffsetDateTime.now());
    job.setFhirVersion(STU3);
    job.setContractNumber(contractNumber);
    job = jobRepository.save(job);
    dataSetup.queueForCleanup(job);
    return job;
}
Also used : Job(gov.cms.ab2d.common.model.Job)

Example 25 with Job

use of gov.cms.ab2d.common.model.Job in project ab2d by CMSgov.

the class JobPreProcessorIntegrationTest method testDefaultSinceAB2DRun.

@Test
@DisplayName("We're R4, there has been a successful job run but it was run by the developers so don't set default since")
void testDefaultSinceAB2DRun() {
    Job oldJob = new Job();
    oldJob.setJobUuid("AA-BB");
    oldJob.setStatus(JobStatus.SUCCESSFUL);
    oldJob.setStatusMessage("100%");
    oldJob.setOrganization(pdpClient.getOrganization());
    oldJob.setStartedBy(DEVELOPER);
    oldJob.setOutputFormat(NDJSON_FIRE_CONTENT_TYPE);
    OffsetDateTime oldJobTime = OffsetDateTime.parse("2021-01-01T00:00:00.000-05:00", DateTimeFormatter.ISO_DATE_TIME);
    oldJob.setCreatedAt(oldJobTime);
    oldJob.setFhirVersion(STU3);
    oldJob.setContractNumber(contract.getContractNumber());
    oldJob = jobRepository.save(oldJob);
    Job newJob = new Job();
    newJob.setJobUuid("YY-ZZ");
    newJob.setStatus(JobStatus.SUBMITTED);
    newJob.setStatusMessage("0%");
    newJob.setOrganization(pdpClient.getOrganization());
    newJob.setOutputFormat(NDJSON_FIRE_CONTENT_TYPE);
    newJob.setCreatedAt(OffsetDateTime.now());
    newJob.setFhirVersion(R4);
    newJob.setContractNumber(contract.getContractNumber());
    newJob = jobRepository.save(newJob);
    Job processedJob = cut.preprocess(newJob.getJobUuid());
    assertNull(processedJob.getSince());
    assertEquals(FIRST_RUN, processedJob.getSinceSource());
    dataSetup.queueForCleanup(oldJob);
    dataSetup.queueForCleanup(newJob);
}
Also used : OffsetDateTime(java.time.OffsetDateTime) Job(gov.cms.ab2d.common.model.Job) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest) DisplayName(org.junit.jupiter.api.DisplayName)

Aggregations

Job (gov.cms.ab2d.common.model.Job)67 Test (org.junit.jupiter.api.Test)39 DisplayName (org.junit.jupiter.api.DisplayName)31 ContractDTO (gov.cms.ab2d.common.dto.ContractDTO)21 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)18 OffsetDateTime (java.time.OffsetDateTime)15 JobOutput (gov.cms.ab2d.common.model.JobOutput)9 CoveragePagingRequest (gov.cms.ab2d.coverage.model.CoveragePagingRequest)9 CoveragePagingResult (gov.cms.ab2d.coverage.model.CoveragePagingResult)9 CoveragePeriod (gov.cms.ab2d.coverage.model.CoveragePeriod)8 ContractForCoverageDTO (gov.cms.ab2d.coverage.model.ContractForCoverageDTO)6 Map (java.util.Map)5 Contract (gov.cms.ab2d.common.model.Contract)4 PdpClient (gov.cms.ab2d.common.model.PdpClient)4 ZonedDateTime (java.time.ZonedDateTime)4 Transactional (org.springframework.transaction.annotation.Transactional)4 ContractToContractCoverageMapping (gov.cms.ab2d.worker.config.ContractToContractCoverageMapping)3 List (java.util.List)3 Trace (com.newrelic.api.agent.Trace)2 PdpClientService (gov.cms.ab2d.common.service.PdpClientService)2