You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2026/04/13 01:56:23 UTC
(shardingsphere) branch master updated: Fix DatabaseIdentifierContextFactoryTest (#38614)
This is an automated email from the ASF dual-hosted git repository.
menghaoran 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 be47363cb18 Fix DatabaseIdentifierContextFactoryTest (#38614)
be47363cb18 is described below
commit be47363cb183f8dcaf5c2b1b206b4320276e1d45
Author: Haoran Meng <me...@gmail.com>
AuthorDate: Mon Apr 13 09:56:15 2026 +0800
Fix DatabaseIdentifierContextFactoryTest (#38614)
---
.../DatabaseIdentifierContextFactoryTest.java | 85 ++++++++--------------
1 file changed, 30 insertions(+), 55 deletions(-)
diff --git a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java
index 6b1fee885e9..ff40b6a6fc6 100644
--- a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java
+++ b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/identifier/DatabaseIdentifierContextFactoryTest.java
@@ -25,7 +25,6 @@ import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.config.props.MetadataIdentifierCaseSensitivity;
-import org.apache.shardingsphere.infra.exception.kernel.metadata.AmbiguousIdentifierException;
import org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
import org.apache.shardingsphere.infra.metadata.database.resource.node.StorageNode;
import org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
@@ -59,7 +58,6 @@ import java.util.logging.Logger;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.is;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.assertThrows;
class DatabaseIdentifierContextFactoryTest {
@@ -232,58 +230,58 @@ class DatabaseIdentifierContextFactoryTest {
@ParameterizedTest(name = "{0}")
@MethodSource("createWithMixedStoredCaseSchemaLookupArguments")
void assertCreateFindMixedStoredCaseSchemaIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
- final IdentifierValue lookupIdentifier, final String expectedSchemaName, final String expectedExceptionMessage) {
+ final IdentifierValue lookupIdentifier, final String expectedSchemaName) {
DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.create(protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
IdentifierIndex<String> schemaIndex = createIdentifierIndex(actual, IdentifierScope.SCHEMA, "foo_schema", "FOO_SCHEMA");
- assertFindResult(schemaIndex, lookupIdentifier, expectedSchemaName, expectedExceptionMessage);
+ assertThat(schemaIndex.find(lookupIdentifier), is(getExpectedResult(expectedSchemaName)));
}
@ParameterizedTest(name = "{0}")
@MethodSource("createWithMixedStoredCaseTableLookupArguments")
void assertCreateFindMixedStoredCaseTableIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
- final IdentifierValue lookupIdentifier, final String expectedTableName, final String expectedExceptionMessage) {
+ final IdentifierValue lookupIdentifier, final String expectedTableName) {
DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.create(protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
IdentifierIndex<String> tableIndex = createIdentifierIndex(actual, IdentifierScope.TABLE, "foo_tbl", "FOO_TBL");
- assertFindResult(tableIndex, lookupIdentifier, expectedTableName, expectedExceptionMessage);
+ assertThat(tableIndex.find(lookupIdentifier), is(getExpectedResult(expectedTableName)));
}
@ParameterizedTest(name = "{0}")
@MethodSource("createWithMixedStoredCaseColumnLookupArguments")
void assertCreateFindMixedStoredCaseColumnIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
- final IdentifierValue lookupIdentifier, final String expectedColumnName, final String expectedExceptionMessage) {
+ final IdentifierValue lookupIdentifier, final String expectedColumnName) {
DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.create(protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
IdentifierIndex<String> columnIndex = createIdentifierIndex(actual, IdentifierScope.COLUMN, "foo_col", "FOO_COL");
- assertFindResult(columnIndex, lookupIdentifier, expectedColumnName, expectedExceptionMessage);
+ assertThat(columnIndex.find(lookupIdentifier), is(getExpectedResult(expectedColumnName)));
}
@ParameterizedTest(name = "{0}")
@MethodSource("refreshWithMixedStoredCaseSchemaLookupArguments")
void assertRefreshFindMixedStoredCaseSchemaIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
- final IdentifierValue lookupIdentifier, final String expectedSchemaName, final String expectedExceptionMessage) {
+ final IdentifierValue lookupIdentifier, final String expectedSchemaName) {
DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.createDefault();
DatabaseIdentifierContextFactory.refresh(actual, protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
IdentifierIndex<String> schemaIndex = createIdentifierIndex(actual, IdentifierScope.SCHEMA, "foo_schema", "FOO_SCHEMA");
- assertFindResult(schemaIndex, lookupIdentifier, expectedSchemaName, expectedExceptionMessage);
+ assertThat(schemaIndex.find(lookupIdentifier), is(getExpectedResult(expectedSchemaName)));
}
@ParameterizedTest(name = "{0}")
@MethodSource("refreshWithMixedStoredCaseTableLookupArguments")
void assertRefreshFindMixedStoredCaseTableIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
- final IdentifierValue lookupIdentifier, final String expectedTableName, final String expectedExceptionMessage) {
+ final IdentifierValue lookupIdentifier, final String expectedTableName) {
DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.createDefault();
DatabaseIdentifierContextFactory.refresh(actual, protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
IdentifierIndex<String> tableIndex = createIdentifierIndex(actual, IdentifierScope.TABLE, "foo_tbl", "FOO_TBL");
- assertFindResult(tableIndex, lookupIdentifier, expectedTableName, expectedExceptionMessage);
+ assertThat(tableIndex.find(lookupIdentifier), is(getExpectedResult(expectedTableName)));
}
@ParameterizedTest(name = "{0}")
@MethodSource("refreshWithMixedStoredCaseColumnLookupArguments")
void assertRefreshFindMixedStoredCaseColumnIdentifiers(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
- final IdentifierValue lookupIdentifier, final String expectedColumnName, final String expectedExceptionMessage) {
+ final IdentifierValue lookupIdentifier, final String expectedColumnName) {
DatabaseIdentifierContext actual = DatabaseIdentifierContextFactory.createDefault();
DatabaseIdentifierContextFactory.refresh(actual, protocolType, resourceMetaData, new ConfigurationProperties(new Properties()));
IdentifierIndex<String> columnIndex = createIdentifierIndex(actual, IdentifierScope.COLUMN, "foo_col", "FOO_COL");
- assertFindResult(columnIndex, lookupIdentifier, expectedColumnName, expectedExceptionMessage);
+ assertThat(columnIndex.find(lookupIdentifier), is(getExpectedResult(expectedColumnName)));
}
private static Stream<Arguments> createWithProtocolTypeAndPropsArguments() {
@@ -436,16 +434,6 @@ class DatabaseIdentifierContextFactoryTest {
return null == expectedName ? Optional.empty() : Optional.of(expectedName);
}
- private static void assertFindResult(final IdentifierIndex<String> identifierIndex, final IdentifierValue lookupIdentifier,
- final String expectedName, final String expectedExceptionMessage) {
- if (null == expectedExceptionMessage) {
- assertThat(identifierIndex.find(lookupIdentifier), is(getExpectedResult(expectedName)));
- return;
- }
- AmbiguousIdentifierException actual = assertThrows(AmbiguousIdentifierException.class, () -> identifierIndex.find(lookupIdentifier));
- assertThat(actual.getMessage(), is(expectedExceptionMessage));
- }
-
private static Stream<Arguments> createInsensitiveQuotedExactLookupArguments(final String databaseName, final DatabaseType protocolType,
final ResourceMetaData resourceMetaData, final String lowerActualName,
final String quoteCharacter) {
@@ -540,48 +528,40 @@ class DatabaseIdentifierContextFactoryTest {
final String quoteCharacter) {
String upperActualName = lowerActualName.toUpperCase(Locale.ENGLISH);
return Stream.of(
- createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName, null),
- createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName, null),
- createMixedLookupArgument(databaseName + " treats unquoted lower lookup as ambiguous", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, null,
- createAmbiguousIdentifierMessage(lowerActualName, lowerActualName, upperActualName)),
- createMixedLookupArgument(databaseName + " treats unquoted upper lookup as ambiguous", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, null,
- createAmbiguousIdentifierMessage(upperActualName, lowerActualName, upperActualName)));
+ createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName),
+ createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName),
+ createMixedLookupArgument(databaseName + " finds lower actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, lowerActualName),
+ createMixedLookupArgument(databaseName + " finds upper actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, upperActualName));
}
private static Stream<Arguments> createNormalizedMixedLookupArguments(final String databaseName, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
final String lowerActualName, final String quoteCharacter) {
String upperActualName = lowerActualName.toUpperCase(Locale.ENGLISH);
return Stream.of(
- createMixedLookupArgument(databaseName + " treats quoted lower lookup as ambiguous", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, null,
- createAmbiguousIdentifierMessage(lowerActualName, lowerActualName, upperActualName)),
- createMixedLookupArgument(databaseName + " treats quoted upper lookup as ambiguous", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, null,
- createAmbiguousIdentifierMessage(upperActualName, lowerActualName, upperActualName)),
- createMixedLookupArgument(databaseName + " treats unquoted lower lookup as ambiguous", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, null,
- createAmbiguousIdentifierMessage(lowerActualName, lowerActualName, upperActualName)),
- createMixedLookupArgument(databaseName + " treats unquoted upper lookup as ambiguous", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, null,
- createAmbiguousIdentifierMessage(upperActualName, lowerActualName, upperActualName)));
+ createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName),
+ createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName),
+ createMixedLookupArgument(databaseName + " finds lower actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, lowerActualName),
+ createMixedLookupArgument(databaseName + " finds upper actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, upperActualName));
}
private static Stream<Arguments> createLowerCaseMixedLookupArguments(final String databaseName, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
final String lowerActualName, final String quoteCharacter) {
String upperActualName = lowerActualName.toUpperCase(Locale.ENGLISH);
return Stream.of(
- createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName, null),
- createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName, null),
- createMixedLookupArgument(databaseName + " finds lower actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, lowerActualName, null),
- createMixedLookupArgument(databaseName + " finds lower actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, lowerActualName,
- null));
+ createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName),
+ createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName),
+ createMixedLookupArgument(databaseName + " finds lower actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, lowerActualName),
+ createMixedLookupArgument(databaseName + " finds lower actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, lowerActualName));
}
private static Stream<Arguments> createUpperCaseMixedLookupArguments(final String databaseName, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
final String lowerActualName, final String quoteCharacter) {
String upperActualName = lowerActualName.toUpperCase(Locale.ENGLISH);
return Stream.of(
- createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName, null),
- createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName, null),
- createMixedLookupArgument(databaseName + " finds upper actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, upperActualName, null),
- createMixedLookupArgument(databaseName + " finds upper actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, upperActualName,
- null));
+ createMixedLookupArgument(databaseName + " finds lower actual by quoted lower lookup", protocolType, resourceMetaData, lowerActualName, true, quoteCharacter, lowerActualName),
+ createMixedLookupArgument(databaseName + " finds upper actual by quoted upper lookup", protocolType, resourceMetaData, upperActualName, true, quoteCharacter, upperActualName),
+ createMixedLookupArgument(databaseName + " finds upper actual by unquoted lower lookup", protocolType, resourceMetaData, lowerActualName, false, quoteCharacter, upperActualName),
+ createMixedLookupArgument(databaseName + " finds upper actual by unquoted upper lookup", protocolType, resourceMetaData, upperActualName, false, quoteCharacter, upperActualName));
}
private static Arguments createLookupArgument(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData, final String actualName,
@@ -590,19 +570,14 @@ class DatabaseIdentifierContextFactoryTest {
}
private static Arguments createMixedLookupArgument(final String name, final DatabaseType protocolType, final ResourceMetaData resourceMetaData,
- final String lookupName, final boolean quoted, final String quoteCharacter,
- final String expectedName, final String expectedExceptionMessage) {
- return Arguments.of(name, protocolType, resourceMetaData, createIdentifierValue(lookupName, quoted, quoteCharacter), expectedName, expectedExceptionMessage);
+ final String lookupName, final boolean quoted, final String quoteCharacter, final String expectedName) {
+ return Arguments.of(name, protocolType, resourceMetaData, createIdentifierValue(lookupName, quoted, quoteCharacter), expectedName);
}
private static IdentifierValue createIdentifierValue(final String lookupName, final boolean quoted, final String quoteCharacter) {
return new IdentifierValue(quoted ? quoteCharacter + lookupName + quoteCharacter : lookupName);
}
- private static String createAmbiguousIdentifierMessage(final String identifierName, final String lowerActualName, final String upperActualName) {
- return String.format("Identifier '%s' is ambiguous, matched actual identifiers: %s, %s.", identifierName, lowerActualName, upperActualName);
- }
-
private static ResourceMetaData createResourceMetaDataWithFirstDataSource() {
return createResourceMetaDataWithStorageUrls("jdbc:mysql://localhost:3306/foo_db");
}