This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new b0d5eaf5280 Fix DatabaseTypeEngine judge error in getProtocolType
(#18919)
b0d5eaf5280 is described below
commit b0d5eaf52804542aff279194ce2b3082ac72747e
Author: Liang Zhang <[email protected]>
AuthorDate: Thu Jul 7 12:39:15 2022 +0800
Fix DatabaseTypeEngine judge error in getProtocolType (#18919)
---
.../infra/database/type/DatabaseTypeEngine.java | 7 +---
.../database/type/DatabaseTypeEngineTest.java | 48 ++++++++++++----------
2 files changed, 28 insertions(+), 27 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngine.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngine.java
index 839f11e8a65..c0fce78255f 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngine.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngine.java
@@ -48,12 +48,7 @@ public final class DatabaseTypeEngine {
* @return protocol type
*/
public static DatabaseType getProtocolType(final DatabaseConfiguration
databaseConfig, final ConfigurationProperties props) {
- Optional<DatabaseType> configuredDatabaseType =
findConfiguredDatabaseType(props);
- if (configuredDatabaseType.isPresent()) {
- return configuredDatabaseType.get();
- }
- Collection<DataSource> dataSources =
databaseConfig.getDataSources().isEmpty() ?
databaseConfig.getDataSources().values() : Collections.emptyList();
- return getDatabaseType(dataSources);
+ return
findConfiguredDatabaseType(props).orElse(getDatabaseType(databaseConfig.getDataSources().values()));
}
/**
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngineTest.java
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngineTest.java
index 0e22d9091ca..0b76e55aa0e 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngineTest.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/database/type/DatabaseTypeEngineTest.java
@@ -17,19 +17,6 @@
package org.apache.shardingsphere.infra.database.type;
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Properties;
-import javax.sql.DataSource;
import org.apache.shardingsphere.infra.config.database.DatabaseConfiguration;
import
org.apache.shardingsphere.infra.config.database.impl.DataSourceProvidedDatabaseConfiguration;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
@@ -40,6 +27,21 @@ import
org.apache.shardingsphere.infra.database.type.dialect.PostgreSQLDatabaseT
import org.apache.shardingsphere.infra.fixture.FixtureRuleConfiguration;
import org.junit.Test;
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Properties;
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
public final class DatabaseTypeEngineTest {
@Test
@@ -189,23 +191,27 @@ public final class DatabaseTypeEngineTest {
}
@Test
- public void assertGetProtocolType() throws SQLException {
+ public void assertGetProtocolTypeFromConfiguredProperties() {
Properties props = new Properties();
-
props.setProperty(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE.getKey(),
"H2");
+
props.setProperty(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE.getKey(),
"MySQL");
DatabaseConfiguration databaseConfig = new
DataSourceProvidedDatabaseConfiguration(Collections.emptyMap(),
Collections.singleton(new FixtureRuleConfiguration()));
-
assertThat(DatabaseTypeEngine.getProtocolType(Collections.singletonMap("logic_db",
databaseConfig), new ConfigurationProperties(props)),
instanceOf(MySQLDatabaseType.class));
-
props.setProperty(ConfigurationPropertyKey.PROXY_FRONTEND_DATABASE_PROTOCOL_TYPE.getKey(),
"");
-
assertThat(DatabaseTypeEngine.getProtocolType(Collections.singletonMap("logic_db",
databaseConfig), new ConfigurationProperties(props)),
instanceOf(MySQLDatabaseType.class));
+ assertThat(DatabaseTypeEngine.getProtocolType(databaseConfig, new
ConfigurationProperties(props)), instanceOf(MySQLDatabaseType.class));
+
assertThat(DatabaseTypeEngine.getProtocolType(Collections.singletonMap("foo_db",
databaseConfig), new ConfigurationProperties(props)),
instanceOf(MySQLDatabaseType.class));
+ }
+
+ @Test
+ public void assertGetProtocolTypeFromDataSource() throws SQLException {
DataSource datasource =
mockDataSource(DatabaseTypeFactory.getInstance("PostgreSQL"));
- databaseConfig = new
DataSourceProvidedDatabaseConfiguration(Collections.singletonMap("",
datasource), Collections.singleton(new FixtureRuleConfiguration()));
-
assertThat(DatabaseTypeEngine.getProtocolType(Collections.singletonMap("logic_db",
databaseConfig), new ConfigurationProperties(props)),
instanceOf(PostgreSQLDatabaseType.class));
+ DatabaseConfiguration databaseConfig = new
DataSourceProvidedDatabaseConfiguration(Collections.singletonMap("foo_ds",
datasource), Collections.singleton(new FixtureRuleConfiguration()));
+ assertThat(DatabaseTypeEngine.getProtocolType(databaseConfig, new
ConfigurationProperties(new Properties())),
instanceOf(PostgreSQLDatabaseType.class));
+
assertThat(DatabaseTypeEngine.getProtocolType(Collections.singletonMap("foo_db",
databaseConfig), new ConfigurationProperties(new Properties())),
instanceOf(PostgreSQLDatabaseType.class));
}
@Test
public void assertGetStorageType() throws SQLException {
DataSource datasource =
mockDataSource(DatabaseTypeFactory.getInstance("MySQL"));
DatabaseConfiguration databaseConfig = new
DataSourceProvidedDatabaseConfiguration(Collections.singletonMap("",
datasource), Collections.singletonList(new FixtureRuleConfiguration()));
-
assertThat(DatabaseTypeEngine.getStorageType(Collections.singletonMap("logic_db",
databaseConfig)), instanceOf(MySQLDatabaseType.class));
+
assertThat(DatabaseTypeEngine.getStorageType(Collections.singletonMap("foo_db",
databaseConfig)), instanceOf(MySQLDatabaseType.class));
}
@Test