You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by wu...@apache.org on 2021/06/18 15:03:47 UTC
[shardingsphere] branch master updated: Refactor
ReadwriteSplittingRuleSegment (#10874)
This is an automated email from the ASF dual-hosted git repository.
wuweijie 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 e1cdf0d Refactor ReadwriteSplittingRuleSegment (#10874)
e1cdf0d is described below
commit e1cdf0d4cce2c22bf38320afc5825ab7155f1d17
Author: Liang Zhang <te...@163.com>
AuthorDate: Fri Jun 18 23:03:22 2021 +0800
Refactor ReadwriteSplittingRuleSegment (#10874)
* Refactor ReadwriteSplittingRuleSegment
* Fix test case
---
.../ReadwriteSplittingRuleSQLStatementVisitor.java | 31 +++--------
.../segment/ReadwriteSplittingRuleSegment.java | 25 ++++++---
...erReadwriteSplittingRuleBackendHandlerTest.java | 58 ++++++++------------
...teReadwriteSplittingRuleBackendHandlerTest.java | 61 ++++++++--------------
4 files changed, 67 insertions(+), 108 deletions(-)
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-parser/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingRuleSQLStatementVisitor.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-parser/src/main/java/org/apache/shardingsphere/readwrit [...]
index e2988b3..9282d4d 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-parser/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingRuleSQLStatementVisitor.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-parser/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/core/ReadwriteSplittingRuleSQLStatementVisitor.java
@@ -25,17 +25,16 @@ import org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleSt
import org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.AlterReadwriteSplittingRuleContext;
import org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.CreateReadwriteSplittingRuleContext;
import org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.DropReadwriteSplittingRuleContext;
-import org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.DynamicReadwriteSplittingRuleDefinitionContext;
import org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.ReadwriteSplittingRuleDefinitionContext;
import org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.SchemaNameContext;
import org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.ShowReadwriteSplittingRulesContext;
import org.apache.shardingsphere.distsql.parser.autogen.ReadwriteSplittingRuleStatementParser.StaticReadwriteSplittingRuleDefinitionContext;
import org.apache.shardingsphere.distsql.parser.segment.AlgorithmSegment;
+import org.apache.shardingsphere.readwritesplitting.distsql.parser.segment.ReadwriteSplittingRuleSegment;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.AlterReadwriteSplittingRuleStatement;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.CreateReadwriteSplittingRuleStatement;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.DropReadwriteSplittingRuleStatement;
import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.ShowReadwriteSplittingRulesStatement;
-import org.apache.shardingsphere.readwritesplitting.distsql.parser.segment.ReadwriteSplittingRuleSegment;
import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
import org.apache.shardingsphere.sql.parser.api.visitor.SQLVisitor;
import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.SchemaSegment;
@@ -72,31 +71,17 @@ public final class ReadwriteSplittingRuleSQLStatementVisitor extends ReadwriteSp
@Override
public ASTNode visitReadwriteSplittingRuleDefinition(final ReadwriteSplittingRuleDefinitionContext ctx) {
- ReadwriteSplittingRuleSegment result = (ReadwriteSplittingRuleSegment) (null != ctx.dynamicReadwriteSplittingRuleDefinition()
- ? visit(ctx.dynamicReadwriteSplittingRuleDefinition()) : visit(ctx.staticReadwriteSplittingRuleDefinition()));
Properties props = new Properties();
if (null != ctx.algorithmDefinition().algorithmProperties()) {
ctx.algorithmDefinition().algorithmProperties().algorithmProperty().forEach(each -> props.setProperty(each.key.getText(), each.value.getText()));
}
- result.setName(ctx.ruleName().getText());
- result.setLoadBalancer(ctx.algorithmDefinition().algorithmName().getText());
- result.setProps(props);
- return result;
- }
-
- @Override
- public ASTNode visitStaticReadwriteSplittingRuleDefinition(final StaticReadwriteSplittingRuleDefinitionContext ctx) {
- ReadwriteSplittingRuleSegment result = new ReadwriteSplittingRuleSegment();
- result.setWriteDataSource(ctx.writeResourceName().getText());
- result.setReadDataSources(ctx.resourceName().stream().map(RuleContext::getText).collect(Collectors.toList()));
- return result;
- }
-
- @Override
- public ASTNode visitDynamicReadwriteSplittingRuleDefinition(final DynamicReadwriteSplittingRuleDefinitionContext ctx) {
- ReadwriteSplittingRuleSegment result = new ReadwriteSplittingRuleSegment();
- result.setAutoAwareResource(ctx.IDENTIFIER().getText());
- return result;
+ if (null == ctx.staticReadwriteSplittingRuleDefinition()) {
+ return new ReadwriteSplittingRuleSegment(
+ ctx.ruleName().getText(), ctx.dynamicReadwriteSplittingRuleDefinition().IDENTIFIER().getText(), ctx.algorithmDefinition().algorithmName().getText(), props);
+ }
+ StaticReadwriteSplittingRuleDefinitionContext staticRuleDefinitionCtx = ctx.staticReadwriteSplittingRuleDefinition();
+ return new ReadwriteSplittingRuleSegment(ctx.ruleName().getText(), staticRuleDefinitionCtx.writeResourceName().getText(),
+ staticRuleDefinitionCtx.resourceName().stream().map(RuleContext::getText).collect(Collectors.toList()), ctx.algorithmDefinition().algorithmName().getText(), props);
}
@Override
diff --git a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/segment/ReadwriteSplittingRuleSegment.java b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-statement/src/main/java/org/apache/shardingsphere/readwritesp [...]
index 2d3b861..bc5be8d 100644
--- a/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/segment/ReadwriteSplittingRuleSegment.java
+++ b/shardingsphere-features/shardingsphere-readwrite-splitting/shardingsphere-readwrite-splitting-distsql/shardingsphere-readwrite-splitting-distsql-statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/parser/segment/ReadwriteSplittingRuleSegment.java
@@ -17,8 +17,9 @@
package org.apache.shardingsphere.readwritesplitting.distsql.parser.segment;
+import lombok.AccessLevel;
import lombok.Getter;
-import lombok.Setter;
+import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.sql.parser.api.visitor.ASTNode;
import java.util.Collection;
@@ -27,19 +28,27 @@ import java.util.Properties;
/**
* Readwrite-splitting rule segment.
*/
+@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
@Getter
-@Setter
public final class ReadwriteSplittingRuleSegment implements ASTNode {
- private String name;
+ private final String name;
- private String autoAwareResource;
+ private final String autoAwareResource;
- private String writeDataSource;
+ private final String writeDataSource;
- private Collection<String> readDataSources;
+ private final Collection<String> readDataSources;
- private String loadBalancer;
+ private final String loadBalancer;
- private Properties props;
+ private final Properties props;
+
+ public ReadwriteSplittingRuleSegment(final String name, final String autoAwareResource, final String loadBalancer, final Properties props) {
+ this(name, autoAwareResource, null, null, loadBalancer, props);
+ }
+
+ public ReadwriteSplittingRuleSegment(final String name, final String writeDataSource, final Collection<String> readDataSources, final String loadBalancer, final Properties props) {
+ this(name, null, writeDataSource, readDataSources, loadBalancer, props);
+ }
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterReadwriteSplittingRuleBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterReadwriteSplittingRuleBackendHandlerTest.java
index 7b21b7b..928f888 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterReadwriteSplittingRuleBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/AlterReadwriteSplittingRuleBackendHandlerTest.java
@@ -17,9 +17,6 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
-import com.google.common.collect.Maps;
-import org.apache.shardingsphere.readwritesplitting.distsql.parser.segment.ReadwriteSplittingRuleSegment;
-import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.AlterReadwriteSplittingRuleStatement;
import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
@@ -34,6 +31,8 @@ import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.distsql.parser.segment.ReadwriteSplittingRuleSegment;
+import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.AlterReadwriteSplittingRuleStatement;
import org.apache.shardingsphere.readwritesplitting.spi.ReplicaLoadBalanceAlgorithm;
import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.junit.Before;
@@ -45,8 +44,10 @@ import org.mockito.junit.MockitoJUnitRunner;
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.Collections;
+import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
+import java.util.Properties;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -88,22 +89,17 @@ public final class AlterReadwriteSplittingRuleBackendHandlerTest {
public void setUp() {
ShardingSphereServiceLoader.register(ReplicaLoadBalanceAlgorithm.class);
ProxyContext.getInstance().init(metaDataContexts, transactionContexts);
- when(metaDataContexts.getAllSchemaNames()).thenReturn(Collections.singletonList("test"));
+ when(metaDataContexts.getAllSchemaNames()).thenReturn(Collections.singleton("test"));
when(metaDataContexts.getMetaData(eq("test"))).thenReturn(shardingSphereMetaData);
when(shardingSphereMetaData.getRuleMetaData()).thenReturn(ruleMetaData);
}
@Test
public void assertExecute() {
- ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment();
- readwriteSplittingRuleSegment.setName("pr_ds");
- readwriteSplittingRuleSegment.setWriteDataSource("ds_write");
- readwriteSplittingRuleSegment.setReadDataSources(Arrays.asList("ds_read_0", "ds_read_1"));
- readwriteSplittingRuleSegment.setLoadBalancer("TEST");
- when(sqlStatement.getRules()).thenReturn(Collections.singletonList(readwriteSplittingRuleSegment));
- when(ruleMetaData.getConfigurations()).thenReturn(Collections
- .singletonList(new ReadwriteSplittingRuleConfiguration(new LinkedList<>(Collections
- .singleton(readwriteSplittingDataSourceRuleConfiguration)), Maps.newHashMap())));
+ ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment("pr_ds", "ds_write", Arrays.asList("ds_read_0", "ds_read_1"), "TEST", new Properties());
+ when(sqlStatement.getRules()).thenReturn(Collections.singleton(readwriteSplittingRuleSegment));
+ when(ruleMetaData.getConfigurations()).thenReturn(
+ Collections.singleton(new ReadwriteSplittingRuleConfiguration(new LinkedList<>(Collections.singleton(readwriteSplittingDataSourceRuleConfiguration)), new LinkedHashMap<>())));
when(readwriteSplittingDataSourceRuleConfiguration.getName()).thenReturn("pr_ds");
when(shardingSphereMetaData.getResource()).thenReturn(shardingSphereResource);
Map<String, DataSource> dataSourceMap = mock(Map.class);
@@ -122,41 +118,29 @@ public final class AlterReadwriteSplittingRuleBackendHandlerTest {
@Test(expected = ReadwriteSplittingRulesNotExistedException.class)
public void assertExecuteWithNoAlteredReadwriteSplittingRules() {
- ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment();
- readwriteSplittingRuleSegment.setName("pr_ds");
- readwriteSplittingRuleSegment.setWriteDataSource("ds_write");
- readwriteSplittingRuleSegment.setReadDataSources(Arrays.asList("ds_read_0", "ds_read_1"));
- readwriteSplittingRuleSegment.setLoadBalancer("TEST");
- when(sqlStatement.getRules()).thenReturn(Collections.singletonList(readwriteSplittingRuleSegment));
- when(ruleMetaData.getConfigurations()).thenReturn(Collections.singletonList(new ReadwriteSplittingRuleConfiguration(Collections.emptyList(), Maps.newHashMap())));
+ ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment("pr_ds", "ds_write", Arrays.asList("ds_read_0", "ds_read_1"), "TEST", new Properties());
+ when(sqlStatement.getRules()).thenReturn(Collections.singleton(readwriteSplittingRuleSegment));
+ when(ruleMetaData.getConfigurations()).thenReturn(Collections.singleton(new ReadwriteSplittingRuleConfiguration(Collections.emptyList(), Collections.emptyMap())));
handler.execute("test", sqlStatement);
}
@Test(expected = ResourceNotExistedException.class)
public void assertExecuteWithNotExistResources() {
- ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment();
- readwriteSplittingRuleSegment.setName("pr_ds");
- readwriteSplittingRuleSegment.setWriteDataSource("ds_write");
- readwriteSplittingRuleSegment.setReadDataSources(Arrays.asList("ds_read_0", "ds_read_1"));
- when(sqlStatement.getRules()).thenReturn(Collections.singletonList(readwriteSplittingRuleSegment));
- when(ruleMetaData.getConfigurations()).thenReturn(Collections
- .singletonList(new ReadwriteSplittingRuleConfiguration(Collections
- .singleton(readwriteSplittingDataSourceRuleConfiguration), Maps.newHashMap())));
+ ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment("pr_ds", "ds_write", Arrays.asList("ds_read_0", "ds_read_1"), null, new Properties());
+ when(sqlStatement.getRules()).thenReturn(Collections.singleton(readwriteSplittingRuleSegment));
+ when(ruleMetaData.getConfigurations()).thenReturn(
+ Collections.singleton(new ReadwriteSplittingRuleConfiguration(Collections.singleton(readwriteSplittingDataSourceRuleConfiguration), Collections.emptyMap())));
when(readwriteSplittingDataSourceRuleConfiguration.getName()).thenReturn("pr_ds");
handler.execute("test", sqlStatement);
}
@Test(expected = InvalidLoadBalancersException.class)
public void assertExecuteWithInvalidLoadBalancer() {
- ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment();
- readwriteSplittingRuleSegment.setName("pr_ds");
- readwriteSplittingRuleSegment.setWriteDataSource("ds_write");
- readwriteSplittingRuleSegment.setReadDataSources(Arrays.asList("ds_read_0", "ds_read_1"));
- readwriteSplittingRuleSegment.setLoadBalancer("notExistLoadBalancer");
- when(sqlStatement.getRules()).thenReturn(Collections.singletonList(readwriteSplittingRuleSegment));
- when(ruleMetaData.getConfigurations()).thenReturn(Collections
- .singletonList(new ReadwriteSplittingRuleConfiguration(Collections
- .singleton(readwriteSplittingDataSourceRuleConfiguration), Maps.newHashMap())));
+ ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment(
+ "pr_ds", "ds_write", Arrays.asList("ds_read_0", "ds_read_1"), "notExistLoadBalancer", new Properties());
+ when(sqlStatement.getRules()).thenReturn(Collections.singleton(readwriteSplittingRuleSegment));
+ when(ruleMetaData.getConfigurations()).thenReturn(
+ Collections.singleton(new ReadwriteSplittingRuleConfiguration(Collections.singleton(readwriteSplittingDataSourceRuleConfiguration), Collections.emptyMap())));
when(readwriteSplittingDataSourceRuleConfiguration.getName()).thenReturn("pr_ds");
when(shardingSphereMetaData.getResource()).thenReturn(shardingSphereResource);
Map<String, DataSource> dataSourceMap = mock(Map.class);
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateReadwriteSplittingRuleBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateReadwriteSplittingRuleBackendHandlerTest.java
index cdd7885..98c7a44 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateReadwriteSplittingRuleBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/rdl/impl/CreateReadwriteSplittingRuleBackendHandlerTest.java
@@ -17,9 +17,6 @@
package org.apache.shardingsphere.proxy.backend.text.distsql.rdl.impl;
-import com.google.common.collect.Maps;
-import org.apache.shardingsphere.readwritesplitting.distsql.parser.segment.ReadwriteSplittingRuleSegment;
-import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.CreateReadwriteSplittingRuleStatement;
import org.apache.shardingsphere.infra.context.metadata.MetaDataContexts;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
@@ -34,6 +31,8 @@ import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
import org.apache.shardingsphere.proxy.backend.response.header.update.UpdateResponseHeader;
import org.apache.shardingsphere.readwritesplitting.api.ReadwriteSplittingRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
+import org.apache.shardingsphere.readwritesplitting.distsql.parser.segment.ReadwriteSplittingRuleSegment;
+import org.apache.shardingsphere.readwritesplitting.distsql.parser.statement.CreateReadwriteSplittingRuleStatement;
import org.apache.shardingsphere.readwritesplitting.spi.ReplicaLoadBalanceAlgorithm;
import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.junit.Before;
@@ -49,6 +48,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
+import java.util.Properties;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@@ -87,19 +87,15 @@ public final class CreateReadwriteSplittingRuleBackendHandlerTest {
public void setUp() {
ShardingSphereServiceLoader.register(ReplicaLoadBalanceAlgorithm.class);
ProxyContext.getInstance().init(metaDataContexts, transactionContexts);
- when(metaDataContexts.getAllSchemaNames()).thenReturn(Collections.singletonList("test"));
+ when(metaDataContexts.getAllSchemaNames()).thenReturn(Collections.singleton("test"));
when(metaDataContexts.getMetaData(eq("test"))).thenReturn(shardingSphereMetaData);
when(shardingSphereMetaData.getRuleMetaData()).thenReturn(ruleMetaData);
}
@Test
public void assertExecute() {
- ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment();
- readwriteSplittingRuleSegment.setName("pr_ds");
- readwriteSplittingRuleSegment.setWriteDataSource("ds_write");
- readwriteSplittingRuleSegment.setReadDataSources(Arrays.asList("ds_read_0", "ds_read_1"));
- readwriteSplittingRuleSegment.setLoadBalancer("TEST");
- when(sqlStatement.getRules()).thenReturn(Collections.singletonList(readwriteSplittingRuleSegment));
+ ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment("pr_ds", "ds_write", Arrays.asList("ds_read_0", "ds_read_1"), "TEST", new Properties());
+ when(sqlStatement.getRules()).thenReturn(Collections.singleton(readwriteSplittingRuleSegment));
when(shardingSphereMetaData.getResource()).thenReturn(shardingSphereResource);
Map<String, DataSource> dataSourceMap = mock(Map.class);
when(shardingSphereResource.getDataSources()).thenReturn(dataSourceMap);
@@ -114,31 +110,22 @@ public final class CreateReadwriteSplittingRuleBackendHandlerTest {
ReadwriteSplittingDataSourceRuleConfiguration readwriteSplittingDataSourceRuleConfiguration
= new ReadwriteSplittingDataSourceRuleConfiguration("pr_ds", "",
"ds_write", Arrays.asList("ds_read_0", "ds_read_1"), "test");
- when(ruleMetaData.getConfigurations()).thenReturn(Collections.singletonList(new ReadwriteSplittingRuleConfiguration(Collections
- .singleton(readwriteSplittingDataSourceRuleConfiguration), Maps.newHashMap())));
- ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment();
- readwriteSplittingRuleSegment.setName("pr_ds");
- readwriteSplittingRuleSegment.setWriteDataSource("ds_write");
- readwriteSplittingRuleSegment.setReadDataSources(Arrays.asList("ds_read_0", "ds_read_1"));
- readwriteSplittingRuleSegment.setLoadBalancer("TEST");
- when(sqlStatement.getRules()).thenReturn(Collections.singletonList(readwriteSplittingRuleSegment));
+ when(ruleMetaData.getConfigurations()).thenReturn(
+ Collections.singleton(new ReadwriteSplittingRuleConfiguration(Collections.singleton(readwriteSplittingDataSourceRuleConfiguration), Collections.emptyMap())));
+ ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment("pr_ds", "ds_write", Arrays.asList("ds_read_0", "ds_read_1"), "TEST", new Properties());
+ when(sqlStatement.getRules()).thenReturn(Collections.singleton(readwriteSplittingRuleSegment));
handler.execute("test", sqlStatement);
}
@Test
public void assertExecuteWithExistReadwriteConfiguration() {
- ReadwriteSplittingDataSourceRuleConfiguration readwriteSplittingDataSourceRuleConfiguration
- = new ReadwriteSplittingDataSourceRuleConfiguration("pr_ds_1", "",
- "ds_write", Arrays.asList("ds_read_0", "ds_read_1"), "test");
+ ReadwriteSplittingDataSourceRuleConfiguration readwriteSplittingDataSourceRuleConfig = new ReadwriteSplittingDataSourceRuleConfiguration(
+ "pr_ds_1", "", "ds_write", Arrays.asList("ds_read_0", "ds_read_1"), "test");
Collection<ReadwriteSplittingDataSourceRuleConfiguration> dataSources = new LinkedList<>();
- dataSources.add(readwriteSplittingDataSourceRuleConfiguration);
- when(ruleMetaData.getConfigurations()).thenReturn(Collections.singletonList(new ReadwriteSplittingRuleConfiguration(dataSources, new HashMap<>())));
- ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment();
- readwriteSplittingRuleSegment.setName("pr_ds");
- readwriteSplittingRuleSegment.setWriteDataSource("ds_write");
- readwriteSplittingRuleSegment.setReadDataSources(Arrays.asList("ds_read_0", "ds_read_1"));
- readwriteSplittingRuleSegment.setLoadBalancer("TEST");
- when(sqlStatement.getRules()).thenReturn(Collections.singletonList(readwriteSplittingRuleSegment));
+ dataSources.add(readwriteSplittingDataSourceRuleConfig);
+ when(ruleMetaData.getConfigurations()).thenReturn(Collections.singleton(new ReadwriteSplittingRuleConfiguration(dataSources, new HashMap<>())));
+ ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment("pr_ds", "ds_write", Arrays.asList("ds_read_0", "ds_read_1"), "TEST", new Properties());
+ when(sqlStatement.getRules()).thenReturn(Collections.singleton(readwriteSplittingRuleSegment));
when(shardingSphereMetaData.getResource()).thenReturn(shardingSphereResource);
Map<String, DataSource> dataSourceMap = mock(Map.class);
when(shardingSphereResource.getDataSources()).thenReturn(dataSourceMap);
@@ -150,22 +137,16 @@ public final class CreateReadwriteSplittingRuleBackendHandlerTest {
@Test(expected = ResourceNotExistedException.class)
public void assertExecuteWithNotExistResources() {
- ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment();
- readwriteSplittingRuleSegment.setName("pr_ds");
- readwriteSplittingRuleSegment.setWriteDataSource("ds_write");
- readwriteSplittingRuleSegment.setReadDataSources(Arrays.asList("ds_read_0", "ds_read_1"));
- when(sqlStatement.getRules()).thenReturn(Collections.singletonList(readwriteSplittingRuleSegment));
+ ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment("pr_ds", "ds_write", Arrays.asList("ds_read_0", "ds_read_1"), null, new Properties());
+ when(sqlStatement.getRules()).thenReturn(Collections.singleton(readwriteSplittingRuleSegment));
handler.execute("test", sqlStatement);
}
@Test(expected = InvalidLoadBalancersException.class)
public void assertExecuteWithInvalidLoadBalancer() {
- ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment();
- readwriteSplittingRuleSegment.setName("pr_ds");
- readwriteSplittingRuleSegment.setWriteDataSource("ds_write");
- readwriteSplittingRuleSegment.setReadDataSources(Arrays.asList("ds_read_0", "ds_read_1"));
- readwriteSplittingRuleSegment.setLoadBalancer("notExistLoadBalancer");
- when(sqlStatement.getRules()).thenReturn(Collections.singletonList(readwriteSplittingRuleSegment));
+ ReadwriteSplittingRuleSegment readwriteSplittingRuleSegment = new ReadwriteSplittingRuleSegment(
+ "pr_ds", "ds_write", Arrays.asList("ds_read_0", "ds_read_1"), "notExistLoadBalancer", new Properties());
+ when(sqlStatement.getRules()).thenReturn(Collections.singleton(readwriteSplittingRuleSegment));
when(shardingSphereMetaData.getResource()).thenReturn(shardingSphereResource);
Map<String, DataSource> dataSourceMap = mock(Map.class);
when(shardingSphereResource.getDataSources()).thenReturn(dataSourceMap);