From c7a6604d632306ab88522b7c7a37c61a37de790b Mon Sep 17 00:00:00 2001 From: zhyee <30677017+yanyzy@users.noreply.github.com> Date: Tue, 8 Oct 2019 22:06:51 +0800 Subject: [PATCH] =?UTF-8?q?make=20datasource=20orchestration=20compatible?= =?UTF-8?q?=20between=20sharding-jdbc=20and=20sh=E2=80=A6=20(#3182)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * make datasource orchestration compatible between sharding-jdbc and sharding-proxy * use assertThat to instead of assertEquals * delete equalTo * delete useless import --- .../core/config/DataSourceConfiguration.java | 20 +++++++++++++++++++ .../config/DataSourceConfigurationTest.java | 19 ++++++++++++++++++ .../util/DataSourceConverter.java | 17 ++++++++++++---- .../util/DataSourceConverterTest.java | 10 +++++----- 4 files changed, 57 insertions(+), 9 deletions(-) diff --git a/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/config/DataSourceConfiguration.java b/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/config/DataSourceConfiguration.java index 3aa38b2861..c416ce6d0d 100644 --- a/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/config/DataSourceConfiguration.java +++ b/sharding-core/sharding-core-common/src/main/java/org/apache/shardingsphere/core/config/DataSourceConfiguration.java @@ -151,4 +151,24 @@ public final class DataSourceConfiguration { } return Objects.hashCode(dataSourceClassName, stringBuilder.toString()); } + + /** + * Add alias to share configuration with sharding-jdbc. + * + * @param alias alias for configuration + */ + public void addAlias(final String... alias) { + Object value = null; + for (String each : alias) { + if (null != properties.get(each)) { + value = properties.get(each); + } + } + if (null == value) { + return; + } + for (String each : alias) { + properties.put(each, value); + } + } } diff --git a/sharding-core/sharding-core-common/src/test/java/org/apache/shardingsphere/core/config/DataSourceConfigurationTest.java b/sharding-core/sharding-core-common/src/test/java/org/apache/shardingsphere/core/config/DataSourceConfigurationTest.java index 654c1ce449..f6a26e573a 100644 --- a/sharding-core/sharding-core-common/src/test/java/org/apache/shardingsphere/core/config/DataSourceConfigurationTest.java +++ b/sharding-core/sharding-core-common/src/test/java/org/apache/shardingsphere/core/config/DataSourceConfigurationTest.java @@ -64,4 +64,23 @@ public final class DataSourceConfigurationTest { assertThat(actual.getUsername(), is("root")); assertThat(actual.getPassword(), is("root")); } + + @Test + public void assertAddAlias() { + HikariDataSource actualDataSource = new HikariDataSource(); + actualDataSource.setDriverClassName("org.h2.Driver"); + actualDataSource.setJdbcUrl("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL"); + actualDataSource.setUsername("root"); + actualDataSource.setPassword("root"); + DataSourceConfiguration actual = DataSourceConfiguration.getDataSourceConfiguration(actualDataSource); + actual.addAlias("url", "jdbcUrl"); + actual.addAlias("user", "username"); + assertThat(actual.getDataSourceClassName(), is(HikariDataSource.class.getName())); + assertThat(actual.getProperties().get("driverClassName").toString(), is("org.h2.Driver")); + assertThat(actual.getProperties().get("jdbcUrl").toString(), is("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false;MODE=MySQL")); + assertThat(actual.getProperties().get("username").toString(), is("root")); + assertThat(actual.getProperties().get("password").toString(), is("root")); + assertThat(actual.getProperties().get("jdbcUrl"), is(actual.getProperties().get("url"))); + assertThat(actual.getProperties().get("username"), is(actual.getProperties().get("user"))); + } } diff --git a/sharding-proxy/sharding-proxy-common/src/main/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverter.java b/sharding-proxy/sharding-proxy-common/src/main/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverter.java index 4319c12a61..21756f5b2e 100644 --- a/sharding-proxy/sharding-proxy-common/src/main/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverter.java +++ b/sharding-proxy/sharding-proxy-common/src/main/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverter.java @@ -51,6 +51,7 @@ public final class DataSourceConverter { } private static YamlDataSourceParameter createDataSourceParameter(final DataSourceConfiguration dataSourceConfiguration) { + bindAlias(dataSourceConfiguration); YamlDataSourceParameter result = new YamlDataSourceParameter(); for (Field each : result.getClass().getDeclaredFields()) { try { @@ -63,6 +64,14 @@ public final class DataSourceConverter { } return result; } + + private static void bindAlias(final DataSourceConfiguration dataSourceConfiguration) { + dataSourceConfiguration.addAlias("url", "jdbcUrl"); + dataSourceConfiguration.addAlias("user", "username"); + dataSourceConfiguration.addAlias("connectionTimeout", "connectionTimeoutMilliseconds"); + dataSourceConfiguration.addAlias("maxLifetime", "maxLifetimeMilliseconds"); + dataSourceConfiguration.addAlias("idleTimeout", "idleTimeoutMilliseconds"); + } /** * Get data source configuration map. @@ -80,12 +89,12 @@ public final class DataSourceConverter { private static DataSourceConfiguration createDataSourceConfiguration(final YamlDataSourceParameter dataSourceParameter) { DataSourceConfiguration result = new DataSourceConfiguration(HikariDataSource.class.getName()); - result.getProperties().put("url", dataSourceParameter.getUrl()); + result.getProperties().put("jdbcUrl", dataSourceParameter.getUrl()); result.getProperties().put("username", dataSourceParameter.getUsername()); result.getProperties().put("password", dataSourceParameter.getPassword()); - result.getProperties().put("connectionTimeoutMilliseconds", dataSourceParameter.getConnectionTimeoutMilliseconds()); - result.getProperties().put("idleTimeoutMilliseconds", dataSourceParameter.getIdleTimeoutMilliseconds()); - result.getProperties().put("maxLifetimeMilliseconds", dataSourceParameter.getMaxLifetimeMilliseconds()); + result.getProperties().put("connectionTimeout", dataSourceParameter.getConnectionTimeoutMilliseconds()); + result.getProperties().put("idleTimeout", dataSourceParameter.getIdleTimeoutMilliseconds()); + result.getProperties().put("maxLifetime", dataSourceParameter.getMaxLifetimeMilliseconds()); result.getProperties().put("maxPoolSize", dataSourceParameter.getMaxPoolSize()); result.getProperties().put("minPoolSize", dataSourceParameter.getMinPoolSize()); result.getProperties().put("maintenanceIntervalMilliseconds", dataSourceParameter.getMaintenanceIntervalMilliseconds()); diff --git a/sharding-proxy/sharding-proxy-common/src/test/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverterTest.java b/sharding-proxy/sharding-proxy-common/src/test/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverterTest.java index 2469b6b1b1..68009ca157 100644 --- a/sharding-proxy/sharding-proxy-common/src/test/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverterTest.java +++ b/sharding-proxy/sharding-proxy-common/src/test/java/org/apache/shardingsphere/shardingproxy/util/DataSourceConverterTest.java @@ -38,7 +38,7 @@ public final class DataSourceConverterTest { dataSourceConfiguration0.getProperties().put("url", "jdbc:mysql://localhost:3306/demo_ds_0"); dataSourceConfigurationMap.put("ds_0", dataSourceConfiguration0); DataSourceConfiguration dataSourceConfiguration1 = new DataSourceConfiguration(HikariDataSource.class.getName()); - dataSourceConfiguration1.getProperties().put("url", "jdbc:mysql://localhost:3306/demo_ds_1"); + dataSourceConfiguration1.getProperties().put("jdbcUrl", "jdbc:mysql://localhost:3306/demo_ds_1"); dataSourceConfigurationMap.put("ds_1", dataSourceConfiguration1); Map actual = DataSourceConverter.getDataSourceParameterMap(dataSourceConfigurationMap); assertThat(actual.size(), is(2)); @@ -69,11 +69,11 @@ public final class DataSourceConverterTest { Map properties = actual.getProperties(); assertThat(properties.get("maxPoolSize"), CoreMatchers.is(50)); assertThat(properties.get("minPoolSize"), CoreMatchers.is(1)); - assertThat(properties.get("connectionTimeoutMilliseconds"), CoreMatchers.is(30 * 1000L)); - assertThat(properties.get("idleTimeoutMilliseconds"), CoreMatchers.is(60 * 1000L)); - assertThat(properties.get("maxLifetimeMilliseconds"), CoreMatchers.is(0L)); + assertThat(properties.get("connectionTimeout"), CoreMatchers.is(30 * 1000L)); + assertThat(properties.get("idleTimeout"), CoreMatchers.is(60 * 1000L)); + assertThat(properties.get("maxLifetime"), CoreMatchers.is(0L)); assertThat(properties.get("maintenanceIntervalMilliseconds"), CoreMatchers.is(30 * 1000L)); - assertThat(properties.get("url"), CoreMatchers.is("jdbc:mysql://localhost:3306/demo_ds")); + assertThat(properties.get("jdbcUrl"), CoreMatchers.is("jdbc:mysql://localhost:3306/demo_ds")); assertThat(properties.get("username"), CoreMatchers.is("root")); assertThat(properties.get("password"), CoreMatchers.is("root")); } -- GitLab