This is an automated email from the ASF dual-hosted git repository.

yx9o 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 5388e8cc0f5 Add more test cases on 
QualifiedReadwriteSplittingTransactionalDataSourceRouter (#33594)
5388e8cc0f5 is described below

commit 5388e8cc0f5533dafd16f08cabba22e44e68446e
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Nov 8 16:47:16 2024 +0800

    Add more test cases on 
QualifiedReadwriteSplittingTransactionalDataSourceRouter (#33594)
---
 ...SplittingTransactionalDataSourceRouterTest.java | 58 ++++++++++++----------
 1 file changed, 31 insertions(+), 27 deletions(-)

diff --git 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/qualified/type/QualifiedReadwriteSplittingTransactionalDataSourceRouterTest.java
 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/qualified/type/QualifiedReadwriteSplittingTransactionalDataSourceRouterTest.java
index 30f72d35fac..1e3225a7975 100644
--- 
a/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/qualified/type/QualifiedReadwriteSplittingTransactionalDataSourceRouterTest.java
+++ 
b/features/readwrite-splitting/core/src/test/java/org/apache/shardingsphere/readwritesplitting/route/qualified/type/QualifiedReadwriteSplittingTransactionalDataSourceRouterTest.java
@@ -20,14 +20,10 @@ package 
org.apache.shardingsphere.readwritesplitting.route.qualified.type;
 import 
org.apache.shardingsphere.infra.algorithm.loadbalancer.round.robin.RoundRobinLoadBalanceAlgorithm;
 import org.apache.shardingsphere.infra.hint.HintValueContext;
 import org.apache.shardingsphere.infra.session.connection.ConnectionContext;
-import 
org.apache.shardingsphere.infra.session.connection.transaction.TransactionConnectionContext;
 import 
org.apache.shardingsphere.readwritesplitting.config.rule.ReadwriteSplittingDataSourceGroupRuleConfiguration;
-import 
org.apache.shardingsphere.readwritesplitting.transaction.TransactionalReadQueryStrategy;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceGroupRule;
+import 
org.apache.shardingsphere.readwritesplitting.transaction.TransactionalReadQueryStrategy;
 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.util.Arrays;
 import java.util.Collections;
@@ -35,37 +31,45 @@ import java.util.Collections;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertFalse;
-import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
-@ExtendWith(MockitoExtension.class)
 class QualifiedReadwriteSplittingTransactionalDataSourceRouterTest {
     
-    @Mock
-    private HintValueContext hintValueContext;
+    @Test
+    void assertIsQualified() {
+        assertFalse(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(new 
ConnectionContext(Collections::emptySet)).isQualified(null, null, 
mock(HintValueContext.class)));
+    }
+    
+    @Test
+    void assertRouteWithFixedAndWithoutReadWriteSplitReplicaRoute() {
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig = createDataSourceGroupRuleConfiguration();
+        ReadwriteSplittingDataSourceGroupRule rule = new 
ReadwriteSplittingDataSourceGroupRule(dataSourceGroupConfig, 
TransactionalReadQueryStrategy.FIXED, new RoundRobinLoadBalanceAlgorithm());
+        assertThat(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(new 
ConnectionContext(Collections::emptySet)).route(rule), is("read_ds0"));
+    }
+    
+    @Test
+    void assertRouteWithFixedAndWithReadWriteSplitReplicaRoute() {
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig = createDataSourceGroupRuleConfiguration();
+        ReadwriteSplittingDataSourceGroupRule rule = new 
ReadwriteSplittingDataSourceGroupRule(dataSourceGroupConfig, 
TransactionalReadQueryStrategy.FIXED, new RoundRobinLoadBalanceAlgorithm());
+        ConnectionContext connectionContext = new 
ConnectionContext(Collections::emptySet);
+        
connectionContext.getTransactionContext().setReadWriteSplitReplicaRoute("read_ds1");
+        assertThat(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(connectionContext).route(rule),
 is("read_ds1"));
+    }
     
     @Test
-    void assertWriteRouteTransaction() {
-        ConnectionContext connectionContext = mock(ConnectionContext.class);
-        TransactionConnectionContext transactionConnectionContext = 
mock(TransactionConnectionContext.class);
-        
when(connectionContext.getTransactionContext()).thenReturn(transactionConnectionContext);
-        
when(connectionContext.getTransactionContext().isInTransaction()).thenReturn(Boolean.TRUE);
-        assertTrue(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(connectionContext).isQualified(null,
 null, hintValueContext));
-        
when(connectionContext.getTransactionContext().isInTransaction()).thenReturn(Boolean.FALSE);
-        assertFalse(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(connectionContext).isQualified(null,
 null, hintValueContext));
+    void assertRouteWithDynamic() {
+        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig = createDataSourceGroupRuleConfiguration();
+        ReadwriteSplittingDataSourceGroupRule rule = new 
ReadwriteSplittingDataSourceGroupRule(dataSourceGroupConfig, 
TransactionalReadQueryStrategy.DYNAMIC, new RoundRobinLoadBalanceAlgorithm());
+        assertThat(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(new 
ConnectionContext(Collections::emptySet)).route(rule), is("read_ds0"));
     }
     
     @Test
-    void assertRoute() {
-        ReadwriteSplittingDataSourceGroupRuleConfiguration 
dataSourceGroupConfig = new ReadwriteSplittingDataSourceGroupRuleConfiguration(
-                "test_config", "write_ds", Arrays.asList("read_ds_0", 
"read_ds_1"), null);
-        ReadwriteSplittingDataSourceGroupRule rule;
-        rule = new 
ReadwriteSplittingDataSourceGroupRule(dataSourceGroupConfig, 
TransactionalReadQueryStrategy.PRIMARY, null);
+    void assertRouteWithPrimary() {
+        ReadwriteSplittingDataSourceGroupRule rule = new 
ReadwriteSplittingDataSourceGroupRule(createDataSourceGroupRuleConfiguration(), 
TransactionalReadQueryStrategy.PRIMARY, null);
         assertThat(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(new 
ConnectionContext(Collections::emptySet)).route(rule), is("write_ds"));
-        rule = new 
ReadwriteSplittingDataSourceGroupRule(dataSourceGroupConfig, 
TransactionalReadQueryStrategy.FIXED, new RoundRobinLoadBalanceAlgorithm());
-        assertThat(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(new 
ConnectionContext(Collections::emptySet)).route(rule), is("read_ds_0"));
-        rule = new 
ReadwriteSplittingDataSourceGroupRule(dataSourceGroupConfig, 
TransactionalReadQueryStrategy.DYNAMIC, new RoundRobinLoadBalanceAlgorithm());
-        assertThat(new 
QualifiedReadwriteSplittingTransactionalDataSourceRouter(new 
ConnectionContext(Collections::emptySet)).route(rule), is("read_ds_0"));
+    }
+    
+    private ReadwriteSplittingDataSourceGroupRuleConfiguration 
createDataSourceGroupRuleConfiguration() {
+        return new 
ReadwriteSplittingDataSourceGroupRuleConfiguration("foo_group", "write_ds", 
Arrays.asList("read_ds0", "read_ds1"), null);
     }
 }

Reply via email to