private boolean removeJdbcQueueFromCache(CacheConfig cacheConfig, String regionName) { String queueName = CreateMappingCommand.createAsyncEventQueueName(regionName); Iterator<AsyncEventQueue> iterator = cacheConfig.getAsyncEventQueues().iterator(); while (iterator.hasNext()) { AsyncEventQueue queue = iterator.next(); if (queueName.equals(queue.getId())) { iterator.remove(); return true; } } return false; }
private void checkForAsyncQueue(String regionName, boolean synchronous, CacheConfig cacheConfig) throws PreconditionException { if (!synchronous) { String queueName = createAsyncEventQueueName(regionName); AsyncEventQueue asyncEventQueue = cacheConfig.getAsyncEventQueues().stream() .filter(queue -> queue.getId().equals(queueName)).findFirst().orElse(null); if (asyncEventQueue != null) { throw new PreconditionException( "An async-event-queue named " + queueName + " must not already exist."); } } }
@Test public void updateClusterConfigWithOneMatchingRegionAndJdbcAsyncQueueRemovesTheQueue() { List<RegionConfig> list = new ArrayList<>(); List<CacheElement> listCacheElements = new ArrayList<>(); RegionMapping matchingMapping = mock(RegionMapping.class); listCacheElements.add(matchingMapping); when(matchingRegion.getCustomRegionElements()).thenReturn(listCacheElements); list.add(matchingRegion); when(cacheConfig.getRegions()).thenReturn(list); AsyncEventQueue queue = mock(AsyncEventQueue.class); String queueName = CreateMappingCommand.createAsyncEventQueueName(regionName); when(queue.getId()).thenReturn(queueName); List<AsyncEventQueue> queueList = new ArrayList<>(); queueList.add(queue); when(cacheConfig.getAsyncEventQueues()).thenReturn(queueList); boolean modified = destroyRegionMappingCommand.updateConfigForGroup(null, cacheConfig, regionName); assertThat(queueList).isEmpty(); assertThat(modified).isTrue(); }
asyncEventQueueFactory.create(config.getId(), (AsyncEventListener) listenerInstance);
@Override public boolean updateConfigForGroup(String group, CacheConfig config, Object configObject) { boolean aeqConfigsHaveBeenUpdated = false; List<CacheConfig.AsyncEventQueue> queues = config.getAsyncEventQueues(); if (queues.isEmpty()) { return false; } CacheConfig.AsyncEventQueue aeqConfiguration = ((CacheConfig.AsyncEventQueue) configObject); String aeqId = aeqConfiguration.getId(); for (CacheConfig.AsyncEventQueue queue : queues) { if (aeqId.equals(queue.getId())) { if (StringUtils.isNotBlank(aeqConfiguration.getBatchSize())) { queue.setBatchSize(aeqConfiguration.getBatchSize()); } if (StringUtils.isNotBlank(aeqConfiguration.getBatchTimeInterval())) { queue.setBatchTimeInterval(aeqConfiguration.getBatchTimeInterval()); } if (StringUtils.isNotBlank(aeqConfiguration.getMaximumQueueMemory())) { queue.setMaximumQueueMemory(aeqConfiguration.getMaximumQueueMemory()); } aeqConfigsHaveBeenUpdated = true; } } return aeqConfigsHaveBeenUpdated; }
@Test public void createsMappingReturnsStatusERRORWhenAsycnEventQueueAlreadyExists() { results.add(successFunctionResult); ConfigurationPersistenceService configurationPersistenceService = mock(ConfigurationPersistenceService.class); doReturn(configurationPersistenceService).when(createRegionMappingCommand) .getConfigurationPersistenceService(); when(configurationPersistenceService.getCacheConfig(null)).thenReturn(cacheConfig); List<RegionConfig> list = new ArrayList<>(); list.add(matchingRegion); when(cacheConfig.getRegions()).thenReturn(list); RegionAttributesType loaderAttribute = mock(RegionAttributesType.class); when(loaderAttribute.getCacheLoader()).thenReturn(null); when(matchingRegion.getRegionAttributes()).thenReturn(loaderAttribute); List<AsyncEventQueue> asyncEventQueues = new ArrayList<>(); AsyncEventQueue matchingQueue = mock(AsyncEventQueue.class); String queueName = createRegionMappingCommand.createAsyncEventQueueName(regionName); when(matchingQueue.getId()).thenReturn(queueName); asyncEventQueues.add(matchingQueue); when(cacheConfig.getAsyncEventQueues()).thenReturn(asyncEventQueues); ResultModel result = createRegionMappingCommand.createMapping(regionName, dataSourceName, tableName, pdxClass, false, null, null, null); assertThat(result.getStatus()).isSameAs(Result.Status.ERROR); assertThat(result.toString()) .contains("An async-event-queue named " + queueName + " must not already exist."); }
@Test public void createMappingWithSynchronousReturnsStatusOKWhenAsycnEventQueueAlreadyExists() { results.add(successFunctionResult); ConfigurationPersistenceService configurationPersistenceService = mock(ConfigurationPersistenceService.class); doReturn(configurationPersistenceService).when(createRegionMappingCommand) .getConfigurationPersistenceService(); when(configurationPersistenceService.getCacheConfig(null)).thenReturn(cacheConfig); List<RegionConfig> list = new ArrayList<>(); list.add(matchingRegion); when(cacheConfig.getRegions()).thenReturn(list); RegionAttributesType loaderAttribute = mock(RegionAttributesType.class); when(loaderAttribute.getCacheLoader()).thenReturn(null); when(matchingRegion.getRegionAttributes()).thenReturn(loaderAttribute); List<AsyncEventQueue> asyncEventQueues = new ArrayList<>(); AsyncEventQueue matchingQueue = mock(AsyncEventQueue.class); String queueName = createRegionMappingCommand.createAsyncEventQueueName(regionName); when(matchingQueue.getId()).thenReturn(queueName); asyncEventQueues.add(matchingQueue); when(cacheConfig.getAsyncEventQueues()).thenReturn(asyncEventQueues); ResultModel result = createRegionMappingCommand.createMapping(regionName, dataSourceName, tableName, pdxClass, true, null, null, null); assertThat(result.getStatus()).isSameAs(Result.Status.OK); }
@Test public void updateClusterConfigWithOneMatchingRegionCreatesAsyncEventQueue() { List<RegionConfig> list = new ArrayList<>(); List<CacheElement> listCacheElements = new ArrayList<>(); when(matchingRegion.getCustomRegionElements()).thenReturn(listCacheElements); list.add(matchingRegion); when(cacheConfig.getRegions()).thenReturn(list); List<CacheConfig.AsyncEventQueue> queueList = new ArrayList<>(); when(cacheConfig.getAsyncEventQueues()).thenReturn(queueList); createRegionMappingCommand.updateConfigForGroup(null, cacheConfig, arguments); assertThat(queueList.size()).isEqualTo(1); String queueName = CreateMappingCommand.createAsyncEventQueueName(regionName); AsyncEventQueue createdQueue = queueList.get(0); assertThat(createdQueue.getId()).isEqualTo(queueName); assertThat(createdQueue.isParallel()).isFalse(); assertThat(createdQueue.getAsyncEventListener().getClassName()) .isEqualTo(JdbcAsyncWriter.class.getName()); }