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 7161cc50039 Refactor rule builder tests to simplify service retrieval
and assertions (#37291)
7161cc50039 is described below
commit 7161cc50039637d5edbdd92876ad9d9bf5768064
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Dec 7 15:04:11 2025 +0800
Refactor rule builder tests to simplify service retrieval and assertions
(#37291)
* Refactor rule builder tests to simplify service retrieval and assertions
* Refactor rule builder tests to simplify service retrieval and assertions
* Refactor rule builder tests to simplify service retrieval and assertions
---
.../rule/builder/AuthorityRuleBuilderTest.java | 7 +-
.../rule/builder/GlobalClockRuleBuilderTest.java | 7 +-
.../engine/SQLFederationEngineTest.java | 357 ++++++++++++++++++++-
.../rule/builder/SQLFederationRuleBuilderTest.java | 7 +-
.../rule/builder/SQLParserRuleBuilderTest.java | 7 +-
.../rule/builder/SQLTranslatorRuleBuilderTest.java | 7 +-
.../builder/TimestampServiceRuleBuilderTest.java | 7 +-
.../rule/builder/TransactionRuleBuilderTest.java | 7 +-
8 files changed, 355 insertions(+), 51 deletions(-)
diff --git
a/kernel/authority/core/src/test/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilderTest.java
b/kernel/authority/core/src/test/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilderTest.java
index 6189cce0b69..951ceaad937 100644
---
a/kernel/authority/core/src/test/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilderTest.java
+++
b/kernel/authority/core/src/test/java/org/apache/shardingsphere/authority/rule/builder/AuthorityRuleBuilderTest.java
@@ -20,13 +20,11 @@ package org.apache.shardingsphere.authority.rule.builder;
import org.apache.shardingsphere.authority.config.AuthorityRuleConfiguration;
import org.apache.shardingsphere.authority.rule.AuthorityRule;
import
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
-import
org.apache.shardingsphere.infra.config.rule.scope.GlobalRuleConfiguration;
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRuleBuilder;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import org.junit.jupiter.api.Test;
import java.util.Collections;
-import java.util.Map;
import java.util.Properties;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -34,11 +32,10 @@ import static org.hamcrest.Matchers.isA;
class AuthorityRuleBuilderTest {
- @SuppressWarnings({"rawtypes", "unchecked"})
@Test
void assertBuild() {
AuthorityRuleConfiguration ruleConfig = new
AuthorityRuleConfiguration(Collections.emptyList(), new
AlgorithmConfiguration("FIXTURE", new Properties()), Collections.emptyMap(),
"FIXTURE");
- Map<GlobalRuleConfiguration, GlobalRuleBuilder> builders =
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig));
- assertThat(builders.get(ruleConfig).build(ruleConfig,
Collections.emptyList(), null), isA(AuthorityRule.class));
+ AuthorityRuleBuilder builder = (AuthorityRuleBuilder)
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig)).get(ruleConfig);
+ assertThat(builder.build(ruleConfig, Collections.emptyList(), null),
isA(AuthorityRule.class));
}
}
diff --git
a/kernel/global-clock/core/src/test/java/org/apache/shardingsphere/globalclock/rule/builder/GlobalClockRuleBuilderTest.java
b/kernel/global-clock/core/src/test/java/org/apache/shardingsphere/globalclock/rule/builder/GlobalClockRuleBuilderTest.java
index 9039967f30c..b9db5f17376 100644
---
a/kernel/global-clock/core/src/test/java/org/apache/shardingsphere/globalclock/rule/builder/GlobalClockRuleBuilderTest.java
+++
b/kernel/global-clock/core/src/test/java/org/apache/shardingsphere/globalclock/rule/builder/GlobalClockRuleBuilderTest.java
@@ -19,13 +19,11 @@ package org.apache.shardingsphere.globalclock.rule.builder;
import
org.apache.shardingsphere.globalclock.config.GlobalClockRuleConfiguration;
import org.apache.shardingsphere.globalclock.rule.GlobalClockRule;
-import
org.apache.shardingsphere.infra.config.rule.scope.GlobalRuleConfiguration;
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRuleBuilder;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import org.junit.jupiter.api.Test;
import java.util.Collections;
-import java.util.Map;
import java.util.Properties;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -33,11 +31,10 @@ import static org.hamcrest.Matchers.isA;
class GlobalClockRuleBuilderTest {
- @SuppressWarnings({"rawtypes", "unchecked"})
@Test
void assertBuild() {
GlobalClockRuleConfiguration ruleConfig = new
GlobalClockRuleConfiguration("FIXTURE", "FIXTURE", false, new Properties());
- Map<GlobalRuleConfiguration, GlobalRuleBuilder> builders =
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig));
- assertThat(builders.get(ruleConfig).build(ruleConfig,
Collections.emptyList(), null), isA(GlobalClockRule.class));
+ GlobalClockRuleBuilder builder = (GlobalClockRuleBuilder)
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig)).get(ruleConfig);
+ assertThat(builder.build(ruleConfig, Collections.emptyList(), null),
isA(GlobalClockRule.class));
}
}
diff --git
a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngineTest.java
b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngineTest.java
index fc0775cec88..be220cab6cc 100644
---
a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngineTest.java
+++
b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/engine/SQLFederationEngineTest.java
@@ -17,53 +17,103 @@
package org.apache.shardingsphere.sqlfederation.engine;
+import org.apache.calcite.plan.Convention;
+import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.schema.SchemaPlus;
+import org.apache.calcite.sql.SqlExplainLevel;
import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import
org.apache.shardingsphere.infra.binder.context.segment.table.TablesContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext;
+import
org.apache.shardingsphere.infra.binder.context.statement.type.dal.ExplainStatementContext;
import
org.apache.shardingsphere.infra.binder.context.statement.type.dml.SelectStatementContext;
+import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
+import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
+import
org.apache.shardingsphere.infra.exception.kernel.connection.SQLExecutionInterruptedException;
+import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutor;
+import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutorCallback;
+import
org.apache.shardingsphere.infra.executor.sql.execute.result.ExecuteResult;
+import
org.apache.shardingsphere.infra.executor.sql.prepare.driver.DriverExecutionPrepareEngine;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
+import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
import
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
+import org.apache.shardingsphere.infra.metadata.user.Grantee;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
import org.apache.shardingsphere.infra.session.query.QueryContext;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.OwnerSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.bound.TableSegmentBoundInfo;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dal.ExplainStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.table.CreateTableStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
+import
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
+import
org.apache.shardingsphere.sqlfederation.compiler.SQLFederationCompilerEngine;
+import
org.apache.shardingsphere.sqlfederation.compiler.SQLFederationExecutionPlan;
+import
org.apache.shardingsphere.sqlfederation.compiler.exception.SQLFederationUnsupportedSQLException;
+import
org.apache.shardingsphere.sqlfederation.compiler.planner.cache.ExecutionPlanCacheKey;
+import
org.apache.shardingsphere.sqlfederation.compiler.rel.converter.SQLFederationRelConverter;
import org.apache.shardingsphere.sqlfederation.config.SQLFederationCacheOption;
import
org.apache.shardingsphere.sqlfederation.config.SQLFederationRuleConfiguration;
+import org.apache.shardingsphere.sqlfederation.context.SQLFederationContext;
import
org.apache.shardingsphere.sqlfederation.engine.fixture.rule.SQLFederationDeciderRuleMatchFixture;
import
org.apache.shardingsphere.sqlfederation.engine.fixture.rule.SQLFederationDeciderRuleNotMatchFixture;
+import
org.apache.shardingsphere.sqlfederation.engine.processor.SQLFederationProcessor;
+import
org.apache.shardingsphere.sqlfederation.engine.processor.SQLFederationProcessorFactory;
import org.apache.shardingsphere.sqlfederation.rule.SQLFederationRule;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Answers;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
+import org.mockito.MockedConstruction;
+import org.mockito.MockedStatic;
import org.mockito.junit.jupiter.MockitoExtension;
+import java.sql.Connection;
+import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.LinkedList;
+import java.util.Properties;
import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertSame;
+import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.mockConstruction;
+import static org.mockito.Mockito.mockStatic;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@ExtendWith(MockitoExtension.class)
class SQLFederationEngineTest {
- private final DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, "MySQL");
+ private final DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, "FIXTURE");
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private ShardingSphereMetaData metaData;
@Test
void assertDecideWhenNotConfigSqlFederationEnabled() throws SQLException {
- Collection<ShardingSphereRule> globalRules =
- Collections
- .singletonList(new SQLFederationRule(new
SQLFederationRuleConfiguration(false, false, new SQLFederationCacheOption(1,
1)), Collections.emptyList()));
+ Collection<ShardingSphereRule> globalRules = Collections.singleton(
+ new SQLFederationRule(new
SQLFederationRuleConfiguration(false, false, new SQLFederationCacheOption(1,
1)), Collections.emptyList()));
SQLFederationEngine engine = createSQLFederationEngine(globalRules,
Collections.emptyList());
RuleMetaData globalRuleMetaData = new RuleMetaData(globalRules);
assertFalse(engine.decide(mock(QueryContext.class),
globalRuleMetaData));
@@ -78,8 +128,8 @@ class SQLFederationEngineTest {
@Test
void assertDecideWhenConfigAllQueryUseSQLFederation() throws SQLException {
- Collection<ShardingSphereRule> globalRules =
- Collections.singletonList(new SQLFederationRule(new
SQLFederationRuleConfiguration(true, true, new SQLFederationCacheOption(1, 1)),
Collections.emptyList()));
+ Collection<ShardingSphereRule> globalRules = Collections.singleton(
+ new SQLFederationRule(new SQLFederationRuleConfiguration(true,
true, new SQLFederationCacheOption(1, 1)), Collections.emptyList()));
SelectStatementContext selectStatementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
when(selectStatementContext.getSqlStatement().getDatabaseType()).thenReturn(databaseType);
when(selectStatementContext.getTablesContext().getDatabaseNames()).thenReturn(Collections.emptyList());
@@ -93,8 +143,8 @@ class SQLFederationEngineTest {
@Test
void assertDecideWhenExecuteNotSelectStatement() throws SQLException {
- Collection<ShardingSphereRule> globalRules =
- Collections.singletonList(new SQLFederationRule(new
SQLFederationRuleConfiguration(true, false, new SQLFederationCacheOption(1,
1)), Collections.emptyList()));
+ Collection<ShardingSphereRule> globalRules = Collections.singleton(
+ new SQLFederationRule(new SQLFederationRuleConfiguration(true,
false, new SQLFederationCacheOption(1, 1)), Collections.emptyList()));
SQLFederationEngine engine = createSQLFederationEngine(globalRules,
Collections.emptyList());
RuleMetaData globalRuleMetaData = new RuleMetaData(globalRules);
QueryContext queryContext = mock(QueryContext.class,
RETURNS_DEEP_STUBS);
@@ -105,9 +155,9 @@ class SQLFederationEngineTest {
@Test
void assertDecideWhenConfigSingleMatchedRule() throws SQLException {
- Collection<ShardingSphereRule> globalRules =
- Collections.singletonList(new SQLFederationRule(new
SQLFederationRuleConfiguration(true, false, new SQLFederationCacheOption(1,
1)), Collections.emptyList()));
- Collection<ShardingSphereRule> databaseRules =
Collections.singletonList(new SQLFederationDeciderRuleMatchFixture());
+ Collection<ShardingSphereRule> globalRules = Collections.singleton(
+ new SQLFederationRule(new SQLFederationRuleConfiguration(true,
false, new SQLFederationCacheOption(1, 1)), Collections.emptyList()));
+ Collection<ShardingSphereRule> databaseRules =
Collections.singleton(new SQLFederationDeciderRuleMatchFixture());
ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db",
databaseType, mock(ResourceMetaData.class,
RETURNS_DEEP_STUBS), new RuleMetaData(globalRules), Collections.emptyList());
SelectStatementContext selectStatementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
@@ -124,11 +174,10 @@ class SQLFederationEngineTest {
@Test
void assertDecideWhenConfigSingleNotMatchedRule() throws SQLException {
- Collection<ShardingSphereRule> globalRules =
- Collections.singletonList(new SQLFederationRule(new
SQLFederationRuleConfiguration(true, false, new SQLFederationCacheOption(1,
1)), Collections.emptyList()));
- Collection<ShardingSphereRule> databaseRules =
Collections.singletonList(new SQLFederationDeciderRuleNotMatchFixture());
- ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db",
- databaseType, mock(ResourceMetaData.class,
RETURNS_DEEP_STUBS), new RuleMetaData(databaseRules), Collections.emptyList());
+ Collection<ShardingSphereRule> globalRules = Collections.singleton(
+ new SQLFederationRule(new SQLFederationRuleConfiguration(true,
false, new SQLFederationCacheOption(1, 1)), Collections.emptyList()));
+ Collection<ShardingSphereRule> databaseRules =
Collections.singleton(new SQLFederationDeciderRuleNotMatchFixture());
+ ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db",
databaseType, mock(), new RuleMetaData(databaseRules), Collections.emptyList());
SelectStatementContext selectStatementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
when(selectStatementContext.getSqlStatement().getDatabaseType()).thenReturn(databaseType);
when(selectStatementContext.getTablesContext().getDatabaseNames()).thenReturn(Collections.singleton("foo_db"));
@@ -159,4 +208,280 @@ class SQLFederationEngineTest {
assertTrue(engine.decide(queryContext, new RuleMetaData(globalRules)));
engine.close();
}
+
+ @Test
+ void assertDecideWithMultipleDatabases() throws SQLException {
+ Collection<ShardingSphereRule> globalRules =
+ Collections.singletonList(new SQLFederationRule(new
SQLFederationRuleConfiguration(true, false, new SQLFederationCacheOption(1,
1)), Collections.emptyList()));
+ SelectStatementContext selectStatementContext =
mock(SelectStatementContext.class, RETURNS_DEEP_STUBS);
+
when(selectStatementContext.getSqlStatement().getDatabaseType()).thenReturn(databaseType);
+
when(selectStatementContext.getTablesContext().getDatabaseNames()).thenReturn(new
LinkedList<>(Arrays.asList("foo_db", "bar_db")));
+ QueryContext queryContext = mock(QueryContext.class);
+
when(queryContext.getSqlStatementContext()).thenReturn(selectStatementContext);
+ SQLFederationEngine engine = createSQLFederationEngine(globalRules,
Collections.emptyList());
+ assertTrue(engine.decide(queryContext, new RuleMetaData(globalRules)));
+ engine.close();
+ }
+
+ @Test
+ void assertDecideWithExplainStatement() throws SQLException {
+ Collection<ShardingSphereRule> globalRules = Collections.singleton(
+ new SQLFederationRule(new SQLFederationRuleConfiguration(true,
false, new SQLFederationCacheOption(1, 1)), Collections.emptyList()));
+ ExplainStatementContext explainStatementContext =
mock(ExplainStatementContext.class, RETURNS_DEEP_STUBS);
+ ExplainStatement explainStatement = mock(ExplainStatement.class,
RETURNS_DEEP_STUBS);
+ SelectStatement selectStatement = mock(SelectStatement.class);
+
when(explainStatement.getExplainableSQLStatement()).thenReturn(selectStatement);
+
when(explainStatementContext.getSqlStatement()).thenReturn(explainStatement);
+
when(explainStatementContext.getTablesContext().getDatabaseNames()).thenReturn(Collections.emptyList());
+ QueryContext queryContext = mock(QueryContext.class);
+
when(queryContext.getSqlStatementContext()).thenReturn(explainStatementContext);
+ SQLFederationEngine engine = createSQLFederationEngine(globalRules,
Collections.emptyList());
+ assertFalse(engine.decide(queryContext, new
RuleMetaData(globalRules)));
+ engine.close();
+ }
+
+ @Test
+ void assertExecuteQueryWithLoggingAndRelease() throws SQLException {
+ Properties props = new Properties();
+ props.setProperty(ConfigurationPropertyKey.SQL_SHOW.getKey(),
Boolean.TRUE.toString());
+ SQLFederationRuleConfiguration config = new
SQLFederationRuleConfiguration(true, false, new SQLFederationCacheOption(1, 1));
+ ShardingSphereTable table = new ShardingSphereTable("t_order",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
+ ShardingSphereMetaData actualMetaData = createMetaData(config,
Collections.emptyList(), Collections.singleton(table),
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), props);
+ SQLFederationProcessor processor = mock(SQLFederationProcessor.class);
+ when(processor.getConvention()).thenReturn(mock(Convention.class));
+ ShardingSphereStatistics statistics =
mock(ShardingSphereStatistics.class);
+ JDBCExecutor jdbcExecutor = mock(JDBCExecutor.class);
+ SQLFederationEngine engine = createEngineWithProcessor(processor,
actualMetaData, statistics, jdbcExecutor);
+ SimpleTableSegment simpleTableSegment = new SimpleTableSegment(new
TableNameSegment(0, 0, new IdentifierValue("t_order")));
+ TablesContext tablesContext = mock(TablesContext.class);
+
when(tablesContext.getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
+ SelectStatement selectStatement = mock(SelectStatement.class);
+
when(selectStatement.getDatabaseType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL"));
+ SQLStatementContext selectStatementContext =
mock(SQLStatementContext.class, RETURNS_DEEP_STUBS);
+
when(selectStatementContext.getSqlStatement()).thenReturn(selectStatement,
selectStatement, selectStatement, selectStatement,
mock(CreateTableStatement.class));
+
when(selectStatementContext.getTablesContext()).thenReturn(tablesContext);
+ ExplainStatementContext explainStatementContext =
mock(ExplainStatementContext.class, RETURNS_DEEP_STUBS);
+ ExplainStatement explainStatement = mock(ExplainStatement.class,
RETURNS_DEEP_STUBS);
+
when(explainStatement.getExplainableSQLStatement()).thenReturn(selectStatement);
+
when(explainStatementContext.getSqlStatement()).thenReturn(explainStatement);
+
when(explainStatementContext.getExplainableSQLStatementContext()).thenReturn(selectStatementContext);
+ QueryContext queryContext = mock(QueryContext.class);
+
when(queryContext.getSqlStatementContext()).thenReturn(explainStatementContext);
+ when(queryContext.getSql()).thenReturn("SELECT * FROM t_order");
+ when(queryContext.getParameters()).thenReturn(Collections.emptyList());
+ ConnectionContext connectionContext = new
ConnectionContext(Collections::emptyList, new Grantee("root", "localhost"));
+ connectionContext.setCurrentDatabaseName("foo_db");
+
when(queryContext.getConnectionContext()).thenReturn(connectionContext);
+ SQLFederationContext federationContext = new
SQLFederationContext(false, queryContext, actualMetaData, "process_1");
+ DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = mock(DriverExecutionPrepareEngine.class);
+ JDBCExecutorCallback<? extends ExecuteResult> callback =
mock(JDBCExecutorCallback.class);
+ ResultSet resultSet = mock(ResultSet.class);
+ when(processor.executePlan(eq(prepareEngine), eq(callback),
any(SQLFederationExecutionPlan.class), any(SQLFederationRelConverter.class),
eq(federationContext), any())).thenReturn(resultSet);
+ SQLFederationExecutionPlan executionPlan =
mock(SQLFederationExecutionPlan.class);
+ when(executionPlan.getPhysicalPlan()).thenReturn(mock(RelNode.class));
+ try (
+ MockedConstruction<SQLFederationRelConverter> converterMocked
= mockConstruction(SQLFederationRelConverter.class,
+ (mock, context) ->
when(mock.getSchemaPlus()).thenReturn(mock(SchemaPlus.class)));
+ MockedConstruction<SQLFederationCompilerEngine> compilerMocked
= mockConstruction(SQLFederationCompilerEngine.class,
+ (mock, context) ->
when(mock.compile(any(ExecutionPlanCacheKey.class),
eq(false))).thenReturn(executionPlan));
+ MockedStatic<RelOptUtil> relOptUtil =
mockStatic(RelOptUtil.class)) {
+ relOptUtil.when(() -> RelOptUtil.toString(any(RelNode.class),
eq(SqlExplainLevel.ALL_ATTRIBUTES))).thenReturn("plan");
+ assertSame(resultSet, engine.executeQuery(prepareEngine, callback,
federationContext));
+ ArgumentCaptor<ExecutionPlanCacheKey> cacheKeyCaptor =
ArgumentCaptor.forClass(ExecutionPlanCacheKey.class);
+
verify(compilerMocked.constructed().get(0)).compile(cacheKeyCaptor.capture(),
eq(false));
+ Assertions.assertEquals(1,
cacheKeyCaptor.getValue().getTableMetaDataVersions().size());
+ assertSame(resultSet, engine.getResultSet());
+ engine.close();
+ verify(processor).release("foo_db", "foo_schema", queryContext,
converterMocked.constructed().get(0).getSchemaPlus());
+ }
+ }
+
+ @Test
+ void assertExecuteQueryWithParametersAndOwner() {
+ Properties props = new Properties();
+ props.setProperty(ConfigurationPropertyKey.SQL_SHOW.getKey(),
Boolean.TRUE.toString());
+ SQLFederationRuleConfiguration config = new
SQLFederationRuleConfiguration(true, false, new SQLFederationCacheOption(1, 1));
+ ShardingSphereTable table = new ShardingSphereTable("t_order",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
+ ShardingSphereMetaData actualMetaData = createMetaData(config,
Collections.emptyList(), Collections.singleton(table),
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), props);
+ SQLFederationProcessor processor = mock(SQLFederationProcessor.class);
+ when(processor.getConvention()).thenReturn(mock(Convention.class));
+ final SQLFederationEngine engine =
createEngineWithProcessor(processor, actualMetaData,
mock(ShardingSphereStatistics.class), mock(JDBCExecutor.class));
+ TableNameSegment tableNameSegment = new TableNameSegment(0, 0, new
IdentifierValue("t_order"));
+ tableNameSegment.setTableBoundInfo(new TableSegmentBoundInfo(new
IdentifierValue("foo_db"), new IdentifierValue("foo_schema")));
+ SimpleTableSegment simpleTableSegment = new
SimpleTableSegment(tableNameSegment);
+ simpleTableSegment.setOwner(new OwnerSegment(0, 0, new
IdentifierValue("foo_schema")));
+ TablesContext tablesContext = mock(TablesContext.class);
+
when(tablesContext.getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
+ SelectStatement selectStatement = mock(SelectStatement.class);
+
when(selectStatement.getDatabaseType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL"));
+ SQLStatementContext selectStatementContext =
mock(SQLStatementContext.class, RETURNS_DEEP_STUBS);
+
when(selectStatementContext.getSqlStatement()).thenReturn(selectStatement,
selectStatement, selectStatement, mock(CreateTableStatement.class));
+
when(selectStatementContext.getTablesContext()).thenReturn(tablesContext);
+ QueryContext queryContext = mock(QueryContext.class);
+
when(queryContext.getSqlStatementContext()).thenReturn(selectStatementContext);
+ when(queryContext.getSql()).thenReturn("SELECT * FROM t_order");
+
when(queryContext.getParameters()).thenReturn(Collections.singletonList(1));
+ when(queryContext.getConnectionContext()).thenReturn(new
ConnectionContext(Collections::emptyList, new Grantee("root", "localhost")));
+ SQLFederationContext federationContext = new
SQLFederationContext(false, queryContext, actualMetaData, "process_2");
+ DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = mock(DriverExecutionPrepareEngine.class);
+ JDBCExecutorCallback<? extends ExecuteResult> callback =
mock(JDBCExecutorCallback.class);
+ ResultSet resultSet = mock(ResultSet.class);
+ when(processor.executePlan(eq(prepareEngine), eq(callback),
any(SQLFederationExecutionPlan.class), any(SQLFederationRelConverter.class),
eq(federationContext), any())).thenReturn(resultSet);
+ SQLFederationExecutionPlan executionPlan =
mock(SQLFederationExecutionPlan.class);
+ when(executionPlan.getPhysicalPlan()).thenReturn(mock(RelNode.class));
+ try (
+ MockedConstruction<SQLFederationRelConverter> ignoredConverter
= mockConstruction(SQLFederationRelConverter.class,
+ (mock, context) ->
when(mock.getSchemaPlus()).thenReturn(mock(SchemaPlus.class)));
+ MockedConstruction<SQLFederationCompilerEngine>
ignoredCompiler = mockConstruction(SQLFederationCompilerEngine.class,
+ (mock, context) ->
when(mock.compile(any(ExecutionPlanCacheKey.class),
eq(false))).thenReturn(executionPlan));
+ MockedStatic<RelOptUtil> relOptUtil =
mockStatic(RelOptUtil.class)) {
+ relOptUtil.when(() -> RelOptUtil.toString(any(RelNode.class),
eq(SqlExplainLevel.ALL_ATTRIBUTES))).thenReturn("plan");
+ engine.executeQuery(prepareEngine, callback, federationContext);
+ assertNull(engine.getResultSet());
+ }
+ }
+
+ @Test
+ void assertExecuteQueryWithMissingTableThrowsUnsupported() {
+ Properties props = new Properties();
+ props.setProperty(ConfigurationPropertyKey.SQL_SHOW.getKey(),
Boolean.FALSE.toString());
+ SQLFederationRuleConfiguration config = new
SQLFederationRuleConfiguration(true, false, new SQLFederationCacheOption(1, 1));
+ ShardingSphereMetaData actualMetaData = createMetaData(config,
Collections.emptyList(), Collections.emptyList(), databaseType, props);
+ SQLFederationProcessor processor = mock(SQLFederationProcessor.class);
+ when(processor.getConvention()).thenReturn(mock(Convention.class));
+ final SQLFederationEngine engine =
createEngineWithProcessor(processor, actualMetaData,
mock(ShardingSphereStatistics.class), mock(JDBCExecutor.class));
+ SimpleTableSegment simpleTableSegment = new SimpleTableSegment(new
TableNameSegment(0, 0, new IdentifierValue("t_order")));
+ TablesContext tablesContext = mock(TablesContext.class);
+
when(tablesContext.getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
+ SelectStatement selectStatement = mock(SelectStatement.class);
+ when(selectStatement.getDatabaseType()).thenReturn(databaseType);
+ SQLStatementContext selectStatementContext =
mock(SQLStatementContext.class, RETURNS_DEEP_STUBS);
+
when(selectStatementContext.getSqlStatement()).thenReturn(selectStatement);
+
when(selectStatementContext.getTablesContext()).thenReturn(tablesContext);
+ QueryContext queryContext = mock(QueryContext.class);
+
when(queryContext.getSqlStatementContext()).thenReturn(selectStatementContext);
+ when(queryContext.getSql()).thenReturn("SELECT * FROM t_order");
+ when(queryContext.getParameters()).thenReturn(Collections.emptyList());
+ when(queryContext.getConnectionContext()).thenReturn(new
ConnectionContext(Collections::emptyList, new Grantee("root", "localhost")));
+ SQLFederationContext federationContext = new
SQLFederationContext(false, queryContext, actualMetaData, "process_3");
+ DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = mock(DriverExecutionPrepareEngine.class);
+ JDBCExecutorCallback<? extends ExecuteResult> callback =
mock(JDBCExecutorCallback.class);
+ assertThrows(SQLFederationUnsupportedSQLException.class, () -> {
+ try (
+ MockedConstruction<SQLFederationRelConverter> ignored =
mockConstruction(SQLFederationRelConverter.class,
+ (mock, context) ->
when(mock.getSchemaPlus()).thenReturn(mock(SchemaPlus.class)))) {
+ engine.executeQuery(prepareEngine, callback,
federationContext);
+ }
+ });
+ }
+
+ @Test
+ void assertExecuteQueryWhenExecutionInterrupted() {
+ Properties props = new Properties();
+ props.setProperty(ConfigurationPropertyKey.SQL_SHOW.getKey(),
Boolean.FALSE.toString());
+ SQLFederationRuleConfiguration config = new
SQLFederationRuleConfiguration(true, false, new SQLFederationCacheOption(1, 1));
+ ShardingSphereTable table = new ShardingSphereTable("t_order",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
+ ShardingSphereMetaData actualMetaData = createMetaData(config,
Collections.emptyList(), Collections.singleton(table), databaseType, props);
+ SQLFederationProcessor processor = mock(SQLFederationProcessor.class);
+ when(processor.getConvention()).thenReturn(mock(Convention.class));
+ SimpleTableSegment simpleTableSegment = new SimpleTableSegment(new
TableNameSegment(0, 0, new IdentifierValue("t_order")));
+ TablesContext tablesContext = mock(TablesContext.class);
+
when(tablesContext.getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
+ SelectStatement selectStatement = mock(SelectStatement.class);
+ when(selectStatement.getDatabaseType()).thenReturn(databaseType);
+ SQLStatementContext selectStatementContext =
mock(SQLStatementContext.class, RETURNS_DEEP_STUBS);
+
when(selectStatementContext.getSqlStatement()).thenReturn(selectStatement);
+
when(selectStatementContext.getTablesContext()).thenReturn(tablesContext);
+ QueryContext queryContext = mock(QueryContext.class);
+
when(queryContext.getSqlStatementContext()).thenReturn(selectStatementContext);
+ when(queryContext.getSql()).thenReturn("SELECT * FROM t_order");
+ when(queryContext.getParameters()).thenReturn(Collections.emptyList());
+ when(queryContext.getConnectionContext()).thenReturn(new
ConnectionContext(Collections::emptyList, new Grantee("root", "localhost")));
+ SQLFederationContext federationContext = new
SQLFederationContext(false, queryContext, actualMetaData, "process_4");
+ DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = mock(DriverExecutionPrepareEngine.class);
+ JDBCExecutorCallback<? extends ExecuteResult> callback =
mock(JDBCExecutorCallback.class);
+ SQLFederationExecutionPlan executionPlan =
mock(SQLFederationExecutionPlan.class);
+ SQLFederationEngine engine = createEngineWithProcessor(processor,
actualMetaData, mock(ShardingSphereStatistics.class), mock(JDBCExecutor.class));
+ assertThrows(SQLExecutionInterruptedException.class, () ->
executeWithInterruptedPlan(engine, processor, prepareEngine, callback,
federationContext, executionPlan));
+ }
+
+ @Test
+ void assertCloseCollectsSQLException() throws SQLException {
+ Properties props = new Properties();
+ props.setProperty(ConfigurationPropertyKey.SQL_SHOW.getKey(),
Boolean.TRUE.toString());
+ SQLFederationRuleConfiguration config = new
SQLFederationRuleConfiguration(true, false, new SQLFederationCacheOption(1,
1L));
+ ShardingSphereTable table = new ShardingSphereTable("t_order",
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
+ ShardingSphereMetaData actualMetaData = createMetaData(config,
Collections.emptyList(), Collections.singleton(table),
TypedSPILoader.getService(DatabaseType.class, "PostgreSQL"), props);
+ SQLFederationProcessor processor = mock(SQLFederationProcessor.class);
+ when(processor.getConvention()).thenReturn(mock(Convention.class));
+ SQLFederationEngine engine = createEngineWithProcessor(processor,
actualMetaData, mock(ShardingSphereStatistics.class), mock(JDBCExecutor.class));
+ SimpleTableSegment simpleTableSegment = new SimpleTableSegment(new
TableNameSegment(0, 0, new IdentifierValue("t_order")));
+ TablesContext tablesContext = mock(TablesContext.class);
+
when(tablesContext.getSimpleTables()).thenReturn(Collections.singleton(simpleTableSegment));
+ SelectStatement selectStatement = mock(SelectStatement.class);
+
when(selectStatement.getDatabaseType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL"));
+ SQLStatementContext selectStatementContext =
mock(SQLStatementContext.class, RETURNS_DEEP_STUBS);
+
when(selectStatementContext.getSqlStatement()).thenReturn(selectStatement,
selectStatement);
+
when(selectStatementContext.getTablesContext()).thenReturn(tablesContext);
+ QueryContext queryContext = mock(QueryContext.class);
+
when(queryContext.getSqlStatementContext()).thenReturn(selectStatementContext);
+ when(queryContext.getSql()).thenReturn("SELECT * FROM t_order");
+ when(queryContext.getParameters()).thenReturn(Collections.emptyList());
+ when(queryContext.getConnectionContext()).thenReturn(new
ConnectionContext(Collections::emptyList, new Grantee("root", "localhost")));
+ SQLFederationContext federationContext = new
SQLFederationContext(false, queryContext, actualMetaData, "process_5");
+ DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = mock(DriverExecutionPrepareEngine.class);
+ JDBCExecutorCallback<? extends ExecuteResult> callback =
mock(JDBCExecutorCallback.class);
+ ResultSet resultSet = mock(ResultSet.class);
+ doThrow(new SQLException("close error")).when(resultSet).close();
+ when(processor.executePlan(eq(prepareEngine), eq(callback),
any(SQLFederationExecutionPlan.class), any(SQLFederationRelConverter.class),
eq(federationContext), any())).thenReturn(resultSet);
+ SQLFederationExecutionPlan executionPlan =
mock(SQLFederationExecutionPlan.class);
+ when(executionPlan.getPhysicalPlan()).thenReturn(mock(RelNode.class));
+ try (
+ MockedConstruction<SQLFederationRelConverter> ignored =
mockConstruction(SQLFederationRelConverter.class,
+ (mock, context) ->
when(mock.getSchemaPlus()).thenReturn(mock(SchemaPlus.class)));
+ MockedConstruction<SQLFederationCompilerEngine>
ignoredCompiler = mockConstruction(SQLFederationCompilerEngine.class,
+ (mock, context) ->
when(mock.compile(any(ExecutionPlanCacheKey.class),
eq(false))).thenReturn(executionPlan));
+ MockedStatic<RelOptUtil> relOptUtil =
mockStatic(RelOptUtil.class)) {
+ relOptUtil.when(() -> RelOptUtil.toString(any(RelNode.class),
eq(SqlExplainLevel.ALL_ATTRIBUTES))).thenReturn("plan");
+ engine.executeQuery(prepareEngine, callback, federationContext);
+ SQLException actual = assertThrows(SQLException.class,
engine::close);
+ Assertions.assertEquals("close error",
actual.getNextException().getMessage());
+ verify(processor).release(eq("foo_db"), eq("foo_schema"),
eq(queryContext), any());
+ }
+ }
+
+ private void executeWithInterruptedPlan(final SQLFederationEngine engine,
final SQLFederationProcessor processor,
+ final
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection> prepareEngine,
+ final JDBCExecutorCallback<?
extends ExecuteResult> callback, final SQLFederationContext federationContext,
+ final SQLFederationExecutionPlan
executionPlan) {
+ try (
+ MockedConstruction<SQLFederationRelConverter> ignored =
mockConstruction(SQLFederationRelConverter.class,
+ (mock, context) ->
when(mock.getSchemaPlus()).thenReturn(mock(SchemaPlus.class)));
+ MockedConstruction<SQLFederationCompilerEngine>
ignoredCompiler = mockConstruction(SQLFederationCompilerEngine.class,
+ (mock, context) ->
when(mock.compile(any(ExecutionPlanCacheKey.class),
eq(false))).thenReturn(executionPlan))) {
+ when(processor.executePlan(eq(prepareEngine), eq(callback),
eq(executionPlan), any(SQLFederationRelConverter.class), eq(federationContext),
any()))
+ .thenThrow(new SQLExecutionInterruptedException());
+ engine.executeQuery(prepareEngine, callback, federationContext);
+ }
+ }
+
+ private ShardingSphereMetaData createMetaData(final
SQLFederationRuleConfiguration config, final Collection<ShardingSphereRule>
databaseRules,
+ final
Collection<ShardingSphereTable> tables, final DatabaseType protocolType, final
Properties props) {
+ ShardingSphereSchema schema = new ShardingSphereSchema("foo_schema",
tables, Collections.emptyList());
+ ResourceMetaData resourceMetaData = new
ResourceMetaData(Collections.emptyMap());
+ RuleMetaData databaseRuleMetaData = new RuleMetaData(databaseRules);
+ ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db",
protocolType, resourceMetaData, databaseRuleMetaData,
Collections.singleton(schema));
+ Collection<ShardingSphereRule> globalRules = Collections.singleton(new
SQLFederationRule(config, Collections.singletonList(database)));
+ return new ShardingSphereMetaData(Collections.singletonList(database),
new ResourceMetaData(Collections.emptyMap()), new RuleMetaData(globalRules),
new ConfigurationProperties(props));
+ }
+
+ private SQLFederationEngine createEngineWithProcessor(final
SQLFederationProcessor processor, final ShardingSphereMetaData metaData,
+ final
ShardingSphereStatistics statistics, final JDBCExecutor jdbcExecutor) {
+ try (MockedStatic<SQLFederationProcessorFactory> factoryMock =
mockStatic(SQLFederationProcessorFactory.class)) {
+ SQLFederationProcessorFactory factory =
mock(SQLFederationProcessorFactory.class);
+
factoryMock.when(SQLFederationProcessorFactory::getInstance).thenReturn(factory);
+ when(factory.newInstance(statistics,
jdbcExecutor)).thenReturn(processor);
+ return new SQLFederationEngine("foo_db", "foo_schema", metaData,
statistics, jdbcExecutor);
+ }
+ }
}
diff --git
a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/rule/builder/SQLFederationRuleBuilderTest.java
b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/rule/builder/SQLFederationRuleBuilderTest.java
index 54ca7382066..1f515a69847 100644
---
a/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/rule/builder/SQLFederationRuleBuilderTest.java
+++
b/kernel/sql-federation/core/src/test/java/org/apache/shardingsphere/sqlfederation/rule/builder/SQLFederationRuleBuilderTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sqlfederation.rule.builder;
-import
org.apache.shardingsphere.infra.config.rule.scope.GlobalRuleConfiguration;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRuleBuilder;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
@@ -32,7 +31,6 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import java.util.Collections;
-import java.util.Map;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.isA;
@@ -43,13 +41,12 @@ import static org.mockito.Mockito.when;
@StaticMockSettings(CompilerContextFactory.class)
class SQLFederationRuleBuilderTest {
- @SuppressWarnings({"rawtypes", "unchecked"})
@Test
void assertBuild() {
SQLFederationRuleConfiguration ruleConfig = new
SQLFederationRuleConfiguration(true, false, new SQLFederationCacheOption(4,
64L));
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
when(CompilerContextFactory.create(Collections.singleton(database))).thenReturn(mock(CompilerContext.class));
- Map<GlobalRuleConfiguration, GlobalRuleBuilder> builders =
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig));
- assertThat(builders.get(ruleConfig).build(ruleConfig,
Collections.singleton(database), null), isA(SQLFederationRule.class));
+ SQLFederationRuleBuilder builder = (SQLFederationRuleBuilder)
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig)).get(ruleConfig);
+ assertThat(builder.build(ruleConfig, Collections.singleton(database),
null), isA(SQLFederationRule.class));
}
}
diff --git
a/kernel/sql-parser/core/src/test/java/org/apache/shardingsphere/parser/rule/builder/SQLParserRuleBuilderTest.java
b/kernel/sql-parser/core/src/test/java/org/apache/shardingsphere/parser/rule/builder/SQLParserRuleBuilderTest.java
index 369ad93561d..393d9f55138 100644
---
a/kernel/sql-parser/core/src/test/java/org/apache/shardingsphere/parser/rule/builder/SQLParserRuleBuilderTest.java
+++
b/kernel/sql-parser/core/src/test/java/org/apache/shardingsphere/parser/rule/builder/SQLParserRuleBuilderTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.parser.rule.builder;
-import
org.apache.shardingsphere.infra.config.rule.scope.GlobalRuleConfiguration;
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRuleBuilder;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import org.apache.shardingsphere.parser.config.SQLParserRuleConfiguration;
@@ -26,18 +25,16 @@ import
org.apache.shardingsphere.sql.parser.engine.api.CacheOption;
import org.junit.jupiter.api.Test;
import java.util.Collections;
-import java.util.Map;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.isA;
class SQLParserRuleBuilderTest {
- @SuppressWarnings({"rawtypes", "unchecked"})
@Test
void assertBuild() {
SQLParserRuleConfiguration ruleConfig = new
SQLParserRuleConfiguration(new CacheOption(4, 64L), new CacheOption(8, 128L));
- Map<GlobalRuleConfiguration, GlobalRuleBuilder> builders =
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig));
- assertThat(builders.get(ruleConfig).build(ruleConfig,
Collections.emptyList(), null), isA(SQLParserRule.class));
+ SQLParserRuleBuilder builder = (SQLParserRuleBuilder)
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig)).get(ruleConfig);
+ assertThat(builder.build(ruleConfig, Collections.emptyList(), null),
isA(SQLParserRule.class));
}
}
diff --git
a/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/builder/SQLTranslatorRuleBuilderTest.java
b/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/builder/SQLTranslatorRuleBuilderTest.java
index 91af539c58d..ec0cc94212e 100644
---
a/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/builder/SQLTranslatorRuleBuilderTest.java
+++
b/kernel/sql-translator/core/src/test/java/org/apache/shardingsphere/sqltranslator/rule/builder/SQLTranslatorRuleBuilderTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.sqltranslator.rule.builder;
-import
org.apache.shardingsphere.infra.config.rule.scope.GlobalRuleConfiguration;
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRuleBuilder;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import
org.apache.shardingsphere.sqltranslator.config.SQLTranslatorRuleConfiguration;
@@ -25,7 +24,6 @@ import
org.apache.shardingsphere.sqltranslator.rule.SQLTranslatorRule;
import org.junit.jupiter.api.Test;
import java.util.Collections;
-import java.util.Map;
import java.util.Properties;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -33,11 +31,10 @@ import static org.hamcrest.Matchers.isA;
class SQLTranslatorRuleBuilderTest {
- @SuppressWarnings({"rawtypes", "unchecked"})
@Test
void assertBuild() {
SQLTranslatorRuleConfiguration ruleConfig = new
SQLTranslatorRuleConfiguration("FIXTURE", new Properties(), true);
- Map<GlobalRuleConfiguration, GlobalRuleBuilder> builders =
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig));
- assertThat(builders.get(ruleConfig).build(ruleConfig,
Collections.emptyList(), null), isA(SQLTranslatorRule.class));
+ SQLTranslatorRuleBuilder builder = (SQLTranslatorRuleBuilder)
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig)).get(ruleConfig);
+ assertThat(builder.build(ruleConfig, Collections.emptyList(), null),
isA(SQLTranslatorRule.class));
}
}
diff --git
a/kernel/time-service/core/src/test/java/org/apache/shardingsphere/timeservice/core/rule/builder/TimestampServiceRuleBuilderTest.java
b/kernel/time-service/core/src/test/java/org/apache/shardingsphere/timeservice/core/rule/builder/TimestampServiceRuleBuilderTest.java
index 3b90768ce78..1316b851140 100644
---
a/kernel/time-service/core/src/test/java/org/apache/shardingsphere/timeservice/core/rule/builder/TimestampServiceRuleBuilderTest.java
+++
b/kernel/time-service/core/src/test/java/org/apache/shardingsphere/timeservice/core/rule/builder/TimestampServiceRuleBuilderTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.timeservice.core.rule.builder;
-import
org.apache.shardingsphere.infra.config.rule.scope.GlobalRuleConfiguration;
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRuleBuilder;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
@@ -28,7 +27,6 @@ import org.junit.jupiter.api.Test;
import org.mockito.MockedStatic;
import java.util.Collections;
-import java.util.Map;
import java.util.Properties;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -38,15 +36,14 @@ import static org.mockito.Mockito.mockStatic;
class TimestampServiceRuleBuilderTest {
- @SuppressWarnings({"rawtypes", "unchecked"})
@Test
void assertBuild() {
TimestampServiceRuleConfiguration ruleConfig = new
TimestampServiceRuleConfiguration("System", new Properties());
- Map<GlobalRuleConfiguration, GlobalRuleBuilder> builders =
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig));
+ TimestampServiceRuleBuilder builder = (TimestampServiceRuleBuilder)
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig)).get(ruleConfig);
TimestampService timestampService = mock(TimestampService.class);
try (MockedStatic<TypedSPILoader> typedSpiLoader =
mockStatic(TypedSPILoader.class)) {
typedSpiLoader.when(() ->
TypedSPILoader.getService(TimestampService.class, "System", new
Properties())).thenReturn(timestampService);
- assertThat(builders.get(ruleConfig).build(ruleConfig,
Collections.emptyList(), null), isA(TimestampServiceRule.class));
+ assertThat(builder.build(ruleConfig, Collections.emptyList(),
null), isA(TimestampServiceRule.class));
}
}
}
diff --git
a/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/rule/builder/TransactionRuleBuilderTest.java
b/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/rule/builder/TransactionRuleBuilderTest.java
index 00a206773e0..eadeff62534 100644
---
a/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/rule/builder/TransactionRuleBuilderTest.java
+++
b/kernel/transaction/core/src/test/java/org/apache/shardingsphere/transaction/rule/builder/TransactionRuleBuilderTest.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.transaction.rule.builder;
-import
org.apache.shardingsphere.infra.config.rule.scope.GlobalRuleConfiguration;
import org.apache.shardingsphere.infra.rule.builder.global.GlobalRuleBuilder;
import org.apache.shardingsphere.infra.spi.type.ordered.OrderedSPILoader;
import
org.apache.shardingsphere.transaction.config.TransactionRuleConfiguration;
@@ -25,7 +24,6 @@ import
org.apache.shardingsphere.transaction.rule.TransactionRule;
import org.junit.jupiter.api.Test;
import java.util.Collections;
-import java.util.Map;
import java.util.Properties;
import static org.hamcrest.MatcherAssert.assertThat;
@@ -33,11 +31,10 @@ import static org.hamcrest.Matchers.isA;
class TransactionRuleBuilderTest {
- @SuppressWarnings({"rawtypes", "unchecked"})
@Test
void assertBuild() {
TransactionRuleConfiguration ruleConfig = new
TransactionRuleConfiguration("LOCAL", "FIXTURE", new Properties());
- Map<GlobalRuleConfiguration, GlobalRuleBuilder> builders =
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig));
- assertThat(builders.get(ruleConfig).build(ruleConfig,
Collections.emptyList(), null), isA(TransactionRule.class));
+ TransactionRuleBuilder builder = (TransactionRuleBuilder)
OrderedSPILoader.getServices(GlobalRuleBuilder.class,
Collections.singleton(ruleConfig)).get(ruleConfig);
+ assertThat(builder.build(ruleConfig, Collections.emptyList(), null),
isA(TransactionRule.class));
}
}