You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/06/27 14:51:41 UTC

[shardingsphere] branch master updated: Add assertion for assertUpdate method (#18637)

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 f26b9bfed7c Add assertion for assertUpdate method (#18637)
f26b9bfed7c is described below

commit f26b9bfed7c4654b5ec5331c721906b26c98a4fa
Author: DaneBrown <ta...@163.com>
AuthorDate: Mon Jun 27 22:51:32 2022 +0800

    Add assertion for assertUpdate method (#18637)
    
    * 1:add assert for assertUpdate test method
---
 .../updatable/AlterTransactionRuleHandlerTest.java | 32 ++++++++++++++--------
 1 file changed, 21 insertions(+), 11 deletions(-)

diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandlerTest.java
index ddbd90a7d25..967db4381b9 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/distsql/ral/common/updatable/AlterTransactionRuleHandlerTest.java
@@ -18,6 +18,11 @@
 package org.apache.shardingsphere.proxy.backend.text.distsql.ral.common.updatable;
 
 import com.atomikos.jdbc.AtomikosDataSourceBean;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.Properties;
+import java.util.stream.Collectors;
 import org.apache.shardingsphere.distsql.parser.segment.TransactionProviderSegment;
 import org.apache.shardingsphere.distsql.parser.statement.ral.common.updatable.AlterTransactionRuleStatement;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
@@ -27,6 +32,7 @@ import org.apache.shardingsphere.infra.instance.InstanceContext;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.metadata.database.rule.ShardingSphereRuleMetaData;
+import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import org.apache.shardingsphere.mode.metadata.MetaDataContexts;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
@@ -43,51 +49,55 @@ import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.junit.MockitoJUnitRunner;
 
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.Properties;
-
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @RunWith(MockitoJUnitRunner.class)
 public final class AlterTransactionRuleHandlerTest extends ProxyContextRestorer {
-    
+
     @Mock(answer = Answers.RETURNS_DEEP_STUBS)
     private ContextManager contextManager;
-    
+
     @Before
     public void before() {
         MetaDataContexts metaDataContexts = new MetaDataContexts(mock(MetaDataPersistService.class, RETURNS_DEEP_STUBS), createMetaData(), mock(OptimizerContext.class, RETURNS_DEEP_STUBS));
         when(contextManager.getMetaDataContexts()).thenReturn(metaDataContexts);
         ProxyContext.init(contextManager);
     }
-    
+
     private ShardingSphereMetaData createMetaData() {
         ShardingSphereRuleMetaData ruleMetaData = mock(ShardingSphereRuleMetaData.class);
         when(ruleMetaData.getRules()).thenReturn(new LinkedList<>(Collections.singleton(createTransactionRule())));
         return new ShardingSphereMetaData(Collections.singletonMap("foo_db", mockDatabase()), ruleMetaData, new ConfigurationProperties(new Properties()));
     }
-    
+
     private TransactionRule createTransactionRule() {
         TransactionRule result = new TransactionRule(new TransactionRuleConfiguration("LOCAL", null, new Properties()), Collections.emptyMap());
         result.setInstanceContext(mock(InstanceContext.class));
         result.getResources().put(DefaultDatabase.LOGIC_NAME, new ShardingSphereTransactionManagerEngine());
         return result;
     }
-    
+
     private ShardingSphereDatabase mockDatabase() {
         ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS);
         when(result.getResource().getDataSources()).thenReturn(Collections.singletonMap("foo_ds", mock(AtomikosDataSourceBean.class, RETURNS_DEEP_STUBS)));
         return result;
     }
-    
+
     @Test
     public void assertUpdate() {
         AlterTransactionRuleHandler handler = new AlterTransactionRuleHandler();
         handler.init(new AlterTransactionRuleStatement("LOCAL", new TransactionProviderSegment(null, new Properties())), mock(ConnectionSession.class, RETURNS_DEEP_STUBS));
         handler.update(contextManager);
-        // TODO assert update result
+        Collection<ShardingSphereRule> collection = contextManager.getMetaDataContexts().getMetaData().getGlobalRuleMetaData().getRules();
+        Collection<TransactionRule> transactionRules = collection.stream().map(item -> (TransactionRule) item).collect(Collectors.toList());
+        assertNotNull(transactionRules);
+        assertTrue(!transactionRules.isEmpty());
+        assertTrue(transactionRules.stream().anyMatch(item -> item.getConfiguration().getDefaultType().equals("LOCAL")));
+        assertTrue(transactionRules.stream().anyMatch(item -> item.getDatabases().containsKey("foo_db")));
+
     }
 }