assertThat(jndiConfig.getJndiName()).isEqualTo("name"); assertThat(jndiConfig.getConfigProperties().get(0).getName()).isEqualTo("name1"); assertThat(targetMembers.getValue()).isEqualTo(members);
@Test public void whenMembersFoundAndClusterConfigRunningThenUpdateClusterConfigAndInvokeFunction() { List<JndiBindingsType.JndiBinding> bindings = new ArrayList<>(); JndiBindingsType.JndiBinding jndiBinding = new JndiBindingsType.JndiBinding(); jndiBinding.setJndiName("name"); bindings.add(jndiBinding); doReturn(bindings).when(cacheConfig).getJndiBindings();
@Before public void setUp() { command = spy(ListDataSourceCommand.class); binding = new JndiBindingsType.JndiBinding(); binding.setJndiName(DATA_SOURCE_NAME); binding.setType(DATASOURCE_TYPE.POOLED.getType()); binding.setConnectionUrl("myURL"); bindings = new ArrayList<>(); clusterConfigService = mock(InternalConfigurationPersistenceService.class); cacheConfig = mock(CacheConfig.class); when(cacheConfig.getJndiBindings()).thenReturn(bindings); bindings.add(binding); regionConfigs = new ArrayList<>(); when(cacheConfig.getRegions()).thenReturn(regionConfigs); doReturn(clusterConfigService).when(command).getConfigurationPersistenceService(); doReturn(cacheConfig).when(clusterConfigService).getCacheConfig(any()); }
help = POOL_PROPERTIES_HELP) PoolProperty[] poolProperties) { JndiBindingsType.JndiBinding configuration = new JndiBindingsType.JndiBinding(); configuration.setConnPooledDatasourceClass(pooledDataSourceFactoryClass); configuration.setConnectionUrl(url); configuration.setJndiName(name); configuration.setPassword(password); if (pooled) { configuration.setType(DATASOURCE_TYPE.POOLED.getType()); } else { configuration.setType(DATASOURCE_TYPE.SIMPLE.getType()); configuration.setUserName(username); if (poolProperties != null && poolProperties.length > 0) { List<ConfigProperty> configProperties = configuration.getConfigProperties(); for (PoolProperty dataSourceProperty : poolProperties) { String propName = dataSourceProperty.getName();
help = DATASOURCE_CONFIG_PROPERTIES_HELP) JndiBindingsType.JndiBinding.ConfigProperty[] dsConfigProperties) { JndiBindingsType.JndiBinding configuration = new JndiBindingsType.JndiBinding(); configuration.setBlockingTimeoutSeconds(Objects.toString(blockingTimeout, null)); configuration.setConnPooledDatasourceClass(connectionPooledDatasource); configuration.setConnectionUrl(connectionUrl); configuration.setIdleTimeoutSeconds(Objects.toString(idleTimeout, null)); configuration.setInitPoolSize(Objects.toString(initPoolSize, null)); configuration.setJdbcDriverClass(jdbcDriver); configuration.setJndiName(jndiName); configuration.setLoginTimeoutSeconds(Objects.toString(loginTimeout, null)); configuration.setManagedConnFactoryClass(managedConnFactory); configuration.setMaxPoolSize(Objects.toString(maxPoolSize, null)); configuration.setPassword(password); configuration.setTransactionType(transactionType); configuration.setType(type.getType()); configuration.setUserName(username); configuration.setXaDatasourceClass(xaDataSource); if (dsConfigProperties != null && dsConfigProperties.length > 0) configuration.getConfigProperties().addAll(Arrays.asList(dsConfigProperties));
.filter(b -> b.getJndiName().equals(dataSourceName)).findFirst().orElse(null); if (binding == null) { return ResultModel.createError(String.format("Data source: %s not found", dataSourceName)); String type = binding.getType(); if (DATASOURCE_TYPE.SIMPLE.getType().equals(type)) { pooled = false; addTableRow(tabularData, CreateDataSourceCommand.NAME, binding.getJndiName()); addTableRow(tabularData, CreateDataSourceCommand.URL, binding.getConnectionUrl()); addTableRow(tabularData, CreateDataSourceCommand.USERNAME, binding.getUserName()); addTableRow(tabularData, CreateDataSourceCommand.POOLED, Boolean.toString(pooled)); if (pooled) { addTableRow(tabularData, CreateDataSourceCommand.POOLED_DATA_SOURCE_FACTORY_CLASS, binding.getConnPooledDatasourceClass()); for (JndiBindingsType.JndiBinding.ConfigProperty confProp : binding.getConfigProperties()) { addTableRow(tabularData, confProp.getName(), confProp.getValue());
if (jndiBindings.stream().noneMatch(b -> b.getJndiName().equals(bindingName) || b.getJndiName().equals("java:" + bindingName))) { return ResultModel.createError(String.format("JNDI binding : %s not found", bindingName)); if (binding.getJndiName().equals(bindingName) || binding.getJndiName().equals("java:" + bindingName)) { addTableRow(tabularData, "type", binding.getType()); addTableRow(tabularData, "jndi-name", binding.getJndiName()); addTableRow(tabularData, "jdbc-driver-class", binding.getJdbcDriverClass()); addTableRow(tabularData, "user-name", binding.getUserName()); addTableRow(tabularData, "connection-url", binding.getConnectionUrl()); if (!"SimpleDataSource".equals(binding.getType())) { if ("ManagedDataSource".equals(binding.getType())) { addTableRow(tabularData, "managed-conn-factory-class", binding.getManagedConnFactoryClass()); } else if ("PooledDataSource".equals(binding.getType())) { addTableRow(tabularData, "conn-pooled-datasource-class", binding.getConnPooledDatasourceClass()); } else if ("XAPooledDataSource".equals(binding.getType())) { addTableRow(tabularData, "xa-datasource-class", binding.getXaDatasourceClass()); addTableRow(tabularData, "init-pool-size", binding.getInitPoolSize()); addTableRow(tabularData, "max-pool-size", binding.getMaxPoolSize()); addTableRow(tabularData, "idle-timeout-seconds", binding.getIdleTimeoutSeconds()); addTableRow(tabularData, "blocking-timeout-seconds", binding.getBlockingTimeoutSeconds()); addTableRow(tabularData, "login-timeout-seconds", binding.getLoginTimeoutSeconds());
for (JndiBindingsType.JndiBinding jndiBinding : jndiBindings) { configTable.accumulate("Group Name", "cluster"); configTable.accumulate("JNDI Name", jndiBinding.getJndiName()); configTable.accumulate("JDBC Driver Class", jndiBinding.getJdbcDriverClass());
assertThat(jndiConfig.getJndiName()).isEqualTo("name"); assertThat(jndiConfig.getConfigProperties().get(0).getName()).isEqualTo("name1"); assertThat(targetMembers.getValue()).isEqualTo(members);
@Test public void whenMembersFoundAndClusterConfigRunningThenUpdateClusterConfigAndInvokeFunction() { 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();
boolean creatingDataSource = (Boolean) actualArguments[1]; assertThat(creatingDataSource).isTrue(); assertThat(jndiConfig.getJndiName()).isEqualTo("name"); assertThat(jndiConfig.getConfigProperties().get(0).getName()).isEqualTo("name1"); assertThat(targetMembers.getValue()).isEqualTo(members);
assertThat(jndiConfig.getJndiName()).isEqualTo("name"); assertThat(jndiConfig.getConfigProperties().get(0).getName()).isEqualTo("name1"); assertThat(targetMembers.getValue()).isEqualTo(members);
convert(configuration.getConfigProperties())); } catch (DataSourceCreateException ex) { if (logger.isErrorEnabled()) { String.format("Created %s \"%s\" on \"%s\".", TYPE_NAME, configuration.getJndiName(), context.getMemberName()));
static Map getParamsAsMap(JndiBindingsType.JndiBinding binding) { Map params = new HashMap(); params.put("blocking-timeout-seconds", binding.getBlockingTimeoutSeconds()); params.put("conn-pooled-datasource-class", binding.getConnPooledDatasourceClass()); params.put("connection-url", binding.getConnectionUrl()); params.put("idle-timeout-seconds", binding.getIdleTimeoutSeconds()); params.put("init-pool-size", binding.getInitPoolSize()); params.put("jdbc-driver-class", binding.getJdbcDriverClass()); params.put("jndi-name", binding.getJndiName()); params.put("login-timeout-seconds", binding.getLoginTimeoutSeconds()); params.put("managed-conn-factory-class", binding.getManagedConnFactoryClass()); params.put("max-pool-size", binding.getMaxPoolSize()); params.put("password", binding.getPassword()); params.put("transaction-type", binding.getTransactionType()); params.put("type", binding.getType()); params.put("user-name", binding.getUserName()); params.put("xa-datasource-class", binding.getXaDatasourceClass()); return params; }
private void addDataSourceToResult(JndiBindingsType.JndiBinding binding, CacheConfig cacheConfig, TabularResultModel tabularData) { boolean pooled; String type = binding.getType(); if (DATASOURCE_TYPE.SIMPLE.getType().equals(type)) { pooled = false; } else if (DATASOURCE_TYPE.POOLED.getType().equals(type)) { pooled = true; } else { // skip this binding since it was not created as a data-source return; } String dataSourceName = binding.getJndiName(); tabularData.addRow(dataSourceName, Boolean.toString(pooled), Boolean.toString(isDataSourceUsedByRegion(cacheConfig, dataSourceName)), binding.getConnectionUrl()); }
@Test public void jndiBindings() { service.updateCacheConfig("cluster", cacheConfig -> { JndiBindingsType.JndiBinding jndiBinding = new JndiBindingsType.JndiBinding(); jndiBinding.setJndiName("jndiOne"); jndiBinding.setJdbcDriverClass("com.sun.ABC"); jndiBinding.setType("SimpleDataSource"); jndiBinding.getConfigProperties() .add(new JndiBindingsType.JndiBinding.ConfigProperty("test", "test", "test")); cacheConfig.getJndiBindings().add(jndiBinding); return cacheConfig; }); assertThat(configuration.getCacheXmlContent()).containsOnlyOnce("</jndi-bindings>"); assertThat(configuration.getCacheXmlContent()).contains( "<jndi-binding jdbc-driver-class=\"com.sun.ABC\" jndi-name=\"jndiOne\" type=\"SimpleDataSource\">"); assertThat(configuration.getCacheXmlContent()) .contains("config-property-name>test</config-property-name>"); }
@Before public void setUp() { command = spy(DescribeDataSourceCommand.class); binding = new JndiBindingsType.JndiBinding(); binding.setJndiName(DATA_SOURCE_NAME); binding.setType(DATASOURCE_TYPE.POOLED.getType()); bindings = new ArrayList<>(); clusterConfigService = mock(InternalConfigurationPersistenceService.class); cacheConfig = mock(CacheConfig.class); when(cacheConfig.getJndiBindings()).thenReturn(bindings); bindings.add(binding); regionConfigs = new ArrayList<>(); when(cacheConfig.getRegions()).thenReturn(regionConfigs); doReturn(clusterConfigService).when(command).getConfigurationPersistenceService(); doReturn(cacheConfig).when(clusterConfigService).getCacheConfig(any()); }
@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."); }
@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); }