use of eu.bcvsolutions.idm.core.model.service.impl.DefaultLongPollingManager in project CzechIdMng by bcvsolutions.
the class DefaultSysSystemServiceIntegrationTest method testExecuteDeferredResultOnCreateSyncItemLog.
@Test
public void testExecuteDeferredResultOnCreateSyncItemLog() {
DefaultLongPollingManager defaultPollingManager = (DefaultLongPollingManager) longPollingManager;
// Clear deferred result and subscribers
defaultPollingManager.getSuspendedRequests().clear();
defaultPollingManager.getRegistredSubscribers().clear();
// create test system and sync
SysSystemDto system = helper.createTestResourceSystem(true);
AbstractSysSyncConfigDto syncConfig = createSync(system);
DeferredResult<OperationResultDto> result = new DeferredResult<OperationResultDto>(1000000l, new OperationResultDto(OperationState.NOT_EXECUTED));
DeferredResultWrapper wrapper = new DeferredResultWrapper(system.getId(), system.getClass(), result);
wrapper.onCheckResultCallback(new CheckLongPollingResult() {
@Override
public void checkDeferredResult(DeferredResult<OperationResultDto> result, LongPollingSubscriber subscriber) {
systemController.checkDeferredRequest(result, subscriber);
}
});
Queue<DeferredResultWrapper> suspendedRequests = defaultPollingManager.getSuspendedRequests();
assertEquals(0, suspendedRequests.size());
longPollingManager.addSuspendedResult(wrapper);
suspendedRequests = defaultPollingManager.getSuspendedRequests();
assertEquals(1, suspendedRequests.size());
longPollingManager.checkDeferredRequests(SysSystemDto.class);
suspendedRequests = defaultPollingManager.getSuspendedRequests();
assertEquals(1, suspendedRequests.size());
helper.startSynchronization(syncConfig);
SysSyncConfigFilter logFilter = new SysSyncConfigFilter();
logFilter.setId(syncConfig.getId());
logFilter.setIncludeLastLog(Boolean.TRUE);
List<AbstractSysSyncConfigDto> configs = syncConfigService.find(logFilter, null).getContent();
Assert.assertEquals(1, configs.size());
SysSyncLogDto log = new SysSyncLogDto();
log.setSynchronizationConfig(syncConfig.getId());
log = syncLogService.save(log);
SysSyncActionLogDto mockAction = new SysSyncActionLogDto();
mockAction.setSyncAction(SynchronizationActionType.IGNORE);
mockAction.setSyncLog(log.getId());
mockAction.setOperationResult(OperationResultType.IGNORE);
mockAction = syncActionLogService.save(mockAction);
// Sync item log created -> must be detected
SysSyncItemLogDto mockItemLogDto = new SysSyncItemLogDto();
mockItemLogDto.setSyncActionLog(mockAction.getId());
mockItemLogDto.setIdentification(helper.createName());
mockItemLogDto = syncItemLogService.save(mockItemLogDto);
// Check must be called twice, because first detect the change and second remove
// ended deferred result (from some reason is not invoked method
// result.onCompleted)
longPollingManager.checkDeferredRequests(SysSystemDto.class);
longPollingManager.checkDeferredRequests(SysSystemDto.class);
suspendedRequests = defaultPollingManager.getSuspendedRequests();
assertEquals(0, suspendedRequests.size());
// Clear deferred result and subscribers
defaultPollingManager.getSuspendedRequests().clear();
defaultPollingManager.getRegistredSubscribers().clear();
}
Aggregations