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 ee3ccb285b5 Refactor DistSQLProxyBackendHandlerFactory (#36831)
ee3ccb285b5 is described below
commit ee3ccb285b5719c2fcd6fc3e479a74133cdde930
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Oct 10 12:45:40 2025 +0800
Refactor DistSQLProxyBackendHandlerFactory (#36831)
* Refactor DistSQLProxyBackendHandlerFactory
* Refactor DistSQLProxyBackendHandlerFactory
* Refactor DistSQLProxyBackendHandlerFactory
* Refactor DistSQLProxyBackendHandlerFactory
---
.../DatabaseOperateProxyBackendHandlerFactory.java | 7 +-
.../type/CreateDatabaseProxyBackendHandler.java | 6 +-
.../type/DropDatabaseProxyBackendHandler.java | 6 +-
.../distsql/DistSQLProxyBackendHandlerFactory.java | 11 ++-
.../distsql/DistSQLQueryProxyBackendHandler.java | 6 +-
.../distsql/DistSQLUpdateProxyBackendHandler.java | 6 +-
.../CreateDatabaseProxyBackendHandlerTest.java | 13 ++--
.../type/DropDatabaseProxyBackendHandlerTest.java | 9 +--
.../DistSQLProxyBackendHandlerFactoryTest.java | 88 ++++++++++++----------
.../DistSQLQueryProxyBackendHandlerTest.java | 14 ++--
.../DistSQLUpdateProxyBackendHandlerTest.java | 26 +++----
.../distsql/rul/ParseDistSQLExecutorTest.java | 14 ++--
12 files changed, 103 insertions(+), 103 deletions(-)
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateProxyBackendHandlerFactory.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateProxyBackendHandlerFactory.java
index f7c387390e7..09ce0b564c5 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateProxyBackendHandlerFactory.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/DatabaseOperateProxyBackendHandlerFactory.java
@@ -21,6 +21,8 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperationException;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
import
org.apache.shardingsphere.proxy.backend.handler.database.type.CreateDatabaseProxyBackendHandler;
import
org.apache.shardingsphere.proxy.backend.handler.database.type.DropDatabaseProxyBackendHandler;
@@ -48,11 +50,12 @@ public final class
DatabaseOperateProxyBackendHandlerFactory {
}
private static ProxyBackendHandler createProxyBackendHandler(final
SQLStatement sqlStatement, final ShardingSphereMetaData metaData, final
ConnectionSession connectionSession) {
+ MetaDataManagerPersistService metaDataManagerPersistService =
ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getModeFacade().getMetaDataManagerService();
if (sqlStatement instanceof CreateDatabaseStatement) {
- return new
CreateDatabaseProxyBackendHandler((CreateDatabaseStatement) sqlStatement,
metaData);
+ return new
CreateDatabaseProxyBackendHandler((CreateDatabaseStatement) sqlStatement,
metaData, metaDataManagerPersistService);
}
if (sqlStatement instanceof DropDatabaseStatement) {
- return new DropDatabaseProxyBackendHandler((DropDatabaseStatement)
sqlStatement, metaData, connectionSession);
+ return new DropDatabaseProxyBackendHandler((DropDatabaseStatement)
sqlStatement, metaData, metaDataManagerPersistService, connectionSession);
}
throw new
UnsupportedSQLOperationException(sqlStatement.getClass().getName());
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandler.java
index 95242f322b5..b8238b26d63 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandler.java
@@ -21,7 +21,7 @@ import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.database.exception.core.exception.syntax.database.DatabaseCreateExistsException;
import org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
@@ -39,11 +39,13 @@ public final class CreateDatabaseProxyBackendHandler
implements ProxyBackendHand
private final ShardingSphereMetaData metaData;
+ private final MetaDataManagerPersistService metaDataManagerPersistService;
+
@Override
public ResponseHeader execute() throws SQLException {
ShardingSpherePreconditions.checkState(sqlStatement.isIfNotExists() ||
!metaData.containsDatabase(sqlStatement.getDatabaseName()),
() -> new
DatabaseCreateExistsException(sqlStatement.getDatabaseName()));
-
ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getModeFacade().getMetaDataManagerService().createDatabase(sqlStatement.getDatabaseName());
+
metaDataManagerPersistService.createDatabase(sqlStatement.getDatabaseName());
return new UpdateResponseHeader(sqlStatement);
}
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/DropDatabaseProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/DropDatabaseProxyBackendHandler.java
index 2968c3aff75..f8e22583f32 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/DropDatabaseProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/database/type/DropDatabaseProxyBackendHandler.java
@@ -29,7 +29,7 @@ import
org.apache.shardingsphere.infra.exception.ShardingSpherePreconditions;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.user.Grantee;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
@@ -48,6 +48,8 @@ public final class DropDatabaseProxyBackendHandler implements
ProxyBackendHandle
private final ShardingSphereMetaData metaData;
+ private final MetaDataManagerPersistService metaDataManagerPersistService;
+
private final ConnectionSession connectionSession;
@Override
@@ -59,7 +61,7 @@ public final class DropDatabaseProxyBackendHandler implements
ProxyBackendHandle
}
if (metaData.containsDatabase(sqlStatement.getDatabaseName())) {
ShardingSphereDatabase database =
metaData.getDatabase(sqlStatement.getDatabaseName());
-
ProxyContext.getInstance().getContextManager().getPersistServiceFacade().getModeFacade().getMetaDataManagerService().dropDatabase(database);
+ metaDataManagerPersistService.dropDatabase(database);
}
return new UpdateResponseHeader(sqlStatement);
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactory.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactory.java
index 13ad3eb8962..9d6ac67bb08 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactory.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactory.java
@@ -27,6 +27,8 @@ import
org.apache.shardingsphere.distsql.statement.type.rql.RQLStatement;
import org.apache.shardingsphere.distsql.statement.type.rul.RULStatement;
import
org.apache.shardingsphere.infra.exception.generic.UnsupportedSQLOperationException;
import org.apache.shardingsphere.infra.session.query.QueryContext;
+import org.apache.shardingsphere.mode.manager.ContextManager;
+import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.handler.ProxyBackendHandler;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
@@ -46,16 +48,17 @@ public final class DistSQLProxyBackendHandlerFactory {
* @throws UnsupportedSQLOperationException unsupported SQL operation
exception
*/
public static ProxyBackendHandler newInstance(final DistSQLStatement
sqlStatement, final QueryContext queryContext, final ConnectionSession
connectionSession) {
+ ContextManager contextManager =
ProxyContext.getInstance().getContextManager();
if (sqlStatement instanceof RQLStatement || sqlStatement instanceof
RULStatement) {
- return new DistSQLQueryProxyBackendHandler(sqlStatement,
queryContext, connectionSession);
+ return new DistSQLQueryProxyBackendHandler(sqlStatement,
queryContext, connectionSession, contextManager);
}
if (sqlStatement instanceof RDLStatement) {
- return new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession);
+ return new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager);
}
if (sqlStatement instanceof RALStatement) {
return sqlStatement instanceof QueryableRALStatement
- ? new DistSQLQueryProxyBackendHandler(sqlStatement,
queryContext, connectionSession)
- : new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession);
+ ? new DistSQLQueryProxyBackendHandler(sqlStatement,
queryContext, connectionSession, contextManager)
+ : new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager);
}
throw new
UnsupportedSQLOperationException(sqlStatement.getClass().getName());
}
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryProxyBackendHandler.java
index 79c05cf672d..463f88371de 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryProxyBackendHandler.java
@@ -23,7 +23,7 @@ import
org.apache.shardingsphere.distsql.statement.DistSQLStatement;
import org.apache.shardingsphere.infra.merge.result.MergedResult;
import
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataMergedResult;
import org.apache.shardingsphere.infra.session.query.QueryContext;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseCell;
import org.apache.shardingsphere.proxy.backend.response.data.QueryResponseRow;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
@@ -49,11 +49,11 @@ public final class DistSQLQueryProxyBackendHandler
implements DistSQLProxyBacken
private MergedResult mergedResult;
- public DistSQLQueryProxyBackendHandler(final DistSQLStatement
sqlStatement, final QueryContext queryContext, final ConnectionSession
connectionSession) {
+ public DistSQLQueryProxyBackendHandler(final DistSQLStatement
sqlStatement, final QueryContext queryContext, final ConnectionSession
connectionSession, final ContextManager contextManager) {
DistSQLConnectionContext distsqlConnectionContext = new
DistSQLConnectionContext(queryContext,
connectionSession.getDatabaseConnectionManager().getConnectionSize(),
connectionSession.getProtocolType(),
connectionSession.getDatabaseConnectionManager(),
connectionSession.getStatementManager());
- engine = new DistSQLQueryExecuteEngine(sqlStatement,
connectionSession.getUsedDatabaseName(),
ProxyContext.getInstance().getContextManager(), distsqlConnectionContext);
+ engine = new DistSQLQueryExecuteEngine(sqlStatement,
connectionSession.getUsedDatabaseName(), contextManager,
distsqlConnectionContext);
}
@Override
diff --git
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandler.java
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandler.java
index be4830395d0..2e5f326dc56 100644
---
a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandler.java
+++
b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandler.java
@@ -19,7 +19,7 @@ package
org.apache.shardingsphere.proxy.backend.handler.distsql;
import
org.apache.shardingsphere.distsql.handler.engine.update.DistSQLUpdateExecuteEngine;
import org.apache.shardingsphere.distsql.statement.DistSQLStatement;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
+import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
@@ -35,9 +35,9 @@ public final class DistSQLUpdateProxyBackendHandler
implements DistSQLProxyBacke
private final DistSQLUpdateExecuteEngine engine;
- public DistSQLUpdateProxyBackendHandler(final DistSQLStatement
sqlStatement, final ConnectionSession connectionSession) {
+ public DistSQLUpdateProxyBackendHandler(final DistSQLStatement
sqlStatement, final ConnectionSession connectionSession, final ContextManager
contextManager) {
this.sqlStatement = sqlStatement;
- engine = new DistSQLUpdateExecuteEngine(sqlStatement,
connectionSession.getUsedDatabaseName(),
ProxyContext.getInstance().getContextManager());
+ engine = new DistSQLUpdateExecuteEngine(sqlStatement,
connectionSession.getUsedDatabaseName(), contextManager);
}
@Override
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandlerTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandlerTest.java
index 060a36f71b7..b4c5509abcd 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandlerTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/CreateDatabaseProxyBackendHandlerTest.java
@@ -19,14 +19,12 @@ package
org.apache.shardingsphere.proxy.backend.handler.database.type;
import
org.apache.shardingsphere.database.exception.core.exception.syntax.database.DatabaseCreateExistsException;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database.CreateDatabaseStatement;
-import org.apache.shardingsphere.test.infra.framework.mock.AutoMockExtension;
-import org.apache.shardingsphere.test.infra.framework.mock.StaticMockSettings;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
import java.sql.SQLException;
@@ -36,8 +34,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-@ExtendWith(AutoMockExtension.class)
-@StaticMockSettings(ProxyContext.class)
+@ExtendWith(MockitoExtension.class)
class CreateDatabaseProxyBackendHandlerTest {
@Mock
@@ -46,7 +43,7 @@ class CreateDatabaseProxyBackendHandlerTest {
@Test
void assertExecuteCreateNewDatabase() throws SQLException {
when(statement.getDatabaseName()).thenReturn("bar_db");
- assertThat(new CreateDatabaseProxyBackendHandler(statement,
mock()).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new CreateDatabaseProxyBackendHandler(statement, mock(),
mock()).execute(), isA(UpdateResponseHeader.class));
}
@Test
@@ -54,13 +51,13 @@ class CreateDatabaseProxyBackendHandlerTest {
when(statement.getDatabaseName()).thenReturn("foo_db");
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
when(metaData.containsDatabase("foo_db")).thenReturn(true);
- assertThrows(DatabaseCreateExistsException.class, () -> new
CreateDatabaseProxyBackendHandler(statement, metaData).execute());
+ assertThrows(DatabaseCreateExistsException.class, () -> new
CreateDatabaseProxyBackendHandler(statement, metaData, mock()).execute());
}
@Test
void assertExecuteCreateExistDatabaseWithIfNotExists() throws SQLException
{
when(statement.getDatabaseName()).thenReturn("foo_db");
when(statement.isIfNotExists()).thenReturn(true);
- assertThat(new CreateDatabaseProxyBackendHandler(statement,
mock()).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new CreateDatabaseProxyBackendHandler(statement, mock(),
mock()).execute(), isA(UpdateResponseHeader.class));
}
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/DropDatabaseProxyBackendHandlerTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/DropDatabaseProxyBackendHandlerTest.java
index 92267fc4fa8..096f093644d 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/DropDatabaseProxyBackendHandlerTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/database/type/DropDatabaseProxyBackendHandlerTest.java
@@ -24,18 +24,16 @@ import
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database.DropDatabaseStatement;
-import org.apache.shardingsphere.test.infra.framework.mock.AutoMockExtension;
-import org.apache.shardingsphere.test.infra.framework.mock.StaticMockSettings;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Answers;
import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
@@ -53,8 +51,7 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-@ExtendWith(AutoMockExtension.class)
-@StaticMockSettings(ProxyContext.class)
+@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.LENIENT)
class DropDatabaseProxyBackendHandlerTest {
@@ -69,7 +66,7 @@ class DropDatabaseProxyBackendHandlerTest {
@BeforeEach
void setUp() {
when(connectionSession.getConnectionContext().getGrantee()).thenReturn(null);
- handler = new DropDatabaseProxyBackendHandler(sqlStatement,
mockMetaData(), connectionSession);
+ handler = new DropDatabaseProxyBackendHandler(sqlStatement,
mockMetaData(), mock(), connectionSession);
}
private ShardingSphereMetaData mockMetaData() {
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactoryTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactoryTest.java
index 058184b69a7..cae0b4d9483 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactoryTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLProxyBackendHandlerFactoryTest.java
@@ -31,7 +31,6 @@ import
org.apache.shardingsphere.infra.util.props.PropertiesBuilder.Property;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import
org.apache.shardingsphere.mode.persist.service.MetaDataManagerPersistService;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import
org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
@@ -51,13 +50,12 @@ import
org.apache.shardingsphere.shadow.distsql.statement.ShowShadowTableRulesSt
import org.apache.shardingsphere.shadow.rule.ShadowRule;
import
org.apache.shardingsphere.sharding.distsql.statement.CreateShardingTableRuleStatement;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
-import org.apache.shardingsphere.test.infra.framework.mock.AutoMockExtension;
-import org.apache.shardingsphere.test.infra.framework.mock.StaticMockSettings;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Answers;
import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
import org.mockito.junit.jupiter.MockitoSettings;
import org.mockito.quality.Strictness;
@@ -73,20 +71,19 @@ import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-@ExtendWith(AutoMockExtension.class)
-@StaticMockSettings(ProxyContext.class)
+@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.LENIENT)
class DistSQLProxyBackendHandlerFactoryTest {
+ private ContextManager contextManager;
+
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private ConnectionSession connectionSession;
@BeforeEach
void setUp() {
ShardingSphereDatabase database = mockDatabase();
- ContextManager contextManager = mockContextManager(database);
-
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
-
when(ProxyContext.getInstance().databaseExists("foo_db")).thenReturn(true);
+ contextManager = mockContextManager(database);
when(connectionSession.getUsedDatabaseName()).thenReturn("foo_db");
}
@@ -117,132 +114,141 @@ class DistSQLProxyBackendHandlerFactoryTest {
void assertExecuteDataSourcesContext() throws SQLException {
RegisterStorageUnitStatement sqlStatement =
mock(RegisterStorageUnitStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteShardingTableRuleContext() throws SQLException {
-
when(ProxyContext.getInstance().getContextManager().getDatabase("foo_db").getRuleMetaData()).thenReturn(new
RuleMetaData(Collections.emptyList()));
+
when(contextManager.getDatabase("foo_db").getRuleMetaData()).thenReturn(new
RuleMetaData(Collections.emptyList()));
CreateShardingTableRuleStatement sqlStatement =
mock(CreateShardingTableRuleStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteAddResourceContext() throws SQLException {
RegisterStorageUnitStatement sqlStatement =
mock(RegisterStorageUnitStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteAlterResourceContext() throws SQLException {
AlterStorageUnitStatement sqlStatement =
mock(AlterStorageUnitStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteAlterShadowRuleContext() throws SQLException {
- mockRuleMetaData();
+ ShardingSphereDatabase database = mockDatabaseWithRule();
+ when(contextManager.getDatabase("foo_db")).thenReturn(database);
AlterShadowRuleStatement sqlStatement =
mock(AlterShadowRuleStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteCreateShadowRuleContext() throws SQLException {
- mockRuleMetaData();
+ ShardingSphereDatabase database = mockDatabaseWithRule();
+ when(contextManager.getDatabase("foo_db")).thenReturn(database);
CreateShadowRuleStatement sqlStatement =
mock(CreateShadowRuleStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteDropShadowRuleContext() throws SQLException {
- mockRuleMetaData();
+ ShardingSphereDatabase database = mockDatabaseWithRule();
+ when(contextManager.getDatabase("foo_db")).thenReturn(database);
DropShadowRuleStatement sqlStatement =
mock(DropShadowRuleStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteAlterDefaultShadowAlgorithm() throws SQLException {
- mockRuleMetaData();
+ ShardingSphereDatabase database = mockDatabaseWithRule();
+ when(contextManager.getDatabase("foo_db")).thenReturn(database);
AlterDefaultShadowAlgorithmStatement statement = new
AlterDefaultShadowAlgorithmStatement(
new ShadowAlgorithmSegment("foo", new
AlgorithmSegment("SQL_HINT", PropertiesBuilder.build(new Property("type",
"value")))));
- assertThat(new DistSQLUpdateProxyBackendHandler(statement,
connectionSession).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(statement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteShowShadowRulesContext() throws SQLException {
- mockRuleMetaData();
- assertThat(new
DistSQLQueryProxyBackendHandler(mock(ShowShadowRulesStatement.class,
RETURNS_DEEP_STUBS), mock(), connectionSession).execute(),
isA(QueryResponseHeader.class));
+ ShardingSphereDatabase database = mockDatabaseWithRule();
+ when(contextManager.getDatabase("foo_db")).thenReturn(database);
+ assertThat(new
DistSQLQueryProxyBackendHandler(mock(ShowShadowRulesStatement.class,
RETURNS_DEEP_STUBS), mock(), connectionSession, contextManager).execute(),
isA(QueryResponseHeader.class));
}
@Test
void assertExecuteShowShadowTableRulesContext() throws SQLException {
- mockRuleMetaData();
+ mockDatabaseWithRule();
ShowShadowTableRulesStatement sqlStatement =
mock(ShowShadowTableRulesStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLQueryProxyBackendHandler(sqlStatement, mock(),
connectionSession).execute(), isA(QueryResponseHeader.class));
+ assertThat(new DistSQLQueryProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(QueryResponseHeader.class));
}
@Test
void assertExecuteShowShadowAlgorithmsContext() throws SQLException {
- mockRuleMetaData();
+ ShardingSphereDatabase database = mockDatabaseWithRule();
+ when(contextManager.getDatabase("foo_db")).thenReturn(database);
ShowShadowAlgorithmsStatement sqlStatement =
mock(ShowShadowAlgorithmsStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLQueryProxyBackendHandler(sqlStatement, mock(),
connectionSession).execute(), isA(QueryResponseHeader.class));
+ assertThat(new DistSQLQueryProxyBackendHandler(sqlStatement, mock(),
connectionSession, contextManager).execute(), isA(QueryResponseHeader.class));
}
@Test
void assertExecuteDropShadowAlgorithmContext() throws SQLException {
- mockRuleMetaData();
+ ShardingSphereDatabase database = mockDatabaseWithRule();
+ when(contextManager.getDatabase("foo_db")).thenReturn(database);
DropShadowAlgorithmStatement sqlStatement =
mock(DropShadowAlgorithmStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteDropResourceContext() throws SQLException {
UnregisterStorageUnitStatement sqlStatement =
mock(UnregisterStorageUnitStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteDropReadwriteSplittingRuleContext() {
- assertThrows(MissingRequiredRuleException.class, () -> new
DistSQLUpdateProxyBackendHandler(mock(DropReadwriteSplittingRuleStatement.class,
RETURNS_DEEP_STUBS), connectionSession).execute());
+ assertThrows(MissingRequiredRuleException.class,
+ () -> new
DistSQLUpdateProxyBackendHandler(mock(DropReadwriteSplittingRuleStatement.class,
RETURNS_DEEP_STUBS), connectionSession, contextManager).execute());
}
@Test
void assertExecuteCreateReadwriteSplittingRuleContext() throws
SQLException {
CreateReadwriteSplittingRuleStatement sqlStatement =
mock(CreateReadwriteSplittingRuleStatement.class);
when(sqlStatement.getAttributes()).thenReturn(new
SQLStatementAttributes());
- assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession).execute(), isA(UpdateResponseHeader.class));
+ assertThat(new DistSQLUpdateProxyBackendHandler(sqlStatement,
connectionSession, contextManager).execute(), isA(UpdateResponseHeader.class));
}
@Test
void assertExecuteAlterReadwriteSplittingRuleContext() {
- assertThrows(MissingRequiredRuleException.class, () -> new
DistSQLUpdateProxyBackendHandler(mock(AlterReadwriteSplittingRuleStatement.class,
RETURNS_DEEP_STUBS), connectionSession).execute());
+ assertThrows(MissingRequiredRuleException.class,
+ () -> new
DistSQLUpdateProxyBackendHandler(mock(AlterReadwriteSplittingRuleStatement.class,
RETURNS_DEEP_STUBS), connectionSession, contextManager).execute());
}
- private void mockRuleMetaData() {
- ShardingSphereDatabase database = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
- when(database.getName()).thenReturn("foo_db");
-
when(database.getResourceMetaData()).thenReturn(mock(ResourceMetaData.class));
+ private ShardingSphereDatabase mockDatabaseWithRule() {
+ ShardingSphereDatabase result = mock(ShardingSphereDatabase.class,
RETURNS_DEEP_STUBS);
+ when(result.getName()).thenReturn("foo_db");
+
when(result.getResourceMetaData()).thenReturn(mock(ResourceMetaData.class));
RuleMetaData ruleMetaData = mock(RuleMetaData.class);
- ShadowRuleConfiguration ruleConfig = mockShadowRuleConfiguration();
+ ShadowRuleConfiguration ruleConfig = createShadowRuleConfiguration();
when(ruleMetaData.getConfigurations()).thenReturn(Collections.singleton(ruleConfig));
ShadowRule rule = mock(ShadowRule.class);
when(rule.getConfiguration()).thenReturn(ruleConfig);
when(ruleMetaData.findSingleRule(ShadowRule.class)).thenReturn(Optional.of(rule));
- when(database.getRuleMetaData()).thenReturn(ruleMetaData);
-
when(ProxyContext.getInstance().getContextManager().getDatabase("foo_db")).thenReturn(database);
+ when(result.getRuleMetaData()).thenReturn(ruleMetaData);
+ return result;
}
- private ShadowRuleConfiguration mockShadowRuleConfiguration() {
+ private ShadowRuleConfiguration createShadowRuleConfiguration() {
ShadowRuleConfiguration result = new ShadowRuleConfiguration();
result.getShadowAlgorithms().put("default_shadow_algorithm",
mock(AlgorithmConfiguration.class));
return result;
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryProxyBackendHandlerTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryProxyBackendHandlerTest.java
index ed065e63e93..71c392051da 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryProxyBackendHandlerTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLQueryProxyBackendHandlerTest.java
@@ -64,8 +64,8 @@ class DistSQLQueryProxyBackendHandlerTest {
@Test
void assertExecuteWithNoDatabase() {
- assertThrows(NoDatabaseSelectedException.class,
- () -> new
DistSQLQueryProxyBackendHandler(mock(ExportDatabaseConfigurationStatement.class,
RETURNS_DEEP_STUBS), mock(), mock(ConnectionSession.class,
RETURNS_DEEP_STUBS)).execute());
+ assertThrows(NoDatabaseSelectedException.class, () -> new
DistSQLQueryProxyBackendHandler(
+ mock(ExportDatabaseConfigurationStatement.class,
RETURNS_DEEP_STUBS), mock(), mock(ConnectionSession.class, RETURNS_DEEP_STUBS),
mock()).execute());
}
@Test
@@ -77,23 +77,23 @@ class DistSQLQueryProxyBackendHandlerTest {
ComputeNodeInstanceContext computeNodeInstanceContext =
mock(ComputeNodeInstanceContext.class);
when(computeNodeInstanceContext.getModeConfiguration()).thenReturn(mock(ModeConfiguration.class));
ContextManager contextManager = new ContextManager(metaDataContexts,
computeNodeInstanceContext, mock(), mock(PersistRepository.class));
-
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
assertThrows(UnknownDatabaseException.class,
- () -> new
DistSQLQueryProxyBackendHandler(mock(ExportDatabaseConfigurationStatement.class,
RETURNS_DEEP_STUBS), mock(), connectionSession).execute());
+ () -> new
DistSQLQueryProxyBackendHandler(mock(ExportDatabaseConfigurationStatement.class,
RETURNS_DEEP_STUBS), mock(), connectionSession, contextManager).execute());
}
@Test
void assertExecuteWithAbstractStatement() {
assertThrows(ServiceProviderNotFoundException.class,
- () -> new
DistSQLQueryProxyBackendHandler(mock(QueryableRALStatement.class,
RETURNS_DEEP_STUBS), mock(), mock(ConnectionSession.class,
RETURNS_DEEP_STUBS)).execute());
+ () -> new
DistSQLQueryProxyBackendHandler(mock(QueryableRALStatement.class,
RETURNS_DEEP_STUBS), mock(), mock(ConnectionSession.class, RETURNS_DEEP_STUBS),
mock()).execute());
}
@Test
void assertExecute() {
ShardingSphereDatabase database = new ShardingSphereDatabase(
"foo_db", databaseType, mock(), mock(),
Collections.singleton(new ShardingSphereSchema("foo_db", createTables(),
Collections.emptyList())));
-
when(ProxyContext.getInstance().getContextManager().getDatabase("foo_db")).thenReturn(database);
- assertDoesNotThrow(() -> new
DistSQLQueryProxyBackendHandler(createSqlStatement(), mock(),
mock(ConnectionSession.class, RETURNS_DEEP_STUBS)).execute());
+ ContextManager contextManager = mock(ContextManager.class);
+ when(contextManager.getDatabase("foo_db")).thenReturn(database);
+ assertDoesNotThrow(() -> new
DistSQLQueryProxyBackendHandler(createSqlStatement(), mock(),
mock(ConnectionSession.class, RETURNS_DEEP_STUBS), contextManager).execute());
}
private Collection<ShardingSphereTable> createTables() {
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java
index c17f9a08c31..dc5630f22e8 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLUpdateProxyBackendHandlerTest.java
@@ -29,17 +29,14 @@ import
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUn
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import
org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
-import org.apache.shardingsphere.test.infra.framework.mock.AutoMockExtension;
-import org.apache.shardingsphere.test.infra.framework.mock.StaticMockSettings;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Answers;
import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
import java.sql.SQLException;
import java.util.Collections;
@@ -51,8 +48,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-@ExtendWith(AutoMockExtension.class)
-@StaticMockSettings(ProxyContext.class)
+@ExtendWith(MockitoExtension.class)
class DistSQLUpdateProxyBackendHandlerTest {
private final DatabaseType databaseType =
TypedSPILoader.getService(DatabaseType.class, "FIXTURE");
@@ -60,15 +56,10 @@ class DistSQLUpdateProxyBackendHandlerTest {
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private ContextManager contextManager;
- @BeforeEach
- void setUp() {
-
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
- }
-
@Test
void assertEmptyStorageUnit() {
when(contextManager.getDatabase("foo_db")).thenReturn(new
ShardingSphereDatabase("foo_db", databaseType, mock(), mock(),
Collections.emptyList()));
- DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(new RefreshTableMetaDataStatement(),
mockConnectionSession("foo_db"));
+ DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(new RefreshTableMetaDataStatement(),
mockConnectionSession("foo_db"), contextManager);
assertThrows(EmptyStorageUnitException.class, backendHandler::execute);
}
@@ -77,7 +68,8 @@ class DistSQLUpdateProxyBackendHandlerTest {
ResourceMetaData resourceMetaData = mock(ResourceMetaData.class);
when(resourceMetaData.getStorageUnits()).thenReturn(Collections.singletonMap("ds_0",
mock(StorageUnit.class)));
when(contextManager.getDatabase("foo_db")).thenReturn(new
ShardingSphereDatabase("foo_db", databaseType, resourceMetaData, mock(),
Collections.emptyList()));
- DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(new RefreshTableMetaDataStatement("t_order",
"ds_1", null), mockConnectionSession("foo_db"));
+ DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(
+ new RefreshTableMetaDataStatement("t_order", "ds_1", null),
mockConnectionSession("foo_db"), contextManager);
assertThrows(MissingRequiredStorageUnitsException.class,
backendHandler::execute);
}
@@ -86,7 +78,8 @@ class DistSQLUpdateProxyBackendHandlerTest {
ResourceMetaData resourceMetaData = mock(ResourceMetaData.class);
when(resourceMetaData.getStorageUnits()).thenReturn(Collections.singletonMap("ds_0",
mock(StorageUnit.class)));
when(contextManager.getDatabase("foo_db")).thenReturn(new
ShardingSphereDatabase("foo_db", databaseType, resourceMetaData, mock(),
Collections.emptyList()));
- DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(new RefreshTableMetaDataStatement("t_order",
"ds_0", "bar_db"), mockConnectionSession("foo_db"));
+ DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(
+ new RefreshTableMetaDataStatement("t_order", "ds_0",
"bar_db"), mockConnectionSession("foo_db"), contextManager);
assertThrows(SchemaNotFoundException.class, backendHandler::execute);
}
@@ -100,7 +93,8 @@ class DistSQLUpdateProxyBackendHandlerTest {
when(database.getSchema("foo_db")).thenReturn(schema);
when(database.getResourceMetaData()).thenReturn(resourceMetaData);
when(contextManager.getDatabase("foo_db")).thenReturn(database);
- DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(new RefreshTableMetaDataStatement("t_order",
"ds_0", "foo_db"), mockConnectionSession("foo_db"));
+ DistSQLUpdateProxyBackendHandler backendHandler = new
DistSQLUpdateProxyBackendHandler(
+ new RefreshTableMetaDataStatement("t_order", "ds_0",
"foo_db"), mockConnectionSession("foo_db"), contextManager);
assertThrows(TableNotFoundException.class, backendHandler::execute);
}
@@ -113,7 +107,7 @@ class DistSQLUpdateProxyBackendHandlerTest {
when(database.getProtocolType()).thenReturn(databaseType);
when(database.getResourceMetaData()).thenReturn(resourceMetaData);
when(contextManager.getDatabase("foo_db")).thenReturn(database);
- ResponseHeader actual = new DistSQLUpdateProxyBackendHandler(new
RefreshTableMetaDataStatement(), mockConnectionSession("foo_db")).execute();
+ ResponseHeader actual = new DistSQLUpdateProxyBackendHandler(new
RefreshTableMetaDataStatement(), mockConnectionSession("foo_db"),
contextManager).execute();
assertThat(actual, isA(UpdateResponseHeader.class));
}
diff --git
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/ParseDistSQLExecutorTest.java
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/ParseDistSQLExecutorTest.java
index 0526519f035..9c79777b43e 100644
---
a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/ParseDistSQLExecutorTest.java
+++
b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/rul/ParseDistSQLExecutorTest.java
@@ -26,17 +26,15 @@ import org.apache.shardingsphere.infra.util.json.JsonUtils;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.parser.rule.SQLParserRule;
import
org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
-import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import
org.apache.shardingsphere.proxy.backend.handler.distsql.DistSQLQueryProxyBackendHandler;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
import
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
-import org.apache.shardingsphere.test.infra.framework.mock.AutoMockExtension;
-import org.apache.shardingsphere.test.infra.framework.mock.StaticMockSettings;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Answers;
import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
import java.sql.SQLException;
import java.util.Collections;
@@ -48,8 +46,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-@ExtendWith(AutoMockExtension.class)
-@StaticMockSettings(ProxyContext.class)
+@ExtendWith(MockitoExtension.class)
class ParseDistSQLExecutorTest {
private final SQLParserRule sqlParserRule = new SQLParserRule(new
DefaultSQLParserRuleConfigurationBuilder().build());
@@ -63,14 +60,13 @@ class ParseDistSQLExecutorTest {
@BeforeEach
void setUp() {
when(contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData()).thenReturn(new
RuleMetaData(Collections.singleton(sqlParserRule)));
-
when(ProxyContext.getInstance().getContextManager()).thenReturn(contextManager);
}
@Test
void assertGetRowDataForMySQL() throws SQLException {
String sql = "SELECT * FROM t_order";
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
- DistSQLQueryProxyBackendHandler handler = new
DistSQLQueryProxyBackendHandler(new ParseStatement(sql), mock(),
connectionSession);
+ DistSQLQueryProxyBackendHandler handler = new
DistSQLQueryProxyBackendHandler(new ParseStatement(sql), mock(),
connectionSession, contextManager);
handler.execute();
handler.next();
SQLStatement sqlStatement =
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class,
"MySQL")).parse(sql, false);
@@ -82,7 +78,7 @@ class ParseDistSQLExecutorTest {
void assertGetRowDataForPostgreSQL() throws SQLException {
String sql = "SELECT * FROM t_order";
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL"));
- DistSQLQueryProxyBackendHandler handler = new
DistSQLQueryProxyBackendHandler(new ParseStatement(sql), mock(),
connectionSession);
+ DistSQLQueryProxyBackendHandler handler = new
DistSQLQueryProxyBackendHandler(new ParseStatement(sql), mock(),
connectionSession, contextManager);
handler.execute();
handler.next();
SQLStatement sqlStatement =
sqlParserRule.getSQLParserEngine(TypedSPILoader.getService(DatabaseType.class,
"PostgreSQL")).parse(sql, false);
@@ -93,7 +89,7 @@ class ParseDistSQLExecutorTest {
void assertExecute() {
String sql = "wrong sql";
when(connectionSession.getProtocolType()).thenReturn(TypedSPILoader.getService(DatabaseType.class,
"MySQL"));
- DistSQLQueryProxyBackendHandler handler = new
DistSQLQueryProxyBackendHandler(new ParseStatement(sql), mock(),
connectionSession);
+ DistSQLQueryProxyBackendHandler handler = new
DistSQLQueryProxyBackendHandler(new ParseStatement(sql), mock(),
connectionSession, contextManager);
assertThrows(DialectSQLParsingException.class, handler::execute);
}
}