提交 c7a6604d 编写于 作者: Z zhyee 提交者: Liang Zhang

make datasource orchestration compatible between sharding-jdbc and sh… (#3182)

* make datasource orchestration compatible between sharding-jdbc and sharding-proxy

* use assertThat to instead of assertEquals

* delete equalTo

* delete useless import
上级 436c6f54
......@@ -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);
}
}
}
......@@ -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")));
}
}
......@@ -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());
......
......@@ -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<String, YamlDataSourceParameter> actual = DataSourceConverter.getDataSourceParameterMap(dataSourceConfigurationMap);
assertThat(actual.size(), is(2));
......@@ -69,11 +69,11 @@ public final class DataSourceConverterTest {
Map<String, Object> properties = actual.getProperties();
assertThat(properties.get("maxPoolSize"), CoreMatchers.<Object>is(50));
assertThat(properties.get("minPoolSize"), CoreMatchers.<Object>is(1));
assertThat(properties.get("connectionTimeoutMilliseconds"), CoreMatchers.<Object>is(30 * 1000L));
assertThat(properties.get("idleTimeoutMilliseconds"), CoreMatchers.<Object>is(60 * 1000L));
assertThat(properties.get("maxLifetimeMilliseconds"), CoreMatchers.<Object>is(0L));
assertThat(properties.get("connectionTimeout"), CoreMatchers.<Object>is(30 * 1000L));
assertThat(properties.get("idleTimeout"), CoreMatchers.<Object>is(60 * 1000L));
assertThat(properties.get("maxLifetime"), CoreMatchers.<Object>is(0L));
assertThat(properties.get("maintenanceIntervalMilliseconds"), CoreMatchers.<Object>is(30 * 1000L));
assertThat(properties.get("url"), CoreMatchers.<Object>is("jdbc:mysql://localhost:3306/demo_ds"));
assertThat(properties.get("jdbcUrl"), CoreMatchers.<Object>is("jdbc:mysql://localhost:3306/demo_ds"));
assertThat(properties.get("username"), CoreMatchers.<Object>is("root"));
assertThat(properties.get("password"), CoreMatchers.<Object>is("root"));
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册