This is an automated email from the ASF dual-hosted git repository.
terrymanu 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 96d71df59a1 Refactor MCP test database type JDBC URL fixtures (#39040)
96d71df59a1 is described below
commit 96d71df59a1c0a31601778a384290f129acc57b2
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Jul 7 22:38:39 2026 +0800
Refactor MCP test database type JDBC URL fixtures (#39040)
---
.../fixture/CoreDatabaseTypeFactoryMocker.java | 50 ++++++++--------------
.../mcp/core/resource/ResourceTestDataFactory.java | 15 +------
.../MCPJdbcTransactionStatementExecutorTest.java | 2 +-
.../MCPSQLExecutionFacadeConcurrencyTest.java | 2 +-
.../workflow/WorkflowProxyQueryServiceTest.java | 12 +-----
.../MCPDatabaseCapabilityProviderTest.java | 29 +------------
.../jdbc/AbstractMCPJdbcMetadataLoaderTest.java | 13 +-----
.../jdbc/MCPJdbcDatabaseProfileLoaderTest.java | 2 +-
.../jdbc/MCPJdbcMetadataLoaderSequenceTest.java | 3 +-
.../metadata/query/DatabaseTestDataFactory.java | 16 +------
.../fixture/SupportDatabaseTypeFactoryMocker.java | 50 ++++++++--------------
11 files changed, 47 insertions(+), 147 deletions(-)
diff --git
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/fixture/CoreDatabaseTypeFactoryMocker.java
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/fixture/CoreDatabaseTypeFactoryMocker.java
index 786f9827ed6..cb6cbd6d7e0 100644
---
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/fixture/CoreDatabaseTypeFactoryMocker.java
+++
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/fixture/CoreDatabaseTypeFactoryMocker.java
@@ -26,7 +26,6 @@ import
org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatab
import org.mockito.MockedStatic;
import java.sql.DatabaseMetaData;
-import java.util.Locale;
import java.util.Map;
import java.util.Objects;
@@ -43,6 +42,18 @@ import static org.mockito.Mockito.when;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class CoreDatabaseTypeFactoryMocker {
+ private static final String JDBC_URL_PREFIX = "jdbc:mcp-fixture:";
+
+ /**
+ * Create MCP fixture JDBC URL.
+ *
+ * @param databaseType database type
+ * @return MCP fixture JDBC URL
+ */
+ public static String createJdbcUrl(final String databaseType) {
+ return JDBC_URL_PREFIX + databaseType + ":test";
+ }
+
/**
* Mock database type factory by JDBC connection metadata.
*
@@ -73,38 +84,13 @@ public final class CoreDatabaseTypeFactoryMocker {
}
private static String resolveTypeByURL(final String url) {
- String actualURL = Objects.toString(url,
"").toLowerCase(Locale.ENGLISH);
- if (actualURL.startsWith("jdbc:mysql:")) {
- return "MySQL";
- }
- if (actualURL.startsWith("jdbc:postgresql:")) {
- return "PostgreSQL";
- }
- if (actualURL.startsWith("jdbc:opengauss:")) {
- return "openGauss";
- }
- if (actualURL.startsWith("jdbc:sqlserver:")) {
- return "SQLServer";
- }
- if (actualURL.startsWith("jdbc:mariadb:")) {
- return "MariaDB";
- }
- if (actualURL.startsWith("jdbc:oracle:")) {
- return "Oracle";
- }
- if (actualURL.startsWith("jdbc:clickhouse:")) {
- return "ClickHouse";
- }
- if (actualURL.startsWith("jdbc:hive2:") ||
actualURL.startsWith("jdbc:hive:")) {
- return "Hive";
- }
- if (actualURL.startsWith("jdbc:presto:")) {
- return "Presto";
- }
- if (actualURL.startsWith("jdbc:firebirdsql:")) {
- return "Firebird";
+ String actualURL = Objects.toString(url, "");
+ if (!actualURL.startsWith(JDBC_URL_PREFIX)) {
+ return "";
}
- return "";
+ String databaseType = actualURL.substring(JDBC_URL_PREFIX.length());
+ int delimiterIndex = databaseType.indexOf(':');
+ return -1 == delimiterIndex ? databaseType : databaseType.substring(0,
delimiterIndex);
}
private static DatabaseType mockDatabaseType(final String databaseType) {
diff --git
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java
index 1fbd70a9924..3fe2ceb7f5b 100644
---
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java
+++
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java
@@ -137,7 +137,7 @@ public final class ResourceTestDataFactory {
when(result.getMetaData()).thenReturn(databaseMetaData);
when(result.createStatement()).thenReturn(statement);
when(databaseMetaData.getDatabaseProductVersion()).thenReturn(databaseMetadata.getDatabaseVersion());
-
when(databaseMetaData.getURL()).thenReturn(getJdbcUrl(databaseMetadata));
+
when(databaseMetaData.getURL()).thenReturn(CoreDatabaseTypeFactoryMocker.createJdbcUrl(databaseMetadata.getDatabaseType()));
when(databaseMetaData.getTables(nullable(String.class),
nullable(String.class), eq("%"), any(String[].class))).thenAnswer(invocation ->
{
String[] tableTypes = invocation.getArgument(3, String[].class);
return createResultSet("TABLE".equals(tableTypes[0]) ?
createTableRows(databaseMetadata) : createViewRows(databaseMetadata));
@@ -151,19 +151,6 @@ public final class ResourceTestDataFactory {
return result;
}
- private static String getJdbcUrl(final MCPDatabaseMetadata
databaseMetadata) {
- switch (databaseMetadata.getDatabaseType()) {
- case "MySQL":
- return String.format("jdbc:mysql://metadata-query/%s",
databaseMetadata.getDatabase());
- case "PostgreSQL":
- return String.format("jdbc:postgresql://metadata-query/%s",
databaseMetadata.getDatabase());
- case "Hive":
- return String.format("jdbc:hive2://metadata-query/%s",
databaseMetadata.getDatabase());
- default:
- throw new
IllegalArgumentException(databaseMetadata.getDatabaseType());
- }
- }
-
private static List<Map<String, String>> createTableRows(final
MCPDatabaseMetadata databaseMetadata) {
List<Map<String, String>> result = new LinkedList<>();
for (MCPSchemaMetadata each : databaseMetadata.getSchemas()) {
diff --git
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/session/MCPJdbcTransactionStatementExecutorTest.java
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/session/MCPJdbcTransactionStatementExecutorTest.java
index 389ff3bb662..ed8a58c2842 100644
---
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/session/MCPJdbcTransactionStatementExecutorTest.java
+++
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/session/MCPJdbcTransactionStatementExecutorTest.java
@@ -153,7 +153,7 @@ class MCPJdbcTransactionStatementExecutorTest {
when(result.openConnection(databaseName)).thenReturn(connection);
when(connection.getMetaData()).thenReturn(databaseMetaData);
when(databaseMetaData.getDatabaseProductVersion()).thenReturn("");
-
when(databaseMetaData.getURL()).thenReturn(String.format("jdbc:%s://transaction-executor/test",
databaseType.toLowerCase(java.util.Locale.ENGLISH)));
+
when(databaseMetaData.getURL()).thenReturn(CoreDatabaseTypeFactoryMocker.createJdbcUrl(databaseType));
mockEmptyScalarQueries(connection);
} catch (final SQLException ex) {
throw new IllegalStateException(ex);
diff --git
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPSQLExecutionFacadeConcurrencyTest.java
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPSQLExecutionFacadeConcurrencyTest.java
index e153acc1d04..12a6e4ce2c0 100644
---
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPSQLExecutionFacadeConcurrencyTest.java
+++
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/tool/handler/execute/MCPSQLExecutionFacadeConcurrencyTest.java
@@ -184,7 +184,7 @@ class MCPSQLExecutionFacadeConcurrencyTest {
when(result.openConnection("logic_db")).thenReturn(connection);
when(connection.getMetaData()).thenReturn(databaseMetaData);
when(databaseMetaData.getDatabaseProductVersion()).thenReturn("");
-
when(databaseMetaData.getURL()).thenReturn("jdbc:mysql://localhost:3306/facade_concurrency");
+
when(databaseMetaData.getURL()).thenReturn(CoreDatabaseTypeFactoryMocker.createJdbcUrl("MySQL"));
mockEmptyScalarQueries(connection);
} catch (final SQLException ex) {
throw new IllegalStateException(ex);
diff --git
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/workflow/WorkflowProxyQueryServiceTest.java
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/workflow/WorkflowProxyQueryServiceTest.java
index 2651308e2f6..6febca0d3b6 100644
---
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/workflow/WorkflowProxyQueryServiceTest.java
+++
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/workflow/WorkflowProxyQueryServiceTest.java
@@ -244,7 +244,7 @@ class WorkflowProxyQueryServiceTest {
when(result.openConnection("logic_db")).thenReturn(connection);
when(connection.getMetaData()).thenReturn(databaseMetaData);
when(databaseMetaData.getDatabaseProductVersion()).thenReturn("");
-
when(databaseMetaData.getURL()).thenReturn(getJdbcUrl(databaseType));
+
when(databaseMetaData.getURL()).thenReturn(CoreDatabaseTypeFactoryMocker.createJdbcUrl(databaseType));
mockEmptyScalarQueries(connection);
} catch (final SQLException ex) {
throw new IllegalStateException(ex);
@@ -258,14 +258,4 @@ class WorkflowProxyQueryServiceTest {
when(connection.createStatement()).thenReturn(statement);
when(statement.executeQuery(anyString())).thenReturn(resultSet);
}
-
- private String getJdbcUrl(final String databaseType) {
- if ("PostgreSQL".equals(databaseType)) {
- return "jdbc:postgresql://workflow-proxy-query/test";
- }
- if ("openGauss".equals(databaseType)) {
- return "jdbc:opengauss://workflow-proxy-query/test";
- }
- return "jdbc:mysql://workflow-proxy-query/test";
- }
}
diff --git
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityProviderTest.java
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityProviderTest.java
index 2169ecaccff..2ea1508393a 100644
---
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityProviderTest.java
+++
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/capability/MCPDatabaseCapabilityProviderTest.java
@@ -134,40 +134,13 @@ class MCPDatabaseCapabilityProviderTest {
when(statement.executeQuery(anyString())).thenReturn(scalarResultSet);
when(scalarResultSet.next()).thenReturn(false);
when(databaseMetaData.getDatabaseProductVersion()).thenReturn(databaseVersion);
-
when(databaseMetaData.getURL()).thenReturn(getJdbcUrl(databaseType));
+
when(databaseMetaData.getURL()).thenReturn(SupportDatabaseTypeFactoryMocker.createJdbcUrl(databaseType));
} catch (final SQLException ex) {
throw new IllegalStateException(ex);
}
return result;
}
- private String getJdbcUrl(final String databaseType) {
- switch (databaseType) {
- case "MySQL":
- return "jdbc:mysql:test";
- case "PostgreSQL":
- return "jdbc:postgresql:test";
- case "openGauss":
- return "jdbc:opengauss:test";
- case "SQLServer":
- return "jdbc:sqlserver:test";
- case "MariaDB":
- return "jdbc:mariadb:test";
- case "Oracle":
- return "jdbc:oracle:test";
- case "ClickHouse":
- return "jdbc:clickhouse:test";
- case "Hive":
- return "jdbc:hive2:test";
- case "Presto":
- return "jdbc:presto:test";
- case "Firebird":
- return "jdbc:firebirdsql:test";
- default:
- throw new IllegalArgumentException(databaseType);
- }
- }
-
private static Stream<Arguments> provideCapabilityMatrixArguments() {
return Stream.of(
Arguments.of("mysql", "MySQL", true, true, true, false,
SchemaExecutionSemantics.FIXED_TO_DATABASE),
diff --git
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/AbstractMCPJdbcMetadataLoaderTest.java
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/AbstractMCPJdbcMetadataLoaderTest.java
index 51d49d4f9b3..e7ed3442fed 100644
---
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/AbstractMCPJdbcMetadataLoaderTest.java
+++
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/AbstractMCPJdbcMetadataLoaderTest.java
@@ -65,15 +65,6 @@ import static org.mockito.Mockito.when;
abstract class AbstractMCPJdbcMetadataLoaderTest {
- protected static final Map<String, String> METADATA_JDBC_URLS = Map.of(
- "MySQL", "jdbc:mysql://metadata-loader/test",
- "PostgreSQL", "jdbc:postgresql://metadata-loader/test",
- "openGauss", "jdbc:opengauss://metadata-loader/test",
- "SQLServer", "jdbc:sqlserver://metadata-loader",
- "Oracle", "jdbc:oracle:thin:@metadata-loader",
- "MariaDB", "jdbc:mariadb://metadata-loader/test",
- "Firebird", "jdbc:firebirdsql://metadata-loader/test");
-
protected LoadedMetadataCatalog load(final Map<String,
RuntimeDatabaseConfiguration> runtimeDatabases) {
try (MockedStatic<DatabaseTypeFactory> ignored =
SupportDatabaseTypeFactoryMocker.mockByConnectionMetadata()) {
MCPJdbcDatabaseProfileLoader databaseProfileLoader = new
MCPJdbcDatabaseProfileLoader();
@@ -200,7 +191,7 @@ abstract class AbstractMCPJdbcMetadataLoaderTest {
List.of(Map.of("SEQUENCE_SCHEMA", "PUBLIC", "SEQUENCE_NAME",
"order_seq")));
DatabaseMetaData databaseMetaData = result.getMetaData();
when(databaseMetaData.getDatabaseProductVersion()).thenReturn("16.2");
-
when(databaseMetaData.getURL()).thenReturn("jdbc:postgresql://metadata-loader/test");
+
when(databaseMetaData.getURL()).thenReturn(getMetadataJdbcUrl("PostgreSQL"));
return result;
}
@@ -285,7 +276,7 @@ abstract class AbstractMCPJdbcMetadataLoaderTest {
}
protected String getMetadataJdbcUrl(final String databaseType) {
- return METADATA_JDBC_URLS.getOrDefault(databaseType,
METADATA_JDBC_URLS.get("PostgreSQL"));
+ return SupportDatabaseTypeFactoryMocker.createJdbcUrl(databaseType);
}
protected int countMetadata(final MCPDatabaseMetadata databaseMetadata,
final SupportedMCPMetadataObjectType objectType, final String objectName) {
diff --git
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcDatabaseProfileLoaderTest.java
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcDatabaseProfileLoaderTest.java
index 1e5ca38b83f..8e36e906189 100644
---
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcDatabaseProfileLoaderTest.java
+++
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcDatabaseProfileLoaderTest.java
@@ -41,7 +41,7 @@ class MCPJdbcDatabaseProfileLoaderTest {
@Test
void assertLoad() throws SQLException {
try (MockedStatic<DatabaseTypeFactory> ignored =
SupportDatabaseTypeFactoryMocker.mockByConnectionMetadata()) {
- RuntimeDatabaseProfile actual = new
MCPJdbcDatabaseProfileLoader().load("logic_db",
createRuntimeDatabaseConfiguration("jdbc:mysql:test", "8.0.32"));
+ RuntimeDatabaseProfile actual = new
MCPJdbcDatabaseProfileLoader().load("logic_db",
createRuntimeDatabaseConfiguration(SupportDatabaseTypeFactoryMocker.createJdbcUrl("MySQL"),
"8.0.32"));
assertThat(actual.getDatabase(), is("logic_db"));
assertThat(actual.getDatabaseType(), is("MySQL"));
assertThat(actual.getDatabaseVersion(), is("8.0.32"));
diff --git
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderSequenceTest.java
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderSequenceTest.java
index fc9782c95c4..0def9521ead 100644
---
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderSequenceTest.java
+++
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/jdbc/MCPJdbcMetadataLoaderSequenceTest.java
@@ -27,7 +27,6 @@ import java.sql.Connection;
import java.sql.Driver;
import java.sql.SQLException;
import java.util.List;
-import java.util.Locale;
import java.util.Map;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -80,7 +79,7 @@ class MCPJdbcMetadataLoaderSequenceTest extends
AbstractMCPJdbcMetadataLoaderTes
@MethodSource("loadSequenceDialectArguments")
void assertLoadWithDialectSequenceMetadata(final String name, final String
databaseType, final String sequenceSchema,
final String sequenceName,
final String sequenceQuery) throws SQLException {
- String jdbcUrl = "jdbc:mock:sequence:" +
databaseType.toLowerCase(Locale.ENGLISH);
+ String jdbcUrl = "jdbc:mock:sequence:" + name.replace(' ', '-');
Driver mockDriver = new MockDriver(jdbcUrl,
createConnectionWithSequenceMetadata(databaseType, sequenceSchema,
sequenceName, sequenceQuery));
try (MockDriverRegistration ignored =
MockDriverRegistration.register(mockDriver)) {
LoadedMetadataCatalog actual = load(Map.of("logic_db", new
RuntimeDatabaseConfiguration(jdbcUrl, "", "", MockDriver.class.getName())));
diff --git
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/query/DatabaseTestDataFactory.java
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/query/DatabaseTestDataFactory.java
index cefefd3d54f..19c73f03d26 100644
---
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/query/DatabaseTestDataFactory.java
+++
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/database/metadata/query/DatabaseTestDataFactory.java
@@ -27,6 +27,7 @@ import
org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSequence
import
org.apache.shardingsphere.mcp.support.database.metadata.model.MCPSchemaMetadata;
import
org.apache.shardingsphere.mcp.support.database.metadata.model.MCPTableMetadata;
import
org.apache.shardingsphere.mcp.support.database.metadata.model.MCPViewMetadata;
+import
org.apache.shardingsphere.mcp.support.fixture.SupportDatabaseTypeFactoryMocker;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
@@ -92,7 +93,7 @@ final class DatabaseTestDataFactory {
when(result.getMetaData()).thenReturn(databaseMetaData);
when(result.createStatement()).thenReturn(statement);
when(databaseMetaData.getDatabaseProductVersion()).thenReturn(databaseMetadata.getDatabaseVersion());
-
when(databaseMetaData.getURL()).thenReturn(getJdbcUrl(databaseMetadata));
+
when(databaseMetaData.getURL()).thenReturn(SupportDatabaseTypeFactoryMocker.createJdbcUrl(databaseMetadata.getDatabaseType()));
when(databaseMetaData.getTables(nullable(String.class),
nullable(String.class), eq("%"), any(String[].class))).thenAnswer(invocation ->
{
String[] tableTypes = invocation.getArgument(3, String[].class);
return createResultSet("TABLE".equals(tableTypes[0]) ?
createTableRows(databaseMetadata) : createViewRows(databaseMetadata));
@@ -106,19 +107,6 @@ final class DatabaseTestDataFactory {
return result;
}
- private static String getJdbcUrl(final MCPDatabaseMetadata
databaseMetadata) {
- switch (databaseMetadata.getDatabaseType()) {
- case "MySQL":
- return String.format("jdbc:mysql://metadata-query/%s",
databaseMetadata.getDatabase());
- case "PostgreSQL":
- return String.format("jdbc:postgresql://metadata-query/%s",
databaseMetadata.getDatabase());
- case "Hive":
- return String.format("jdbc:hive2://metadata-query/%s",
databaseMetadata.getDatabase());
- default:
- throw new
IllegalArgumentException(databaseMetadata.getDatabaseType());
- }
- }
-
private static List<Map<String, String>> createTableRows(final
MCPDatabaseMetadata databaseMetadata) {
List<Map<String, String>> result = new LinkedList<>();
for (MCPSchemaMetadata each : databaseMetadata.getSchemas()) {
diff --git
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/fixture/SupportDatabaseTypeFactoryMocker.java
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/fixture/SupportDatabaseTypeFactoryMocker.java
index c8b4135ef82..bd61508663b 100644
---
a/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/fixture/SupportDatabaseTypeFactoryMocker.java
+++
b/mcp/support/src/test/java/org/apache/shardingsphere/mcp/support/fixture/SupportDatabaseTypeFactoryMocker.java
@@ -26,7 +26,6 @@ import
org.apache.shardingsphere.mcp.support.database.metadata.jdbc.RuntimeDatab
import org.mockito.MockedStatic;
import java.sql.DatabaseMetaData;
-import java.util.Locale;
import java.util.Map;
import java.util.Objects;
@@ -43,6 +42,18 @@ import static org.mockito.Mockito.when;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class SupportDatabaseTypeFactoryMocker {
+ private static final String JDBC_URL_PREFIX = "jdbc:mcp-fixture:";
+
+ /**
+ * Create MCP fixture JDBC URL.
+ *
+ * @param databaseType database type
+ * @return MCP fixture JDBC URL
+ */
+ public static String createJdbcUrl(final String databaseType) {
+ return JDBC_URL_PREFIX + databaseType + ":test";
+ }
+
/**
* Mock database type factory by JDBC connection metadata.
*
@@ -73,38 +84,13 @@ public final class SupportDatabaseTypeFactoryMocker {
}
private static String resolveTypeByURL(final String url) {
- String actualURL = Objects.toString(url,
"").toLowerCase(Locale.ENGLISH);
- if (actualURL.startsWith("jdbc:mysql:")) {
- return "MySQL";
- }
- if (actualURL.startsWith("jdbc:postgresql:")) {
- return "PostgreSQL";
- }
- if (actualURL.startsWith("jdbc:opengauss:")) {
- return "openGauss";
- }
- if (actualURL.startsWith("jdbc:sqlserver:")) {
- return "SQLServer";
- }
- if (actualURL.startsWith("jdbc:mariadb:")) {
- return "MariaDB";
- }
- if (actualURL.startsWith("jdbc:oracle:")) {
- return "Oracle";
- }
- if (actualURL.startsWith("jdbc:clickhouse:")) {
- return "ClickHouse";
- }
- if (actualURL.startsWith("jdbc:hive2:") ||
actualURL.startsWith("jdbc:hive:")) {
- return "Hive";
- }
- if (actualURL.startsWith("jdbc:presto:")) {
- return "Presto";
- }
- if (actualURL.startsWith("jdbc:firebirdsql:")) {
- return "Firebird";
+ String actualURL = Objects.toString(url, "");
+ if (!actualURL.startsWith(JDBC_URL_PREFIX)) {
+ return "";
}
- return "";
+ String databaseType = actualURL.substring(JDBC_URL_PREFIX.length());
+ int delimiterIndex = databaseType.indexOf(':');
+ return -1 == delimiterIndex ? databaseType : databaseType.substring(0,
delimiterIndex);
}
private static DatabaseType mockDatabaseType(final String databaseType) {