Search in sources :

Example 16 with IdmScheduledTaskDto

use of eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto in project CzechIdMng by bcvsolutions.

the class AbstractSchedulableTaskExecutor method execute.

@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
    // run as system - called from scheduler internally
    securityService.setSystemAuthentication();
    // 
    // scheduled task is quartz reference to IdM entity
    IdmScheduledTaskDto taskDto = getScheduledTask(context);
    // 
    // add task to queue only - quartz will start take care of the rest
    createIdmLongRunningTask(context, taskDto);
}
Also used : IdmScheduledTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto)

Example 17 with IdmScheduledTaskDto

use of eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto in project CzechIdMng by bcvsolutions.

the class AbstractSchedulableTaskExecutor method getScheduledTask.

private IdmScheduledTaskDto getScheduledTask(JobExecutionContext context) {
    String taskName = context.getJobDetail().getKey().getName();
    IdmScheduledTaskDto dto = scheduledTaskService.findByQuartzTaskName(taskName);
    return dto == null ? createIdmScheduledTask(taskName) : dto;
}
Also used : IdmScheduledTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto)

Example 18 with IdmScheduledTaskDto

use of eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto in project CzechIdMng by bcvsolutions.

the class IdmLongRunningTaskItemControllerRestTest method deleteItem.

@Test
public void deleteItem() throws Exception {
    IdmScheduledTaskDto scheduledTaskDto = helper.createSchedulableTask();
    IdmProcessedTaskItemDto taskItem = service.saveInternal(helper.prepareProcessedItem(scheduledTaskDto));
    getMockMvc().perform(get(BaseController.BASE_PATH + PATH + "/" + taskItem.getId()).with(authentication(getAuthentication())).contentType(InitTestData.HAL_CONTENT_TYPE)).andExpect(status().isOk()).andExpect(MockMvcResultMatchers.content().contentType(InitTestData.HAL_CONTENT_TYPE)).andExpect(jsonPath("$.id", equalTo(taskItem.getId().toString())));
    int status = getMockMvc().perform(delete(BaseController.BASE_PATH + PATH + "/" + taskItem.getId()).contentType(MediaType.APPLICATION_JSON)).andReturn().getResponse().getStatus();
    assertEquals(403, status);
    getMockMvc().perform(get(BaseController.BASE_PATH + PATH + taskItem.getId()).with(authentication(getAuthentication())).contentType(InitTestData.HAL_CONTENT_TYPE)).andExpect(status().isNotFound());
}
Also used : IdmScheduledTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto) IdmProcessedTaskItemDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmProcessedTaskItemDto) AbstractRestTest(eu.bcvsolutions.idm.test.api.AbstractRestTest) Test(org.junit.Test)

Example 19 with IdmScheduledTaskDto

use of eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto in project CzechIdMng by bcvsolutions.

the class AbstractSchedulableStatefulExecutorIntegrationTest method testExecute.

/**
 * Tests the stateful execution method of the task by the following
 * scenario:
 *   1. find all identities to process
 *   2. process retrieved identities
 *   3. persist processing log
 *   4. save processed identities into processed queue
 *
 * Second execution run:
 *   1. find all identities to process - same as first run
 *   2. call process retrieved identities - all have been processed already
 *   3. check processing log - nothing new was processed, therefore must be empty
 *   4. check processed items queue did not change
 *
 * Third run:
 *   1. find all identities to process - returns empty list
 *   2. check processing log - nothing was processed
 *   3. check processed items queue - must be empty
 * @throws Exception
 */
@Test
public void testExecute() throws Exception {
    // manually prepare control entities - normally scheduler will take care of it itself
    IdmScheduledTaskDto scheduledTask = createIdmScheduledTask(UUID.randomUUID().toString());
    IdmLongRunningTaskDto longRunningTask = createIdmLongRunningTask(scheduledTask, TestIdenityIntegrationExecutor.class);
    executor.setLongRunningTaskId(longRunningTask.getId());
    // first run
    List<IdmIdentityDto> itemsToProcess = getTestIdentities();
    // set executor data
    executor.dtos = itemsToProcess;
    // 
    Boolean result = executor.process();
    Page<IdmProcessedTaskItemDto> queueItems = itemService.findQueueItems(scheduledTask, null);
    Page<IdmProcessedTaskItemDto> logItems = itemService.findLogItems(longRunningTask, null);
    // 
    assertTrue(result);
    assertEquals(longRunningTask.getScheduledTask(), scheduledTask.getId());
    assertEquals(itemsToProcess.size(), queueItems.getTotalElements());
    assertEquals(itemsToProcess.size(), logItems.getTotalElements());
    assertEquals(Long.valueOf(itemsToProcess.size()), executor.getCount());
    assertEquals(Long.valueOf(itemsToProcess.size()), executor.getCounter());
    SchedulerTestUtils.checkLogItems(longRunningTask, IdmIdentityDto.class, logItems);
    SchedulerTestUtils.checkQueueItems(scheduledTask, IdmIdentityDto.class, queueItems);
    // 
    // second run
    // 
    longRunningTask = createIdmLongRunningTask(scheduledTask, TestIdenityIntegrationExecutor.class);
    executor.setLongRunningTaskId(longRunningTask.getId());
    executor.dtos = itemsToProcess;
    // 
    result = executor.process();
    queueItems = itemService.findQueueItems(scheduledTask, null);
    logItems = itemService.findLogItems(longRunningTask, null);
    // 
    assertTrue(result);
    assertEquals(itemsToProcess.size(), queueItems.getTotalElements());
    assertEquals(0, logItems.getTotalElements());
    assertEquals(Long.valueOf(0), executor.getCount());
    assertEquals(Long.valueOf(0), executor.getCounter());
    SchedulerTestUtils.checkQueueItems(scheduledTask, IdmIdentityDto.class, queueItems);
    // 
    // third run
    // 
    longRunningTask = createIdmLongRunningTask(scheduledTask, TestIdenityIntegrationExecutor.class);
    executor.setLongRunningTaskId(longRunningTask.getId());
    // 
    result = executor.process();
    queueItems = itemService.findQueueItems(scheduledTask, null);
    logItems = itemService.findLogItems(longRunningTask, null);
    // 
    assertTrue(result);
    assertEquals(0, queueItems.getTotalElements());
    assertEquals(0, logItems.getTotalElements());
    assertEquals(Long.valueOf(0), executor.getCount());
    assertEquals(Long.valueOf(0), executor.getCounter());
}
Also used : IdmLongRunningTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmLongRunningTaskDto) IdmScheduledTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto) IdmProcessedTaskItemDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmProcessedTaskItemDto) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) AbstractIntegrationTest(eu.bcvsolutions.idm.test.api.AbstractIntegrationTest) Test(org.junit.Test)

Example 20 with IdmScheduledTaskDto

use of eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto in project CzechIdMng by bcvsolutions.

the class AbstractSchedulableStatefulExecutorUnitTest method testProcess.

@Test
public void testProcess() {
    IdmScheduledTaskDto scheduledTask = new IdmScheduledTaskDto();
    scheduledTask.setId(UUID.randomUUID());
    IdmLongRunningTaskDto lrt = new IdmLongRunningTaskDto();
    // 
    IdmIdentityDto dto1 = getTestIdentityDto();
    IdmIdentityDto dto2 = getTestIdentityDto();
    IdmIdentityDto dto3 = getTestIdentityDto();
    // stubs
    doReturn(Optional.of(new OperationResult.Builder(OperationState.EXECUTED).build())).when(executor).processItem(any(IdmIdentityDto.class));
    doReturn(false).when(executor).isInProcessedQueue(any(IdmIdentityDto.class));
    doNothing().when(itemService).deleteInternal(any(IdmProcessedTaskItemDto.class));
    doReturn(Lists.newArrayList(UUID.randomUUID(), UUID.randomUUID())).when(executor).getProcessedItemRefsFromQueue();
    doReturn(scheduledTask.getId()).when(executor).getScheduledTaskId();
    // matchers
    when(longRunningTaskService.get(any(UUID.class))).thenReturn(lrt);
    when(scheduledTaskService.get(any(UUID.class))).thenReturn(scheduledTask);
    when(executor.getItemsToProcess(any(Pageable.class))).thenReturn(new PageImpl<>(Lists.newArrayList(dto1, dto2), new PageRequest(0, 2), 6)).thenReturn(new PageImpl<>(Lists.newArrayList(dto3), new PageRequest(0, 2), 6)).thenReturn(new PageImpl<>(Lists.newArrayList()));
    when(itemService.saveInternal(any(IdmProcessedTaskItemDto.class))).then(AdditionalAnswers.returnsFirstArg());
    when(itemService.find(any(IdmProcessedTaskItemFilter.class), any(Pageable.class))).thenReturn(new PageImpl<>(Lists.newArrayList(new IdmProcessedTaskItemDto())));
    // 
    // 
    Boolean processingResult = executor.process();
    assertTrue(processingResult);
    // 
    // 
    verify(scheduledTaskService, times(3)).get(any(UUID.class));
    verify(longRunningTaskService, times(6)).get(any(UUID.class));
    // 
    verify(executor, times(3)).getItemsToProcess(any(Pageable.class));
    verify(executor, times(1)).isInProcessedQueue(dto1);
    verify(executor, times(1)).isInProcessedQueue(dto2);
    verify(executor, times(1)).isInProcessedQueue(dto3);
    verify(executor, times(1)).getProcessedItemRefsFromQueue();
    verify(executor, times(2)).removeFromProcessedQueue(any(UUID.class));
    verify(executor, times(3)).addToProcessedQueue(any(IdmIdentityDto.class), any(OperationResult.class));
    verify(executor, times(3)).logItemProcessed(any(IdmIdentityDto.class), any(OperationResult.class));
    // 6x addToProcessQueue, 2x removeItemFromQueue, 2x stubbed
    verify(executor, times(10)).getScheduledTaskId();
    verify(executor, times(3)).processItem(any(IdmIdentityDto.class));
    // 3x addToProcessQueue, 3x logItemProcessed
    verify(itemService, times(2)).deleteInternal(any(IdmProcessedTaskItemDto.class));
    verify(itemService, times(3)).createLogItem(any(AbstractDto.class), any(OperationResult.class), any(IdmLongRunningTaskDto.class));
    verify(itemService, times(3)).createQueueItem(any(AbstractDto.class), any(OperationResult.class), any(IdmScheduledTaskDto.class));
    // 2x from removeFromProcessedQueue, other invocations are stubbed
    verify(itemService, times(2)).find(any(IdmProcessedTaskItemFilter.class), any(Pageable.class));
}
Also used : PageImpl(org.springframework.data.domain.PageImpl) IdmLongRunningTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmLongRunningTaskDto) OperationResult(eu.bcvsolutions.idm.core.api.entity.OperationResult) PageRequest(org.springframework.data.domain.PageRequest) Pageable(org.springframework.data.domain.Pageable) IdmScheduledTaskDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto) AbstractDto(eu.bcvsolutions.idm.core.api.dto.AbstractDto) IdmProcessedTaskItemFilter(eu.bcvsolutions.idm.core.scheduler.api.dto.filter.IdmProcessedTaskItemFilter) IdmProcessedTaskItemDto(eu.bcvsolutions.idm.core.scheduler.api.dto.IdmProcessedTaskItemDto) IdmIdentityDto(eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto) UUID(java.util.UUID) AbstractVerifiableUnitTest(eu.bcvsolutions.idm.test.api.AbstractVerifiableUnitTest) Test(org.junit.Test)

Aggregations

IdmScheduledTaskDto (eu.bcvsolutions.idm.core.scheduler.api.dto.IdmScheduledTaskDto)34 IdmProcessedTaskItemDto (eu.bcvsolutions.idm.core.scheduler.api.dto.IdmProcessedTaskItemDto)23 Test (org.junit.Test)23 AbstractIntegrationTest (eu.bcvsolutions.idm.test.api.AbstractIntegrationTest)17 IdmLongRunningTaskDto (eu.bcvsolutions.idm.core.scheduler.api.dto.IdmLongRunningTaskDto)14 IdmIdentityDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityDto)11 IdmProcessedTaskItemFilter (eu.bcvsolutions.idm.core.scheduler.api.dto.filter.IdmProcessedTaskItemFilter)9 OperationResult (eu.bcvsolutions.idm.core.api.entity.OperationResult)5 IdmPasswordDto (eu.bcvsolutions.idm.core.api.dto.IdmPasswordDto)4 AbstractVerifiableUnitTest (eu.bcvsolutions.idm.test.api.AbstractVerifiableUnitTest)4 UUID (java.util.UUID)4 LocalDate (org.joda.time.LocalDate)4 Pageable (org.springframework.data.domain.Pageable)3 AbstractDto (eu.bcvsolutions.idm.core.api.dto.AbstractDto)2 IdmIdentityContractDto (eu.bcvsolutions.idm.core.api.dto.IdmIdentityContractDto)2 Task (eu.bcvsolutions.idm.core.scheduler.api.dto.Task)2 AbstractRestTest (eu.bcvsolutions.idm.test.api.AbstractRestTest)2 PageImpl (org.springframework.data.domain.PageImpl)2 PageRequest (org.springframework.data.domain.PageRequest)2 AbstractSysSyncConfigDto (eu.bcvsolutions.idm.acc.dto.AbstractSysSyncConfigDto)1