You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2023/03/24 15:02:00 UTC
[shardingsphere] branch master updated: Add ReadDataSourcesFilter SPI (#24818)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 648e65956e7 Add ReadDataSourcesFilter SPI (#24818)
648e65956e7 is described below
commit 648e65956e75b6e071bb664677da68d81ed91655
Author: Liang Zhang <zh...@apache.org>
AuthorDate: Fri Mar 24 23:01:50 2023 +0800
Add ReadDataSourcesFilter SPI (#24818)
---
.../ReadwriteSplittingDataSourceRouter.java | 16 +++++++-
.../route/ReadwriteSplittingSQLRouter.java | 1 -
.../route/filter/EnabledReadDataSourcesFilter.java | 40 +++++++++++++++++++
.../route/filter/ReadDataSourcesFilter.java | 39 +++++++++++++++++++
.../rule/ReadwriteSplittingDataSourceRule.java | 22 -----------
...itesplitting.route.filter.ReadDataSourcesFilter | 18 +++++++++
.../filter/EnabledReadDataSourcesFilterTest.java} | 45 ++++++++++------------
.../rule/ReadwriteSplittingDataSourceRuleTest.java | 45 ++--------------------
.../rule/ReadwriteSplittingRuleTest.java | 8 ++--
9 files changed, 139 insertions(+), 95 deletions(-)
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/impl/ReadwriteSplittingDataSourceRouter.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingDataSourceRouter.java
similarity index 86%
rename from features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/impl/ReadwriteSplittingDataSourceRouter.java
rename to features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingDataSourceRouter.java
index 51e5a072857..936337c2ae2 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/impl/ReadwriteSplittingDataSourceRouter.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingDataSourceRouter.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.route.impl;
+package org.apache.shardingsphere.readwritesplitting.route;
import lombok.RequiredArgsConstructor;
import org.apache.shardingsphere.infra.binder.statement.CommonSQLStatementContext;
@@ -23,11 +23,15 @@ import org.apache.shardingsphere.infra.binder.statement.SQLStatementContext;
import org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementContext;
import org.apache.shardingsphere.infra.context.ConnectionContext;
import org.apache.shardingsphere.infra.hint.HintManager;
+import org.apache.shardingsphere.infra.util.spi.ShardingSphereServiceLoader;
+import org.apache.shardingsphere.readwritesplitting.route.filter.ReadDataSourcesFilter;
import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceRule;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import org.apache.shardingsphere.sql.parser.sql.common.statement.dml.SelectStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml.SelectStatementHandler;
+import java.util.List;
+
/**
* Data source router for readwrite-splitting.
*/
@@ -91,6 +95,14 @@ public final class ReadwriteSplittingDataSourceRouter {
}
private String routeWithLoadBalancer() {
- return rule.getLoadBalancer().getDataSource(rule.getName(), rule.getWriteDataSource(), rule.getEnabledReplicaDataSources());
+ return rule.getLoadBalancer().getDataSource(rule.getName(), rule.getWriteDataSource(), getFilteredReadDataSources());
+ }
+
+ private List<String> getFilteredReadDataSources() {
+ List<String> result = rule.getReadwriteSplittingStrategy().getReadDataSources();
+ for (ReadDataSourcesFilter each : ShardingSphereServiceLoader.getServiceInstances(ReadDataSourcesFilter.class)) {
+ result = each.filter(rule, result);
+ }
+ return result;
}
}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouter.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouter.java
index 3789828e4fc..5085354408b 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouter.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/ReadwriteSplittingSQLRouter.java
@@ -27,7 +27,6 @@ import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
import org.apache.shardingsphere.readwritesplitting.constant.ReadwriteSplittingOrder;
-import org.apache.shardingsphere.readwritesplitting.route.impl.ReadwriteSplittingDataSourceRouter;
import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceRule;
import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/filter/EnabledReadDataSourcesFilter.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/filter/EnabledReadDataSourcesFilter.java
new file mode 100644
index 00000000000..4cf9b73490b
--- /dev/null
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/filter/EnabledReadDataSourcesFilter.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.readwritesplitting.route.filter;
+
+import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceRule;
+import org.apache.shardingsphere.readwritesplitting.strategy.type.DynamicReadwriteSplittingStrategy;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * Enabled read data sources filter.
+ */
+public final class EnabledReadDataSourcesFilter implements ReadDataSourcesFilter {
+
+ @Override
+ public List<String> filter(final ReadwriteSplittingDataSourceRule rule, final List<String> toBeFilteredReadDataSources) {
+ if (rule.getReadwriteSplittingStrategy() instanceof DynamicReadwriteSplittingStrategy || rule.getDisabledDataSourceNames().isEmpty()) {
+ return toBeFilteredReadDataSources;
+ }
+ List<String> result = new LinkedList<>(toBeFilteredReadDataSources);
+ result.removeIf(rule.getDisabledDataSourceNames()::contains);
+ return result;
+ }
+}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/filter/ReadDataSourcesFilter.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/filter/ReadDataSourcesFilter.java
new file mode 100644
index 00000000000..5276a96a5cb
--- /dev/null
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/route/filter/ReadDataSourcesFilter.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.readwritesplitting.route.filter;
+
+import org.apache.shardingsphere.infra.util.spi.annotation.SingletonSPI;
+import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceRule;
+
+import java.util.List;
+
+/**
+ * Read data sources filter.
+ */
+@SingletonSPI
+public interface ReadDataSourcesFilter {
+
+ /**
+ * Filter replica data sources.
+ *
+ * @param rule readwrite splitting data source rule
+ * @param toBeFilteredReadDataSources to be filtered read data sources
+ * @return filtered read data sources
+ */
+ List<String> filter(ReadwriteSplittingDataSourceRule rule, List<String> toBeFilteredReadDataSources);
+}
diff --git a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
index b0ca950be8e..93bea4d656a 100644
--- a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
+++ b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRule.java
@@ -17,7 +17,6 @@
package org.apache.shardingsphere.readwritesplitting.rule;
-import lombok.AccessLevel;
import lombok.Getter;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
@@ -25,12 +24,9 @@ import org.apache.shardingsphere.readwritesplitting.api.transaction.Transactiona
import org.apache.shardingsphere.readwritesplitting.spi.ReadQueryLoadBalanceAlgorithm;
import org.apache.shardingsphere.readwritesplitting.strategy.ReadwriteSplittingStrategy;
import org.apache.shardingsphere.readwritesplitting.strategy.ReadwriteSplittingStrategyFactory;
-import org.apache.shardingsphere.readwritesplitting.strategy.type.DynamicReadwriteSplittingStrategy;
import java.util.Collection;
import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
/**
* Readwrite-splitting data source rule.
@@ -46,7 +42,6 @@ public final class ReadwriteSplittingDataSourceRule {
private final ReadwriteSplittingStrategy readwriteSplittingStrategy;
- @Getter(AccessLevel.NONE)
private final Collection<String> disabledDataSourceNames = new HashSet<>();
public ReadwriteSplittingDataSourceRule(final ReadwriteSplittingDataSourceRuleConfiguration config, final TransactionalReadQueryStrategy transactionalReadQueryStrategy,
@@ -79,21 +74,4 @@ public final class ReadwriteSplittingDataSourceRule {
disabledDataSourceNames.remove(dataSourceName);
}
}
-
- /**
- * Get enabled replica data sources.
- *
- * @return enabled replica data sources
- */
- public List<String> getEnabledReplicaDataSources() {
- List<String> result = readwriteSplittingStrategy.getReadDataSources();
- if (readwriteSplittingStrategy instanceof DynamicReadwriteSplittingStrategy) {
- return result;
- }
- if (!disabledDataSourceNames.isEmpty()) {
- result = new LinkedList<>(result);
- result.removeIf(disabledDataSourceNames::contains);
- }
- return result;
- }
}
diff --git a/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.readwritesplitting.route.filter.ReadDataSourcesFilter b/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.readwritesplitting.route.filter.ReadDataSourcesFilter
new file mode 100644
index 00000000000..4021df64128
--- /dev/null
+++ b/features/readwrite-splitting/core/src/main/resources/META-INF/services/org.apache.shardingsphere.readwritesplitting.route.filter.ReadDataSourcesFilter
@@ -0,0 +1,18 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+org.apache.shardingsphere.readwritesplitting.route.filter.EnabledReadDataSourcesFilter
diff --git a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/filter/EnabledReadDataSourcesFilterTest.java
similarity index 50%
copy from features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
copy to features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/filter/EnabledReadDataSourcesFilterTest.java
index da8a8902d5a..457dc5081a8 100644
--- a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
+++ b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/filter/EnabledReadDataSourcesFilterTest.java
@@ -15,12 +15,13 @@
* limitations under the License.
*/
-package org.apache.shardingsphere.readwritesplitting.rule;
+package org.apache.shardingsphere.readwritesplitting.route.filter;
import org.apache.shardingsphere.readwritesplitting.algorithm.loadbalance.RandomReadQueryLoadBalanceAlgorithm;
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
+import org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceRule;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -30,51 +31,45 @@ import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-public final class ReadwriteSplittingDataSourceRuleTest {
+class EnabledReadDataSourcesFilterTest {
- private ReadwriteSplittingDataSourceRule readwriteSplittingDataSourceRule;
+ private ReadwriteSplittingDataSourceRule rule;
@BeforeEach
public void setUp() {
- readwriteSplittingDataSourceRule = new ReadwriteSplittingDataSourceRule(
+ rule = new ReadwriteSplittingDataSourceRule(
new ReadwriteSplittingDataSourceRuleConfiguration("test_pr",
new StaticReadwriteSplittingStrategyConfiguration("write_ds", Arrays.asList("read_ds_0", "read_ds_1")), null, null),
TransactionalReadQueryStrategy.DYNAMIC, new RandomReadQueryLoadBalanceAlgorithm(), Collections.emptyList());
}
@Test
- public void assertGetReadDataSourceNamesWithoutDisabledDataSourceNames() {
- assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), is(Arrays.asList("read_ds_0", "read_ds_1")));
+ void assertGetReadDataSourceNamesWithoutDisabledDataSourceNames() {
+ assertThat(new EnabledReadDataSourcesFilter().filter(rule, Arrays.asList("read_ds_0", "read_ds_1")), is(Arrays.asList("read_ds_0", "read_ds_1")));
}
@Test
- public void assertGetReadDataSourceNamesWithDisabledDataSourceNames() {
- readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", true);
- assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), is(Collections.singletonList("read_ds_1")));
+ void assertGetReadDataSourceNamesWithDisabledDataSourceNames() {
+ rule.updateDisabledDataSourceNames("read_ds_0", true);
+ assertThat(new EnabledReadDataSourcesFilter().filter(rule, Arrays.asList("read_ds_0", "read_ds_1")), is(Collections.singletonList("read_ds_1")));
}
@Test
- public void assertUpdateDisabledDataSourceNamesForDisabled() {
- readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", true);
- assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), is(Collections.singletonList("read_ds_1")));
+ void assertUpdateDisabledDataSourceNamesForDisabled() {
+ rule.updateDisabledDataSourceNames("read_ds_0", true);
+ assertThat(new EnabledReadDataSourcesFilter().filter(rule, Arrays.asList("read_ds_0", "read_ds_1")), is(Collections.singletonList("read_ds_1")));
}
@Test
- public void assertUpdateDisabledDataSourceNamesForEnabled() {
- readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", true);
- readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", false);
- assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), is(Arrays.asList("read_ds_0", "read_ds_1")));
+ void assertUpdateDisabledDataSourceNamesForEnabled() {
+ rule.updateDisabledDataSourceNames("read_ds_0", true);
+ rule.updateDisabledDataSourceNames("read_ds_0", false);
+ assertThat(new EnabledReadDataSourcesFilter().filter(rule, Arrays.asList("read_ds_0", "read_ds_1")), is(Arrays.asList("read_ds_0", "read_ds_1")));
}
@Test
- public void assertGetWriteDataSource() {
- String writeDataSourceName = readwriteSplittingDataSourceRule.getWriteDataSource();
- assertThat(writeDataSourceName, is("write_ds"));
- }
-
- @Test
- public void assertGetEnabledReplicaDataSources() {
- readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", true);
- assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), is(Collections.singletonList("read_ds_1")));
+ void assertGetEnabledReplicaDataSources() {
+ rule.updateDisabledDataSourceNames("read_ds_0", true);
+ assertThat(new EnabledReadDataSourcesFilter().filter(rule, Arrays.asList("read_ds_0", "read_ds_1")), is(Collections.singletonList("read_ds_1")));
}
}
diff --git a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
index da8a8902d5a..fa2e8a0008f 100644
--- a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
+++ b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingDataSourceRuleTest.java
@@ -21,7 +21,6 @@ import org.apache.shardingsphere.readwritesplitting.algorithm.loadbalance.Random
import org.apache.shardingsphere.readwritesplitting.api.rule.ReadwriteSplittingDataSourceRuleConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.strategy.StaticReadwriteSplittingStrategyConfiguration;
import org.apache.shardingsphere.readwritesplitting.api.transaction.TransactionalReadQueryStrategy;
-import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
@@ -30,51 +29,15 @@ import java.util.Collections;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
-public final class ReadwriteSplittingDataSourceRuleTest {
+class ReadwriteSplittingDataSourceRuleTest {
- private ReadwriteSplittingDataSourceRule readwriteSplittingDataSourceRule;
-
- @BeforeEach
- public void setUp() {
- readwriteSplittingDataSourceRule = new ReadwriteSplittingDataSourceRule(
+ @Test
+ void assertGetWriteDataSource() {
+ ReadwriteSplittingDataSourceRule readwriteSplittingDataSourceRule = new ReadwriteSplittingDataSourceRule(
new ReadwriteSplittingDataSourceRuleConfiguration("test_pr",
new StaticReadwriteSplittingStrategyConfiguration("write_ds", Arrays.asList("read_ds_0", "read_ds_1")), null, null),
TransactionalReadQueryStrategy.DYNAMIC, new RandomReadQueryLoadBalanceAlgorithm(), Collections.emptyList());
- }
-
- @Test
- public void assertGetReadDataSourceNamesWithoutDisabledDataSourceNames() {
- assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), is(Arrays.asList("read_ds_0", "read_ds_1")));
- }
-
- @Test
- public void assertGetReadDataSourceNamesWithDisabledDataSourceNames() {
- readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", true);
- assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), is(Collections.singletonList("read_ds_1")));
- }
-
- @Test
- public void assertUpdateDisabledDataSourceNamesForDisabled() {
- readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", true);
- assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), is(Collections.singletonList("read_ds_1")));
- }
-
- @Test
- public void assertUpdateDisabledDataSourceNamesForEnabled() {
- readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", true);
- readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", false);
- assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), is(Arrays.asList("read_ds_0", "read_ds_1")));
- }
-
- @Test
- public void assertGetWriteDataSource() {
String writeDataSourceName = readwriteSplittingDataSourceRule.getWriteDataSource();
assertThat(writeDataSourceName, is("write_ds"));
}
-
- @Test
- public void assertGetEnabledReplicaDataSources() {
- readwriteSplittingDataSourceRule.updateDisabledDataSourceNames("read_ds_0", true);
- assertThat(readwriteSplittingDataSourceRule.getEnabledReplicaDataSources(), is(Collections.singletonList("read_ds_1")));
- }
}
diff --git a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
index 912d7041d24..a967fb49f90 100644
--- a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
+++ b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRuleTest.java
@@ -76,7 +76,7 @@ public final class ReadwriteSplittingRuleTest {
ReadwriteSplittingRule readwriteSplittingRule = createReadwriteSplittingRule();
readwriteSplittingRule.updateStatus(new StorageNodeDataSourceChangedEvent(new QualifiedDatabase("readwrite_splitting_db.readwrite.read_ds"),
new StorageNodeDataSource(StorageNodeRole.MEMBER, DataSourceState.DISABLED)));
- assertThat(readwriteSplittingRule.getSingleDataSourceRule().getEnabledReplicaDataSources(), is(Arrays.asList("read_ds_0", "read_ds_1")));
+ assertThat(readwriteSplittingRule.getSingleDataSourceRule().getDisabledDataSourceNames(), is(Collections.singleton("read_ds")));
}
@Test
@@ -84,7 +84,7 @@ public final class ReadwriteSplittingRuleTest {
ReadwriteSplittingRule readwriteSplittingRule = createReadwriteSplittingRule();
readwriteSplittingRule.updateStatus(new StorageNodeDataSourceChangedEvent(new QualifiedDatabase("readwrite_splitting_db.readwrite.read_ds_0"),
new StorageNodeDataSource(StorageNodeRole.MEMBER, DataSourceState.DISABLED)));
- assertThat(readwriteSplittingRule.getSingleDataSourceRule().getEnabledReplicaDataSources(), is(Collections.singletonList("read_ds_1")));
+ assertThat(readwriteSplittingRule.getSingleDataSourceRule().getDisabledDataSourceNames(), is(Collections.singleton("read_ds_0")));
}
@Test
@@ -92,10 +92,10 @@ public final class ReadwriteSplittingRuleTest {
ReadwriteSplittingRule readwriteSplittingRule = createReadwriteSplittingRule();
readwriteSplittingRule.updateStatus(new StorageNodeDataSourceChangedEvent(new QualifiedDatabase("readwrite_splitting_db.readwrite.read_ds_0"),
new StorageNodeDataSource(StorageNodeRole.MEMBER, DataSourceState.DISABLED)));
- assertThat(readwriteSplittingRule.getSingleDataSourceRule().getEnabledReplicaDataSources(), is(Collections.singletonList("read_ds_1")));
+ assertThat(readwriteSplittingRule.getSingleDataSourceRule().getDisabledDataSourceNames(), is(Collections.singleton("read_ds_0")));
readwriteSplittingRule.updateStatus(new StorageNodeDataSourceChangedEvent(new QualifiedDatabase("readwrite_splitting_db.readwrite.read_ds_0"),
new StorageNodeDataSource(StorageNodeRole.MEMBER, DataSourceState.ENABLED)));
- assertThat(readwriteSplittingRule.getSingleDataSourceRule().getEnabledReplicaDataSources(), is(Arrays.asList("read_ds_0", "read_ds_1")));
+ assertThat(readwriteSplittingRule.getSingleDataSourceRule().getDisabledDataSourceNames(), is(Collections.emptySet()));
}
@Test