This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 4fe1fcb9543 Add `shardingsphere-infra-database-testcontainers`
optional module to unify JDBC support for testcontainers-java (#29397)
4fe1fcb9543 is described below
commit 4fe1fcb95436983f85881165b7cab9bdd37ee821
Author: Ling Hengqian <[email protected]>
AuthorDate: Wed Dec 13 21:28:04 2023 +0800
Add `shardingsphere-infra-database-testcontainers` optional module to unify
JDBC support for testcontainers-java (#29397)
---
.../optional-plugins/_index.cn.md | 2 ++
.../optional-plugins/_index.en.md | 2 ++
.../optional-plugins/_index.cn.md | 2 ++
.../optional-plugins/_index.en.md | 2 ++
.../clickhouse/type/ClickHouseDatabaseType.java | 4 +--
.../type/ClickHouseDatabaseTypeTest.java | 3 +--
.../database/mariadb/type/MariaDBDatabaseType.java | 6 ++---
.../mariadb/type/MariaDBDatabaseTypeTest.java | 4 +--
.../database/mysql/type/MySQLDatabaseType.java | 4 +--
.../database/mysql/type/MySQLDatabaseTypeTest.java | 2 +-
.../database/oracle/type/OracleDatabaseType.java | 6 ++---
.../oracle/type/OracleDatabaseTypeTest.java | 4 +--
infra/database/type/pom.xml | 1 +
.../postgresql/type/PostgreSQLDatabaseType.java | 6 ++---
.../type/PostgreSQLDatabaseTypeTest.java | 4 +--
.../sqlserver/type/SQLServerDatabaseType.java | 4 +--
.../sqlserver/type/SQLServerDatabaseTypeTest.java | 2 +-
infra/database/type/{ => testcontainers}/pom.xml | 30 ++++++++++++----------
.../type/AbstractTestcontainersDatabaseType.java} | 20 +++------------
.../type/TcClickHouseDatabaseType.java} | 14 +++++-----
.../type/TcMariaDBDatabaseType.java} | 14 +++++-----
.../testcontainers/type/TcMySQLDatabaseType.java} | 12 ++++-----
.../testcontainers/type/TcOracleDatabaseType.java} | 14 +++++-----
.../type/TcPostgreSQLDatabaseType.java} | 14 +++++-----
.../type/TcSQLServerDatabaseType.java} | 14 +++++-----
...ingsphere.infra.database.core.type.DatabaseType | 23 +++++++++++++++++
.../type/TestcontainersDatabaseTypeTest.java} | 14 ++++++----
test/native/pom.xml | 6 +++++
28 files changed, 132 insertions(+), 101 deletions(-)
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/_index.cn.md
b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/_index.cn.md
index 423d9b0e1d6..a884f47178f 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/_index.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/_index.cn.md
@@ -52,5 +52,7 @@ ShardingSphere 默认情况下仅包含核心 SPI 的实现,在 Git Source 存
- `org.apache.shardingsphere:shardingsphere-sql-translator-jooq-provider`,使用
JooQ 的 SQL 翻译器
- 行表达式
- `org.apache.shardingsphere:shardingsphere-infra-expr-espresso`,基于 GraalVM
Truffle 的 Espresso 实现的使用 Groovy 语法的行表达式
+- 数据库类型识别
+ - `org.apache.shardingsphere:shardingsphere-infra-database-testcontainers`,
对 `testcontainers-java` 的 `JDBC support` 的 jdbcURL 的识别适配
除了以上可选插件外,ShardingSphere 社区开发者还贡献了大量的插件实现,可以在 [ShardingSphere
Plugin](https://github.com/apache/shardingsphere-plugin)
仓库中查看插件的使用说明,ShardingSphere Plugin 仓库中的插件会和 ShardingSphere 保持相同的发布节奏,可以在
https://central.sonatype.com/ 进行检索,并安装到 ShardingSphere 中。
diff --git
a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/_index.en.md
b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/_index.en.md
index 009973ee41b..a8dc0adf92d 100644
---
a/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/_index.en.md
+++
b/docs/document/content/user-manual/shardingsphere-jdbc/optional-plugins/_index.en.md
@@ -52,5 +52,7 @@ All optional plugins are listed below in the form of
`groupId:artifactId`.
- `org.apache.shardingsphere:shardingsphere-sql-translator-jooq-provider`,
JooQ SQL translator
- Row Value Expressions definition
- `org.apache.shardingsphere:shardingsphere-infra-expr-espresso`,Row Value
Expressions that uses the Groovy syntax based on GraalVM Truffle's Espresso
implementation
+- Database type identification
+ - `org.apache.shardingsphere:shardingsphere-infra-database-testcontainers`,
Adaptation of jdbcURL for `JDBC support` of `testcontainers-java`
In addition to the above optional plugins, ShardingSphere community developers
have contributed a number of plugin implementations. These plugins can be found
in [ShardingSphere Plugins] (https://github.com/apache/shardingsphere-plugin)
repository. Plugins in ShardingSphere Plugin repository would remain the same
release plan with ShardingSphere, they can be retrieved at
https://central.sonatype.com/, and install into ShardingSphere.
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/optional-plugins/_index.cn.md
b/docs/document/content/user-manual/shardingsphere-proxy/optional-plugins/_index.cn.md
index 0233fe8eee8..2fdf18541ee 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/optional-plugins/_index.cn.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/optional-plugins/_index.cn.md
@@ -40,5 +40,7 @@ ShardingSphere 默认情况下仅包含核心 SPI 的实现,在 Git Source 存
- `org.apache.shardingsphere:shardingsphere-sql-translator-jooq-provider`,使用
JooQ 的 SQL 翻译器
- 行表达式
- `org.apache.shardingsphere:shardingsphere-infra-expr-espresso`,基于 GraalVM
Truffle 的 Espresso 实现的使用 Groovy 语法的行表达式
+- 数据库类型识别
+ - `org.apache.shardingsphere:shardingsphere-infra-database-testcontainers`,
对 `testcontainers-java` 的 `JDBC support` 的 jdbcURL 的识别适配
除了以上可选插件外,ShardingSphere 社区开发者还贡献了大量的插件实现,可以在 [ShardingSphere
Plugin](https://github.com/apache/shardingsphere-plugin)
仓库中查看插件的使用说明,ShardingSphere Plugin 仓库中的插件会和 ShardingSphere 保持相同的发布节奏,可以在
https://central.sonatype.com/ 进行检索,并安装到 ShardingSphere 中。
diff --git
a/docs/document/content/user-manual/shardingsphere-proxy/optional-plugins/_index.en.md
b/docs/document/content/user-manual/shardingsphere-proxy/optional-plugins/_index.en.md
index d056937ca04..b39fd6b4c37 100644
---
a/docs/document/content/user-manual/shardingsphere-proxy/optional-plugins/_index.en.md
+++
b/docs/document/content/user-manual/shardingsphere-proxy/optional-plugins/_index.en.md
@@ -40,5 +40,7 @@ All optional plugins are listed below in the form of
`groupId:artifactId`.
- `org.apache.shardingsphere:shardingsphere-sql-translator-jooq-provider`,
JooQ SQL translator
- Row Value Expressions definition
- `org.apache.shardingsphere:shardingsphere-infra-expr-espresso`,Row Value
Expressions that uses the Groovy syntax based on GraalVM Truffle's Espresso
implementation
+- Database type identification
+ - `org.apache.shardingsphere:shardingsphere-infra-database-testcontainers`,
Adaptation of jdbcURL for `JDBC support` of `testcontainers-java`
In addition to the above optional plugins, ShardingSphere community developers
have contributed a number of plugin implementations. These plugins can be found
in [ShardingSphere Plugins](https://github.com/apache/shardingsphere-plugin)
repository. Plugins in ShardingSphere Plugin repository would remain the same
release plan with ShardingSphere, they can be retrieved at
https://central.sonatype.com/, and install into ShardingSphere.
diff --git
a/infra/database/type/clickhouse/src/main/java/org/apache/shardingsphere/infra/database/clickhouse/type/ClickHouseDatabaseType.java
b/infra/database/type/clickhouse/src/main/java/org/apache/shardingsphere/infra/database/clickhouse/type/ClickHouseDatabaseType.java
index 84b1daacecd..c03b7b18bb2 100644
---
a/infra/database/type/clickhouse/src/main/java/org/apache/shardingsphere/infra/database/clickhouse/type/ClickHouseDatabaseType.java
+++
b/infra/database/type/clickhouse/src/main/java/org/apache/shardingsphere/infra/database/clickhouse/type/ClickHouseDatabaseType.java
@@ -25,14 +25,14 @@ import java.util.Collection;
import java.util.Optional;
/**
- * Database type of ClickHouse. Includes verification of Docker Images
involved in commonly used testcontainers.
+ * Database type of ClickHouse.
* ClickHouse currently uses MySQL dialect parsing.
*/
public final class ClickHouseDatabaseType implements DatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList("jdbc:ch:", "jdbc:clickhouse:",
"jdbc:tc:clickhouse/clickhouse-server:", "jdbc:tc:yandex/clickhouse-server:");
+ return Arrays.asList("jdbc:ch:", "jdbc:clickhouse:");
}
@Override
diff --git
a/infra/database/type/clickhouse/src/test/java/org/apache/shardingsphere/infra/database/clickhouse/type/ClickHouseDatabaseTypeTest.java
b/infra/database/type/clickhouse/src/test/java/org/apache/shardingsphere/infra/database/clickhouse/type/ClickHouseDatabaseTypeTest.java
index 9b91e31b0e3..87e7dc7ed45 100644
---
a/infra/database/type/clickhouse/src/test/java/org/apache/shardingsphere/infra/database/clickhouse/type/ClickHouseDatabaseTypeTest.java
+++
b/infra/database/type/clickhouse/src/test/java/org/apache/shardingsphere/infra/database/clickhouse/type/ClickHouseDatabaseTypeTest.java
@@ -30,7 +30,6 @@ class ClickHouseDatabaseTypeTest {
@Test
void assertGetJdbcUrlPrefixes() {
- assertThat(TypedSPILoader.getService(DatabaseType.class,
"ClickHouse").getJdbcUrlPrefixes(),
- is(Arrays.asList("jdbc:ch:", "jdbc:clickhouse:",
"jdbc:tc:clickhouse/clickhouse-server:", "jdbc:tc:yandex/clickhouse-server:")));
+ assertThat(TypedSPILoader.getService(DatabaseType.class,
"ClickHouse").getJdbcUrlPrefixes(), is(Arrays.asList("jdbc:ch:",
"jdbc:clickhouse:")));
}
}
diff --git
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
b/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
index c53ff914878..a8a621b4949 100644
---
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
+++
b/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
@@ -20,18 +20,18 @@ package
org.apache.shardingsphere.infra.database.mariadb.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Optional;
/**
- * Database type of MariaDB. Includes verification of Docker Images involved
in commonly used testcontainers.
+ * Database type of MariaDB.
*/
public final class MariaDBDatabaseType implements DatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList(String.format("jdbc:%s:",
getType().toLowerCase()), "jdbc:tc:mariadb:");
+ return Collections.singletonList(String.format("jdbc:%s:",
getType().toLowerCase()));
}
@Override
diff --git
a/infra/database/type/mariadb/src/test/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseTypeTest.java
b/infra/database/type/mariadb/src/test/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseTypeTest.java
index 3530facdb94..da4e68d408e 100644
---
a/infra/database/type/mariadb/src/test/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseTypeTest.java
+++
b/infra/database/type/mariadb/src/test/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseTypeTest.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.junit.jupiter.api.Test;
-import java.util.Arrays;
+import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -30,6 +30,6 @@ class MariaDBDatabaseTypeTest {
@Test
void assertGetJdbcUrlPrefixes() {
- assertThat(TypedSPILoader.getService(DatabaseType.class,
"MariaDB").getJdbcUrlPrefixes(), is(Arrays.asList("jdbc:mariadb:",
"jdbc:tc:mariadb:")));
+ assertThat(TypedSPILoader.getService(DatabaseType.class,
"MariaDB").getJdbcUrlPrefixes(),
is(Collections.singletonList("jdbc:mariadb:")));
}
}
diff --git
a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/type/MySQLDatabaseType.java
b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/type/MySQLDatabaseType.java
index fd3f14f4258..bd8c6355759 100644
---
a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/type/MySQLDatabaseType.java
+++
b/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/type/MySQLDatabaseType.java
@@ -23,13 +23,13 @@ import java.util.Arrays;
import java.util.Collection;
/**
- * Database type of MySQL. Includes verification of Docker Images involved in
commonly used testcontainers.
+ * Database type of MySQL.
*/
public final class MySQLDatabaseType implements DatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList("jdbc:mysql:", "jdbc:mysqlx:", "jdbc:tc:mysql:");
+ return Arrays.asList("jdbc:mysql:", "jdbc:mysqlx:");
}
@Override
diff --git
a/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/type/MySQLDatabaseTypeTest.java
b/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/type/MySQLDatabaseTypeTest.java
index 64f2927bcd1..63d7970db38 100644
---
a/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/type/MySQLDatabaseTypeTest.java
+++
b/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/type/MySQLDatabaseTypeTest.java
@@ -30,6 +30,6 @@ class MySQLDatabaseTypeTest {
@Test
void assertGetJdbcUrlPrefixes() {
- assertThat(TypedSPILoader.getService(DatabaseType.class,
"MySQL").getJdbcUrlPrefixes(), is(Arrays.asList("jdbc:mysql:", "jdbc:mysqlx:",
"jdbc:tc:mysql:")));
+ assertThat(TypedSPILoader.getService(DatabaseType.class,
"MySQL").getJdbcUrlPrefixes(), is(Arrays.asList("jdbc:mysql:",
"jdbc:mysqlx:")));
}
}
diff --git
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/type/OracleDatabaseType.java
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/type/OracleDatabaseType.java
index 1404fa1a063..39961ae07f4 100644
---
a/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/type/OracleDatabaseType.java
+++
b/infra/database/type/oracle/src/main/java/org/apache/shardingsphere/infra/database/oracle/type/OracleDatabaseType.java
@@ -19,17 +19,17 @@ package
org.apache.shardingsphere.infra.database.oracle.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
/**
- * Database type of Oracle. Includes verification of Docker Images involved in
commonly used testcontainers.
+ * Database type of Oracle.
*/
public final class OracleDatabaseType implements DatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList(String.format("jdbc:%s:",
getType().toLowerCase()), "jdbc:tc:gvenzl/oracle-free:",
"jdbc:tc:gvenzl/oracle-xe:");
+ return Collections.singletonList(String.format("jdbc:%s:",
getType().toLowerCase()));
}
@Override
diff --git
a/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/type/OracleDatabaseTypeTest.java
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/type/OracleDatabaseTypeTest.java
index 5cca23fdb8e..f7ec24a15f4 100644
---
a/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/type/OracleDatabaseTypeTest.java
+++
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/type/OracleDatabaseTypeTest.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.junit.jupiter.api.Test;
-import java.util.Arrays;
+import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -30,6 +30,6 @@ class OracleDatabaseTypeTest {
@Test
void assertGetJdbcUrlPrefixes() {
- assertThat(TypedSPILoader.getService(DatabaseType.class,
"Oracle").getJdbcUrlPrefixes(), is(Arrays.asList("jdbc:oracle:",
"jdbc:tc:gvenzl/oracle-free:", "jdbc:tc:gvenzl/oracle-xe:")));
+ assertThat(TypedSPILoader.getService(DatabaseType.class,
"Oracle").getJdbcUrlPrefixes(), is(Collections.singletonList("jdbc:oracle:")));
}
}
diff --git a/infra/database/type/pom.xml b/infra/database/type/pom.xml
index 0d2e4169b7e..a70e18f3415 100644
--- a/infra/database/type/pom.xml
+++ b/infra/database/type/pom.xml
@@ -37,5 +37,6 @@
<module>h2</module>
<module>sql92</module>
<module>clickhouse</module>
+ <module>testcontainers</module>
</modules>
</project>
diff --git
a/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/type/PostgreSQLDatabaseType.java
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/type/PostgreSQLDatabaseType.java
index 6a0ee5c741e..2300718051e 100644
---
a/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/type/PostgreSQLDatabaseType.java
+++
b/infra/database/type/postgresql/src/main/java/org/apache/shardingsphere/infra/database/postgresql/type/PostgreSQLDatabaseType.java
@@ -19,17 +19,17 @@ package
org.apache.shardingsphere.infra.database.postgresql.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
/**
- * Database type of PostgreSQL. Includes verification of Docker Images
involved in commonly used testcontainers.
+ * Database type of PostgreSQL.
*/
public final class PostgreSQLDatabaseType implements DatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList(String.format("jdbc:%s:",
getType().toLowerCase()), "jdbc:tc:postgresql:");
+ return Collections.singletonList(String.format("jdbc:%s:",
getType().toLowerCase()));
}
@Override
diff --git
a/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/type/PostgreSQLDatabaseTypeTest.java
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/type/PostgreSQLDatabaseTypeTest.java
index c784dee54f9..de62363e121 100644
---
a/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/type/PostgreSQLDatabaseTypeTest.java
+++
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/type/PostgreSQLDatabaseTypeTest.java
@@ -21,7 +21,7 @@ import
org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.junit.jupiter.api.Test;
-import java.util.Arrays;
+import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -30,6 +30,6 @@ class PostgreSQLDatabaseTypeTest {
@Test
void assertGetJdbcUrlPrefixes() {
- assertThat(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL").getJdbcUrlPrefixes(), is(Arrays.asList("jdbc:postgresql:",
"jdbc:tc:postgresql:")));
+ assertThat(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL").getJdbcUrlPrefixes(),
is(Collections.singletonList("jdbc:postgresql:")));
}
}
diff --git
a/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/type/SQLServerDatabaseType.java
b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/type/SQLServerDatabaseType.java
index e1725acb12b..69e7e4763d0 100644
---
a/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/type/SQLServerDatabaseType.java
+++
b/infra/database/type/sqlserver/src/main/java/org/apache/shardingsphere/infra/database/sqlserver/type/SQLServerDatabaseType.java
@@ -23,13 +23,13 @@ import java.util.Arrays;
import java.util.Collection;
/**
- * Database type of SQLServer. Includes verification of Docker Images involved
in commonly used testcontainers.
+ * Database type of SQLServer.
*/
public final class SQLServerDatabaseType implements DatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList("jdbc:microsoft:sqlserver:", "jdbc:sqlserver:",
"jdbc:tc:mcr.microsoft.com/mssql/server:");
+ return Arrays.asList("jdbc:microsoft:sqlserver:", "jdbc:sqlserver:");
}
@Override
diff --git
a/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/type/SQLServerDatabaseTypeTest.java
b/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/type/SQLServerDatabaseTypeTest.java
index 33e75ae4bea..9edf61a6161 100644
---
a/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/type/SQLServerDatabaseTypeTest.java
+++
b/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/type/SQLServerDatabaseTypeTest.java
@@ -31,6 +31,6 @@ class SQLServerDatabaseTypeTest {
@Test
void assertGetJdbcUrlPrefixes() {
assertThat(TypedSPILoader.getService(DatabaseType.class,
"SQLServer").getJdbcUrlPrefixes(),
- is(Arrays.asList("jdbc:microsoft:sqlserver:",
"jdbc:sqlserver:", "jdbc:tc:mcr.microsoft.com/mssql/server:")));
+ is(Arrays.asList("jdbc:microsoft:sqlserver:",
"jdbc:sqlserver:")));
}
}
diff --git a/infra/database/type/pom.xml
b/infra/database/type/testcontainers/pom.xml
similarity index 66%
copy from infra/database/type/pom.xml
copy to infra/database/type/testcontainers/pom.xml
index 0d2e4169b7e..1a2af7427f0 100644
--- a/infra/database/type/pom.xml
+++ b/infra/database/type/testcontainers/pom.xml
@@ -20,22 +20,24 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.shardingsphere</groupId>
- <artifactId>shardingsphere-infra-database</artifactId>
+ <artifactId>shardingsphere-infra-database-type</artifactId>
<version>5.4.2-SNAPSHOT</version>
</parent>
- <artifactId>shardingsphere-infra-database-type</artifactId>
- <packaging>pom</packaging>
+ <artifactId>shardingsphere-infra-database-testcontainers</artifactId>
<name>${project.artifactId}</name>
- <modules>
- <module>mysql</module>
- <module>mariadb</module>
- <module>postgresql</module>
- <module>opengauss</module>
- <module>oracle</module>
- <module>sqlserver</module>
- <module>h2</module>
- <module>sql92</module>
- <module>clickhouse</module>
- </modules>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-database-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-test-util</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
</project>
diff --git
a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/type/MySQLDatabaseType.java
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/AbstractTestcontainersDatabaseType.java
similarity index 62%
copy from
infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/type/MySQLDatabaseType.java
copy to
infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/AbstractTestcontainersDatabaseType.java
index fd3f14f4258..328f3cbf911 100644
---
a/infra/database/type/mysql/src/main/java/org/apache/shardingsphere/infra/database/mysql/type/MySQLDatabaseType.java
+++
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/AbstractTestcontainersDatabaseType.java
@@ -15,25 +15,13 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.mysql.type;
+package org.apache.shardingsphere.infra.database.testcontainers.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
-import java.util.Arrays;
-import java.util.Collection;
-
/**
- * Database type of MySQL. Includes verification of Docker Images involved in
commonly used testcontainers.
+ * Abstract Database type in testcontainers-java.
+ * All jdbcUrl prefixes supported by testcontainers-java should extend this
class.
*/
-public final class MySQLDatabaseType implements DatabaseType {
-
- @Override
- public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList("jdbc:mysql:", "jdbc:mysqlx:", "jdbc:tc:mysql:");
- }
-
- @Override
- public String getType() {
- return "MySQL";
- }
+public abstract class AbstractTestcontainersDatabaseType implements
DatabaseType {
}
diff --git
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcClickHouseDatabaseType.java
similarity index 75%
copy from
infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
copy to
infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcClickHouseDatabaseType.java
index c53ff914878..77f6ab97d6c 100644
---
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
+++
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcClickHouseDatabaseType.java
@@ -15,32 +15,32 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.mariadb.type;
+package org.apache.shardingsphere.infra.database.testcontainers.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Optional;
/**
- * Database type of MariaDB. Includes verification of Docker Images involved
in commonly used testcontainers.
+ * Database type of ClickHouse in testcontainers-java.
*/
-public final class MariaDBDatabaseType implements DatabaseType {
+public final class TcClickHouseDatabaseType extends
AbstractTestcontainersDatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList(String.format("jdbc:%s:",
getType().toLowerCase()), "jdbc:tc:mariadb:");
+ return Collections.singletonList("jdbc:tc:clickhouse:");
}
@Override
public Optional<DatabaseType> getTrunkDatabaseType() {
- return Optional.of(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
+ return Optional.of(TypedSPILoader.getService(DatabaseType.class,
"ClickHouse"));
}
@Override
public String getType() {
- return "MariaDB";
+ return "TestContainersClickHouse";
}
}
diff --git
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcMariaDBDatabaseType.java
similarity index 75%
copy from
infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
copy to
infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcMariaDBDatabaseType.java
index c53ff914878..36bf2f124b3 100644
---
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
+++
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcMariaDBDatabaseType.java
@@ -15,32 +15,32 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.mariadb.type;
+package org.apache.shardingsphere.infra.database.testcontainers.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Optional;
/**
- * Database type of MariaDB. Includes verification of Docker Images involved
in commonly used testcontainers.
+ * Database type of MariaDB in testcontainers-java.
*/
-public final class MariaDBDatabaseType implements DatabaseType {
+public final class TcMariaDBDatabaseType extends
AbstractTestcontainersDatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList(String.format("jdbc:%s:",
getType().toLowerCase()), "jdbc:tc:mariadb:");
+ return Collections.singletonList("jdbc:tc:mariadb:");
}
@Override
public Optional<DatabaseType> getTrunkDatabaseType() {
- return Optional.of(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
+ return Optional.of(TypedSPILoader.getService(DatabaseType.class,
"MariaDB"));
}
@Override
public String getType() {
- return "MariaDB";
+ return "TestContainersMariaDB";
}
}
diff --git
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcMySQLDatabaseType.java
similarity index 77%
copy from
infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
copy to
infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcMySQLDatabaseType.java
index c53ff914878..c19545a69ea 100644
---
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
+++
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcMySQLDatabaseType.java
@@ -15,23 +15,23 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.mariadb.type;
+package org.apache.shardingsphere.infra.database.testcontainers.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Optional;
/**
- * Database type of MariaDB. Includes verification of Docker Images involved
in commonly used testcontainers.
+ * Database type of MySQL in testcontainers-java.
*/
-public final class MariaDBDatabaseType implements DatabaseType {
+public final class TcMySQLDatabaseType extends
AbstractTestcontainersDatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList(String.format("jdbc:%s:",
getType().toLowerCase()), "jdbc:tc:mariadb:");
+ return Collections.singletonList("jdbc:tc:mysql:");
}
@Override
@@ -41,6 +41,6 @@ public final class MariaDBDatabaseType implements
DatabaseType {
@Override
public String getType() {
- return "MariaDB";
+ return "TestContainersMySQL";
}
}
diff --git
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcOracleDatabaseType.java
similarity index 75%
copy from
infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
copy to
infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcOracleDatabaseType.java
index c53ff914878..d5169f1d885 100644
---
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
+++
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcOracleDatabaseType.java
@@ -15,32 +15,32 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.mariadb.type;
+package org.apache.shardingsphere.infra.database.testcontainers.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Optional;
/**
- * Database type of MariaDB. Includes verification of Docker Images involved
in commonly used testcontainers.
+ * Database type of Oracle in testcontainers-java.
*/
-public final class MariaDBDatabaseType implements DatabaseType {
+public final class TcOracleDatabaseType extends
AbstractTestcontainersDatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList(String.format("jdbc:%s:",
getType().toLowerCase()), "jdbc:tc:mariadb:");
+ return Collections.singletonList("jdbc:tc:oracle:");
}
@Override
public Optional<DatabaseType> getTrunkDatabaseType() {
- return Optional.of(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
+ return Optional.of(TypedSPILoader.getService(DatabaseType.class,
"Oracle"));
}
@Override
public String getType() {
- return "MariaDB";
+ return "TestContainersOracle";
}
}
diff --git
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcPostgreSQLDatabaseType.java
similarity index 75%
copy from
infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
copy to
infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcPostgreSQLDatabaseType.java
index c53ff914878..d9136e6fb06 100644
---
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
+++
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcPostgreSQLDatabaseType.java
@@ -15,32 +15,32 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.mariadb.type;
+package org.apache.shardingsphere.infra.database.testcontainers.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Optional;
/**
- * Database type of MariaDB. Includes verification of Docker Images involved
in commonly used testcontainers.
+ * Database type of PostgreSQL in testcontainers-java.
*/
-public final class MariaDBDatabaseType implements DatabaseType {
+public final class TcPostgreSQLDatabaseType extends
AbstractTestcontainersDatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList(String.format("jdbc:%s:",
getType().toLowerCase()), "jdbc:tc:mariadb:");
+ return Collections.singletonList("jdbc:tc:postgresql:");
}
@Override
public Optional<DatabaseType> getTrunkDatabaseType() {
- return Optional.of(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
+ return Optional.of(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL"));
}
@Override
public String getType() {
- return "MariaDB";
+ return "TestContainersPostgreSQL";
}
}
diff --git
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcSQLServerDatabaseType.java
similarity index 75%
copy from
infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
copy to
infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcSQLServerDatabaseType.java
index c53ff914878..92049f5b30e 100644
---
a/infra/database/type/mariadb/src/main/java/org/apache/shardingsphere/infra/database/mariadb/type/MariaDBDatabaseType.java
+++
b/infra/database/type/testcontainers/src/main/java/org/apache/shardingsphere/infra/database/testcontainers/type/TcSQLServerDatabaseType.java
@@ -15,32 +15,32 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.mariadb.type;
+package org.apache.shardingsphere.infra.database.testcontainers.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.Optional;
/**
- * Database type of MariaDB. Includes verification of Docker Images involved
in commonly used testcontainers.
+ * Database type of MSSQL Server in testcontainers-java.
*/
-public final class MariaDBDatabaseType implements DatabaseType {
+public final class TcSQLServerDatabaseType extends
AbstractTestcontainersDatabaseType {
@Override
public Collection<String> getJdbcUrlPrefixes() {
- return Arrays.asList(String.format("jdbc:%s:",
getType().toLowerCase()), "jdbc:tc:mariadb:");
+ return Collections.singletonList("jdbc:tc:sqlserver:");
}
@Override
public Optional<DatabaseType> getTrunkDatabaseType() {
- return Optional.of(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
+ return Optional.of(TypedSPILoader.getService(DatabaseType.class,
"SQLServer"));
}
@Override
public String getType() {
- return "MariaDB";
+ return "TestContainersSQLServer";
}
}
diff --git
a/infra/database/type/testcontainers/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.type.DatabaseType
b/infra/database/type/testcontainers/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.type.DatabaseType
new file mode 100644
index 00000000000..081085fcf0d
--- /dev/null
+++
b/infra/database/type/testcontainers/src/main/resources/META-INF/services/org.apache.shardingsphere.infra.database.core.type.DatabaseType
@@ -0,0 +1,23 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.shardingsphere.infra.database.testcontainers.type.TcClickHouseDatabaseType
+org.apache.shardingsphere.infra.database.testcontainers.type.TcMariaDBDatabaseType
+org.apache.shardingsphere.infra.database.testcontainers.type.TcMySQLDatabaseType
+org.apache.shardingsphere.infra.database.testcontainers.type.TcOracleDatabaseType
+org.apache.shardingsphere.infra.database.testcontainers.type.TcPostgreSQLDatabaseType
+org.apache.shardingsphere.infra.database.testcontainers.type.TcSQLServerDatabaseType
diff --git
a/infra/database/type/clickhouse/src/test/java/org/apache/shardingsphere/infra/database/clickhouse/type/ClickHouseDatabaseTypeTest.java
b/infra/database/type/testcontainers/src/test/java/org/apache/shardingsphere/infra/database/testcontainers/type/TestcontainersDatabaseTypeTest.java
similarity index 53%
copy from
infra/database/type/clickhouse/src/test/java/org/apache/shardingsphere/infra/database/clickhouse/type/ClickHouseDatabaseTypeTest.java
copy to
infra/database/type/testcontainers/src/test/java/org/apache/shardingsphere/infra/database/testcontainers/type/TestcontainersDatabaseTypeTest.java
index 9b91e31b0e3..91dcaac3307 100644
---
a/infra/database/type/clickhouse/src/test/java/org/apache/shardingsphere/infra/database/clickhouse/type/ClickHouseDatabaseTypeTest.java
+++
b/infra/database/type/testcontainers/src/test/java/org/apache/shardingsphere/infra/database/testcontainers/type/TestcontainersDatabaseTypeTest.java
@@ -15,22 +15,26 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.infra.database.clickhouse.type;
+package org.apache.shardingsphere.infra.database.testcontainers.type;
import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.junit.jupiter.api.Test;
-import java.util.Arrays;
+import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-class ClickHouseDatabaseTypeTest {
+class TestcontainersDatabaseTypeTest {
@Test
void assertGetJdbcUrlPrefixes() {
- assertThat(TypedSPILoader.getService(DatabaseType.class,
"ClickHouse").getJdbcUrlPrefixes(),
- is(Arrays.asList("jdbc:ch:", "jdbc:clickhouse:",
"jdbc:tc:clickhouse/clickhouse-server:", "jdbc:tc:yandex/clickhouse-server:")));
+ assertThat(TypedSPILoader.getService(DatabaseType.class,
"TestContainersClickHouse").getJdbcUrlPrefixes(),
is(Collections.singletonList("jdbc:tc:clickhouse:")));
+ assertThat(TypedSPILoader.getService(DatabaseType.class,
"TestContainersMariaDB").getJdbcUrlPrefixes(),
is(Collections.singletonList("jdbc:tc:mariadb:")));
+ assertThat(TypedSPILoader.getService(DatabaseType.class,
"TestContainersMySQL").getJdbcUrlPrefixes(),
is(Collections.singletonList("jdbc:tc:mysql:")));
+ assertThat(TypedSPILoader.getService(DatabaseType.class,
"TestContainersOracle").getJdbcUrlPrefixes(),
is(Collections.singletonList("jdbc:tc:oracle:")));
+ assertThat(TypedSPILoader.getService(DatabaseType.class,
"TestContainersPostgreSQL").getJdbcUrlPrefixes(),
is(Collections.singletonList("jdbc:tc:postgresql:")));
+ assertThat(TypedSPILoader.getService(DatabaseType.class,
"TestContainersSQLServer").getJdbcUrlPrefixes(),
is(Collections.singletonList("jdbc:tc:sqlserver:")));
}
}
diff --git a/test/native/pom.xml b/test/native/pom.xml
index fa00a4ee966..c5f1e8d4948 100644
--- a/test/native/pom.xml
+++ b/test/native/pom.xml
@@ -33,6 +33,12 @@
<version>${project.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-database-testcontainers</artifactId>
+ <version>${project.version}</version>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.hamcrest</groupId>