@Override public boolean updateConfigForGroup(String group, CacheConfig config, Object element) { config.getJndiBindings().add((JndiBindingsType.JndiBinding) element); return true; }
@Override public boolean updateConfigForGroup(String group, CacheConfig config, Object element) { config.getJndiBindings().add((JndiBindingsType.JndiBinding) element); return true; }
@Override public boolean updateConfigForGroup(String group, CacheConfig config, Object element) { CacheElement.removeElement(config.getJndiBindings(), (String) element); return true; } }
@Override public boolean updateConfigForGroup(String group, CacheConfig config, Object element) { CacheElement.removeElement(config.getJndiBindings(), (String) element); return true; }
@Test public void returnsErrorIfBindingAlreadyExistsAndIfUnspecified() { InternalConfigurationPersistenceService clusterConfigService = mock(InternalConfigurationPersistenceService.class); CacheConfig cacheConfig = mock(CacheConfig.class); when(cacheConfig.getJndiBindings()).thenReturn(bindings); bindings.add(binding); doReturn(clusterConfigService).when(command).getConfigurationPersistenceService(); doReturn(cacheConfig).when(clusterConfigService).getCacheConfig(any()); gfsh.executeAndAssertThat(command, COMMAND + " --type=SIMPLE --name=name --jdbc-driver-class=driver --connection-url=url") .statusIsError().containsOutput("already exists."); }
@Test public void returnsErrorIfDataSourceAlreadyExistsAndIfUnspecified() { InternalConfigurationPersistenceService clusterConfigService = mock(InternalConfigurationPersistenceService.class); CacheConfig cacheConfig = mock(CacheConfig.class); when(cacheConfig.getJndiBindings()).thenReturn(bindings); bindings.add(binding); doReturn(clusterConfigService).when(command).getConfigurationPersistenceService(); doReturn(cacheConfig).when(clusterConfigService).getCacheConfig(any()); gfsh.executeAndAssertThat(command, COMMAND + " --name=name --url=url") .statusIsError().containsOutput("already exists."); }
@Test public void skipsIfDataSourceAlreadyExistsAndIfSpecifiedTrue() { InternalConfigurationPersistenceService clusterConfigService = mock(InternalConfigurationPersistenceService.class); CacheConfig cacheConfig = mock(CacheConfig.class); when(cacheConfig.getJndiBindings()).thenReturn(bindings); bindings.add(binding); doReturn(clusterConfigService).when(command).getConfigurationPersistenceService(); doReturn(cacheConfig).when(clusterConfigService).getCacheConfig(any()); gfsh.executeAndAssertThat(command, COMMAND + " --name=name --url=url --if-not-exists=true") .statusIsSuccess().containsOutput("Skipping"); }
@Test public void skipsIfBindingAlreadyExistsAndIfSpecifiedTrue() { InternalConfigurationPersistenceService clusterConfigService = mock(InternalConfigurationPersistenceService.class); CacheConfig cacheConfig = mock(CacheConfig.class); when(cacheConfig.getJndiBindings()).thenReturn(bindings); bindings.add(binding); doReturn(clusterConfigService).when(command).getConfigurationPersistenceService(); doReturn(cacheConfig).when(clusterConfigService).getCacheConfig(any()); gfsh.executeAndAssertThat(command, COMMAND + " --type=SIMPLE --name=name --jdbc-driver-class=driver --connection-url=url --if-not-exists=true") .statusIsSuccess().containsOutput("Skipping"); }
@Test public void returnsErrorIfBindingAlreadyExistsAndIfSpecifiedFalse() { InternalConfigurationPersistenceService clusterConfigService = mock(InternalConfigurationPersistenceService.class); CacheConfig cacheConfig = mock(CacheConfig.class); when(cacheConfig.getJndiBindings()).thenReturn(bindings); bindings.add(binding); doReturn(clusterConfigService).when(command).getConfigurationPersistenceService(); doReturn(cacheConfig).when(clusterConfigService).getCacheConfig(any()); gfsh.executeAndAssertThat(command, COMMAND + " --type=SIMPLE --name=name --jdbc-driver-class=driver --connection-url=url --if-not-exists=false") .statusIsError().containsOutput("already exists."); }
@Test public void skipsIfDataSourceAlreadyExistsAndIfSpecified() { InternalConfigurationPersistenceService clusterConfigService = mock(InternalConfigurationPersistenceService.class); CacheConfig cacheConfig = mock(CacheConfig.class); doReturn(clusterConfigService).when(command).getConfigurationPersistenceService(); doReturn(cacheConfig).when(clusterConfigService).getCacheConfig(any()); when(cacheConfig.getJndiBindings()).thenReturn(bindings); bindings.add(binding); gfsh.executeAndAssertThat(command, COMMAND + " --name=name --url=url --if-not-exists") .statusIsSuccess().containsOutput("Skipping"); }
@Test public void returnsErrorIfDataSourceAlreadyExistsAndIfSpecifiedFalse() { InternalConfigurationPersistenceService clusterConfigService = mock(InternalConfigurationPersistenceService.class); CacheConfig cacheConfig = mock(CacheConfig.class); when(cacheConfig.getJndiBindings()).thenReturn(bindings); bindings.add(binding); doReturn(clusterConfigService).when(command).getConfigurationPersistenceService(); doReturn(cacheConfig).when(clusterConfigService).getCacheConfig(any()); gfsh.executeAndAssertThat(command, COMMAND + " --name=name --url=url --if-not-exists=false") .statusIsError().containsOutput("already exists."); }
@Test public void skipsIfBindingAlreadyExistsAndIfSpecified() { InternalConfigurationPersistenceService clusterConfigService = mock(InternalConfigurationPersistenceService.class); CacheConfig cacheConfig = mock(CacheConfig.class); doReturn(clusterConfigService).when(command).getConfigurationPersistenceService(); doReturn(cacheConfig).when(clusterConfigService).getCacheConfig(any()); when(cacheConfig.getJndiBindings()).thenReturn(bindings); bindings.add(binding); gfsh.executeAndAssertThat(command, COMMAND + " --type=SIMPLE --name=name --jdbc-driver-class=driver --connection-url=url --if-not-exists") .statusIsSuccess().containsOutput("Skipping"); }
@Test public void hasServiceNoBindingNoMember() { doReturn(ccService).when(command).getConfigurationPersistenceService(); when(cacheConfig.getJndiBindings()).thenReturn(Collections.emptyList()); doReturn(Collections.emptySet()).when(command).findMembers(null, null); gfsh.executeAndAssertThat(command, "list jndi-binding").statusIsSuccess() .containsOutput("No JNDI-bindings found in cluster configuration") .containsOutput("No members found"); } }
@Test public void whenNoMembersFoundAndClusterConfigRunningThenUpdateClusterConfig() { List<JndiBindingsType.JndiBinding> bindings = new ArrayList<>(); JndiBindingsType.JndiBinding jndiBinding = new JndiBindingsType.JndiBinding(); jndiBinding.setJndiName("name"); bindings.add(jndiBinding); doReturn(bindings).when(cacheConfig).getJndiBindings(); gfsh.executeAndAssertThat(command, COMMAND + " --name=name").statusIsSuccess() .containsOutput("No members found.") .containsOutput("Changes to configuration for group 'cluster' are persisted."); verify(ccService).updateCacheConfig(any(), any()); verify(command).updateConfigForGroup(eq("cluster"), eq(cacheConfig), any()); }
@Before public void setUp() throws Exception { binding = new JndiBindingsType.JndiBinding(); binding.setJndiName("jndi-name"); binding.setType("SIMPLE"); binding.setJdbcDriverClass("org.postgresql.Driver"); binding.setConnectionUrl("jdbc:postgresql://localhost:5432/my_db"); binding.setUserName("MyUser"); bindings = new ArrayList<>(); command = spy(DescribeJndiBindingCommand.class); ccService = mock(InternalConfigurationPersistenceService.class); cacheConfig = mock(CacheConfig.class); doReturn(ccService).when(command).getConfigurationPersistenceService(); when(ccService.getCacheConfig("cluster")).thenReturn(cacheConfig); when(cacheConfig.getJndiBindings()).thenReturn(bindings); }
@Test public void whenNoMembersFoundAndClusterConfigRunningWithPooledTypeThenUpdateClusterConfig() { List<JndiBindingsType.JndiBinding> bindings = new ArrayList<>(); JndiBindingsType.JndiBinding jndiBinding = new JndiBindingsType.JndiBinding(); jndiBinding.setJndiName("name"); jndiBinding.setType(CreateJndiBindingCommand.DATASOURCE_TYPE.POOLED.getType()); bindings.add(jndiBinding); doReturn(bindings).when(cacheConfig).getJndiBindings(); gfsh.executeAndAssertThat(command, COMMAND + " --name=name").statusIsSuccess() .containsOutput("No members found, data source removed from cluster configuration.") .containsOutput("Changes to configuration for group 'cluster' are persisted."); verify(ccService).updateCacheConfig(any(), any()); verify(command).updateConfigForGroup(eq("cluster"), eq(cacheConfig), isNotNull()); }
@Test public void whenNoMembersFoundAndClusterConfigRunningThenUpdateClusterConfig() { List<JndiBindingsType.JndiBinding> bindings = new ArrayList<>(); JndiBindingsType.JndiBinding jndiBinding = new JndiBindingsType.JndiBinding(); jndiBinding.setJndiName("name"); jndiBinding.setType(CreateJndiBindingCommand.DATASOURCE_TYPE.SIMPLE.getType()); bindings.add(jndiBinding); doReturn(bindings).when(cacheConfig).getJndiBindings(); gfsh.executeAndAssertThat(command, COMMAND + " --name=name").statusIsSuccess() .containsOutput("No members found, data source removed from cluster configuration.") .containsOutput("Changes to configuration for group 'cluster' are persisted."); verify(ccService).updateCacheConfig(any(), any()); verify(command).updateConfigForGroup(eq("cluster"), eq(cacheConfig), isNotNull()); }
@Test public void whenClusterConfigRunningAndJndiBindingFoundThenError() { List<JndiBindingsType.JndiBinding> bindings = new ArrayList<>(); JndiBindingsType.JndiBinding jndiBinding = new JndiBindingsType.JndiBinding(); jndiBinding.setJndiName("name"); jndiBinding.setType(CreateJndiBindingCommand.DATASOURCE_TYPE.MANAGED.getType()); bindings.add(jndiBinding); doReturn(bindings).when(cacheConfig).getJndiBindings(); gfsh.executeAndAssertThat(command, COMMAND + " --name=name").statusIsError() .containsOutput( "Data source named \\\"name\\\" does not exist. A jndi-binding was found with that name."); }
@Test public void whenNoMembersFoundAndClusterConfigRunningAndRegionUsingOtherDataSourceThenUpdateClusterConfig() { List<JndiBindingsType.JndiBinding> bindings = new ArrayList<>(); JndiBindingsType.JndiBinding jndiBinding = new JndiBindingsType.JndiBinding(); jndiBinding.setJndiName("name"); jndiBinding.setType(CreateJndiBindingCommand.DATASOURCE_TYPE.SIMPLE.getType()); bindings.add(jndiBinding); doReturn(bindings).when(cacheConfig).getJndiBindings(); setupRegionConfigToUseDataSource("otherDataSource"); gfsh.executeAndAssertThat(command, COMMAND + " --name=name").statusIsSuccess() .containsOutput("No members found, data source removed from cluster configuration.") .containsOutput("Changes to configuration for group 'cluster' are persisted."); verify(ccService).updateCacheConfig(any(), any()); verify(command).updateConfigForGroup(eq("cluster"), eq(cacheConfig), isNotNull()); }
@Test public void whenClusterConfigRunningAndDataSourceInUseByRegionThenError() { String DATA_SOURCE_NAME = "myDataSourceName"; List<JndiBindingsType.JndiBinding> bindings = new ArrayList<>(); JndiBindingsType.JndiBinding jndiBinding = new JndiBindingsType.JndiBinding(); jndiBinding.setJndiName(DATA_SOURCE_NAME); jndiBinding.setType(CreateJndiBindingCommand.DATASOURCE_TYPE.SIMPLE.getType()); bindings.add(jndiBinding); doReturn(bindings).when(cacheConfig).getJndiBindings(); setupRegionConfigToUseDataSource(DATA_SOURCE_NAME); gfsh.executeAndAssertThat(command, COMMAND + " --name=" + DATA_SOURCE_NAME).statusIsError() .containsOutput("Data source named \\\"" + DATA_SOURCE_NAME + "\\\" is still being used by region \\\"regionUsingDataSource\\\"." + " Use destroy jdbc-mapping --region=regionUsingDataSource and then try again."); }