You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/11/12 02:28:11 UTC
[shardingsphere] branch master updated: Refactor DistSQLBackendHandlerFactoryTest (#22094)
This is an automated email from the ASF dual-hosted git repository.
duanzhengqiang 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 733245f6147 Refactor DistSQLBackendHandlerFactoryTest (#22094)
733245f6147 is described below
commit 733245f61475e50ed9a9f15a7f07fa3d58137d19
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Sat Nov 12 10:28:06 2022 +0800
Refactor DistSQLBackendHandlerFactoryTest (#22094)
* Update code conduct
* Refactor DistSQLBackendHandlerFactoryTest
---
.../distsql/DistSQLBackendHandlerFactoryTest.java | 128 ++++++++-------------
1 file changed, 46 insertions(+), 82 deletions(-)
diff --git a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
index 21c5ed5c475..db5a03039b3 100644
--- a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
+++ b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/DistSQLBackendHandlerFactoryTest.java
@@ -22,20 +22,16 @@ import org.apache.shardingsphere.distsql.parser.statement.rdl.alter.AlterStorage
import org.apache.shardingsphere.distsql.parser.statement.rdl.create.RegisterStorageUnitStatement;
import org.apache.shardingsphere.distsql.parser.statement.rdl.drop.UnregisterStorageUnitStatement;
import org.apache.shardingsphere.distsql.parser.statement.rql.show.ShowStorageUnitsStatement;
-import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
-import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.infra.config.algorithm.AlgorithmConfiguration;
import org.apache.shardingsphere.infra.distsql.exception.rule.MissingRequiredRuleException;
-import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import org.apache.shardingsphere.infra.metadata.database.resource.ShardingSphereResourceMetaData;
import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
import org.apache.shardingsphere.mode.manager.ContextManager;
import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
-import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.handler.distsql.rdl.RDLBackendHandlerFactory;
import org.apache.shardingsphere.proxy.backend.handler.distsql.rql.RQLBackendHandlerFactory;
-import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
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;
@@ -54,7 +50,6 @@ import org.apache.shardingsphere.shadow.distsql.parser.statement.ShowShadowAlgor
import org.apache.shardingsphere.shadow.distsql.parser.statement.ShowShadowRulesStatement;
import org.apache.shardingsphere.shadow.distsql.parser.statement.ShowShadowTableRulesStatement;
import org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingTableRuleStatement;
-import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -63,8 +58,6 @@ import org.mockito.junit.MockitoJUnitRunner;
import java.sql.SQLException;
import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.instanceOf;
@@ -82,18 +75,31 @@ public final class DistSQLBackendHandlerFactoryTest extends ProxyContextRestorer
@Before
public void setUp() {
- MetaDataContexts metaDataContexts = new MetaDataContexts(mock(MetaDataPersistService.class), new ShardingSphereMetaData(
- new HashMap<>(Collections.singletonMap("db", mock(ShardingSphereDatabase.class))), mock(ShardingSphereRuleMetaData.class), new ConfigurationProperties(new Properties())));
- ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
- when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
- ProxyContext.init(contextManager);
when(connectionSession.getDatabaseName()).thenReturn("db");
- setContextManager(true);
+ ProxyContext.init(mockContextManager());
}
- @After
- public void setDown() {
- setContextManager(false);
+ private ContextManager mockContextManager() {
+ ContextManager result = mock(ContextManager.class);
+ MetaDataContexts metaDataContexts = mockMetaDataContexts();
+ when(result.getMetaDataContexts()).thenReturn(metaDataContexts);
+ return result;
+ }
+
+ private MetaDataContexts mockMetaDataContexts() {
+ MetaDataContexts result = mock(MetaDataContexts.class, RETURNS_DEEP_STUBS);
+ when(result.getMetaData().containsDatabase("db")).thenReturn(true);
+ ShardingSphereDatabase database = mockDatabase();
+ when(result.getMetaData().getDatabase("db")).thenReturn(database);
+ return result;
+ }
+
+ private ShardingSphereDatabase mockDatabase() {
+ ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
+ when(result.getResourceMetaData().getDataSources()).thenReturn(Collections.emptyMap());
+ when(result.getResourceMetaData().getNotExistedResources(any())).thenReturn(Collections.emptyList());
+ when(result.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList()));
+ return result;
}
@Test
@@ -103,138 +109,97 @@ public final class DistSQLBackendHandlerFactoryTest extends ProxyContextRestorer
@Test
public void assertExecuteShardingTableRuleContext() throws SQLException {
- ShardingSphereDatabase database = ProxyContext.getInstance().getDatabase("db");
- when(database.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList()));
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(CreateShardingTableRuleStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ when(ProxyContext.getInstance().getDatabase("db").getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList()));
+ assertThat(RDLBackendHandlerFactory.newInstance(mock(CreateShardingTableRuleStatement.class), connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
public void assertExecuteAddResourceContext() throws SQLException {
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(RegisterStorageUnitStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ assertThat(RDLBackendHandlerFactory.newInstance(mock(RegisterStorageUnitStatement.class), connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
public void assertExecuteAlterResourceContext() throws SQLException {
- setContextManager(true);
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(AlterStorageUnitStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ assertThat(RDLBackendHandlerFactory.newInstance(mock(AlterStorageUnitStatement.class), connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
public void assertExecuteAlterShadowRuleContext() throws SQLException {
mockShardingSphereRuleMetaData();
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(AlterShadowRuleStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ assertThat(RDLBackendHandlerFactory.newInstance(mock(AlterShadowRuleStatement.class), connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
public void assertExecuteCreateShadowRuleContext() throws SQLException {
mockShardingSphereRuleMetaData();
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(CreateShadowRuleStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ assertThat(RDLBackendHandlerFactory.newInstance(mock(CreateShadowRuleStatement.class), connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
public void assertExecuteDropShadowRuleContext() throws SQLException {
mockShardingSphereRuleMetaData();
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(DropShadowRuleStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ assertThat(RDLBackendHandlerFactory.newInstance(mock(DropShadowRuleStatement.class), connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
public void assertExecuteAlterDefaultShadowAlgorithm() throws SQLException {
mockShardingSphereRuleMetaData();
- Properties prop = new Properties();
- prop.setProperty("type", "value");
- AlterDefaultShadowAlgorithmStatement statement = mock(AlterDefaultShadowAlgorithmStatement.class);
- ShadowAlgorithmSegment algorithmSegment = mock(ShadowAlgorithmSegment.class);
- when(algorithmSegment.getAlgorithmSegment()).thenReturn(new AlgorithmSegment("SIMPLE_HINT", prop));
- when(statement.getShadowAlgorithmSegment()).thenReturn(algorithmSegment);
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(statement, connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ Properties props = new Properties();
+ props.setProperty("type", "value");
+ AlterDefaultShadowAlgorithmStatement statement = new AlterDefaultShadowAlgorithmStatement(new ShadowAlgorithmSegment("foo", new AlgorithmSegment("SIMPLE_HINT", props)));
+ assertThat(RDLBackendHandlerFactory.newInstance(statement, connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
public void assertExecuteShowShadowRulesContext() throws SQLException {
mockShardingSphereRuleMetaData();
- ResponseHeader response = RQLBackendHandlerFactory.newInstance(mock(ShowShadowRulesStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(QueryResponseHeader.class));
+ assertThat(RQLBackendHandlerFactory.newInstance(mock(ShowShadowRulesStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
}
@Test
public void assertExecuteShowShadowTableRulesContext() throws SQLException {
mockShardingSphereRuleMetaData();
- ResponseHeader response = RQLBackendHandlerFactory.newInstance(mock(ShowShadowTableRulesStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(QueryResponseHeader.class));
+ assertThat(RQLBackendHandlerFactory.newInstance(mock(ShowShadowTableRulesStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
}
@Test
public void assertExecuteShowShadowAlgorithmsContext() throws SQLException {
mockShardingSphereRuleMetaData();
- ResponseHeader response = RQLBackendHandlerFactory.newInstance(mock(ShowShadowAlgorithmsStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(QueryResponseHeader.class));
+ assertThat(RQLBackendHandlerFactory.newInstance(mock(ShowShadowAlgorithmsStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
}
@Test
public void assertExecuteDropShadowAlgorithmContext() throws SQLException {
mockShardingSphereRuleMetaData();
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(DropShadowAlgorithmStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ assertThat(RDLBackendHandlerFactory.newInstance(mock(DropShadowAlgorithmStatement.class), connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
public void assertExecuteDropResourceContext() throws SQLException {
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(UnregisterStorageUnitStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ assertThat(RDLBackendHandlerFactory.newInstance(mock(UnregisterStorageUnitStatement.class), connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test(expected = MissingRequiredRuleException.class)
public void assertExecuteDropReadwriteSplittingRuleContext() throws SQLException {
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(DropReadwriteSplittingRuleStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ assertThat(RDLBackendHandlerFactory.newInstance(mock(DropReadwriteSplittingRuleStatement.class), connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
public void assertExecuteCreateReadwriteSplittingRuleContext() throws SQLException {
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(CreateReadwriteSplittingRuleStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ assertThat(RDLBackendHandlerFactory.newInstance(mock(CreateReadwriteSplittingRuleStatement.class), connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test(expected = MissingRequiredRuleException.class)
public void assertExecuteAlterReadwriteSplittingRuleContext() throws SQLException {
- ResponseHeader response = RDLBackendHandlerFactory.newInstance(mock(AlterReadwriteSplittingRuleStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(UpdateResponseHeader.class));
+ assertThat(RDLBackendHandlerFactory.newInstance(mock(AlterReadwriteSplittingRuleStatement.class), connectionSession).execute(), instanceOf(UpdateResponseHeader.class));
}
@Test
public void assertExecuteShowResourceContext() throws SQLException {
- ResponseHeader response = RQLBackendHandlerFactory.newInstance(mock(ShowStorageUnitsStatement.class), connectionSession).execute();
- assertThat(response, instanceOf(QueryResponseHeader.class));
- }
-
- private void setContextManager(final boolean isGovernance) {
- ContextManager contextManager = mock(ContextManager.class, RETURNS_DEEP_STUBS);
- MetaDataContexts metaDataContexts = isGovernance ? mockMetaDataContexts() : new MetaDataContexts(mock(MetaDataPersistService.class), new ShardingSphereMetaData());
- when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
- ProxyContext.init(contextManager);
- }
-
- private MetaDataContexts mockMetaDataContexts() {
- MetaDataContexts result = mock(MetaDataContexts.class, RETURNS_DEEP_STUBS);
- ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
- when(database.getProtocolType()).thenReturn(new MySQLDatabaseType());
- when(database.getResourceMetaData().getDataSources()).thenReturn(Collections.emptyMap());
- when(database.getResourceMetaData().getNotExistedResources(any())).thenReturn(Collections.emptyList());
- when(database.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList()));
- when(result.getMetaData().containsDatabase("db")).thenReturn(true);
- when(result.getMetaData().getDatabase("db")).thenReturn(database);
- return result;
+ assertThat(RQLBackendHandlerFactory.newInstance(mock(ShowStorageUnitsStatement.class), connectionSession).execute(), instanceOf(QueryResponseHeader.class));
}
private void mockShardingSphereRuleMetaData() {
- MetaDataContexts metaDataContexts = ProxyContext.getInstance().getContextManager().getMetaDataContexts();
ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
when(database.getName()).thenReturn("db");
when(database.getResourceMetaData()).thenReturn(mock(ShardingSphereResourceMetaData.class));
@@ -242,13 +207,12 @@ public final class DistSQLBackendHandlerFactoryTest extends ProxyContextRestorer
ShadowRuleConfiguration ruleConfig = mockShadowRuleConfiguration();
when(ruleMetaData.getConfigurations()).thenReturn(Collections.singleton(ruleConfig));
when(database.getRuleMetaData()).thenReturn(ruleMetaData);
- when(metaDataContexts.getMetaData().getDatabase("db")).thenReturn(database);
+ when(ProxyContext.getInstance().getContextManager().getMetaDataContexts().getMetaData().getDatabase("db")).thenReturn(database);
}
private ShadowRuleConfiguration mockShadowRuleConfiguration() {
- ShadowRuleConfiguration result = mock(ShadowRuleConfiguration.class);
- when(result.getShadowAlgorithms()).thenReturn(mock(LinkedHashMap.class));
- when(result.getShadowAlgorithms().keySet()).thenReturn(Collections.singleton("default_shadow_algorithm"));
+ ShadowRuleConfiguration result = new ShadowRuleConfiguration();
+ result.getShadowAlgorithms().put("default_shadow_algorithm", mock(AlgorithmConfiguration.class));
return result;
}
}