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 e9b30732ed3 Add more test cases on ComputeNodePersistService (#32913)
e9b30732ed3 is described below

commit e9b30732ed3640249b40483e6eae87a3397f7852
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Sep 18 09:41:25 2024 +0800

    Add more test cases on ComputeNodePersistService (#32913)
    
    * Add more test cases on ComputeNodePersistService
    
    * Add more test cases on QualifiedDataSourceStatePersistService
---
 ...eadwriteSplittingStorageUnitStatusExecutor.java |  2 +-
 .../QualifiedDataSourceStatePersistService.java    | 14 +++++-----
 ...QualifiedDataSourceStatePersistServiceTest.java | 31 +++++++++++++++++-----
 3 files changed, 33 insertions(+), 14 deletions(-)

diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingStorageUnitStatusExecutor.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingStorageUnitStatusExecutor.java
index d96c8f6974d..e5e6b1ba1d5 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingStorageUnitStatusExecutor.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/update/AlterReadwriteSplittingStorageUnitStatusExecutor.java
@@ -74,7 +74,7 @@ public final class 
AlterReadwriteSplittingStorageUnitStatusExecutor
     
     private void updateStatus(final ContextManager contextManager, final 
AlterReadwriteSplittingStorageUnitStatusStatement sqlStatement) {
         DataSourceState status = sqlStatement.isEnable() ? 
DataSourceState.ENABLED : DataSourceState.DISABLED;
-        
contextManager.getPersistServiceFacade().getQualifiedDataSourceStatePersistService().updateState(database.getName(),
 sqlStatement.getRuleName(), sqlStatement.getStorageUnitName(), status);
+        
contextManager.getPersistServiceFacade().getQualifiedDataSourceStatePersistService().update(database.getName(),
 sqlStatement.getRuleName(), sqlStatement.getStorageUnitName(), status);
     }
     
     @Override
diff --git 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistService.java
 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistService.java
index d6e1579b8c4..75ba907af84 100644
--- 
a/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistService.java
+++ 
b/mode/core/src/main/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistService.java
@@ -43,9 +43,9 @@ public final class QualifiedDataSourceStatePersistService {
     /**
      * Load qualified data source states.
      *
-     * @return qualified data source states
+     * @return loaded qualified data source states
      */
-    public Map<String, QualifiedDataSourceState> loadStates() {
+    public Map<String, QualifiedDataSourceState> load() {
         Collection<String> qualifiedDataSourceNodes = 
repository.getChildrenKeys(QualifiedDataSourceNode.getRootPath());
         Map<String, QualifiedDataSourceState> result = new 
HashMap<>(qualifiedDataSourceNodes.size(), 1F);
         qualifiedDataSourceNodes.forEach(each -> {
@@ -60,12 +60,12 @@ public final class QualifiedDataSourceStatePersistService {
     /**
      * Update qualified data source state.
      *
-     * @param databaseName database name
-     * @param groupName group name
-     * @param storageUnitName storage unit name
-     * @param dataSourceState data source state
+     * @param databaseName to be updated database name
+     * @param groupName to be updated group name
+     * @param storageUnitName to be updated storage unit name
+     * @param dataSourceState to be updated data source state
      */
-    public void updateState(final String databaseName, final String groupName, 
final String storageUnitName, final DataSourceState dataSourceState) {
+    public void update(final String databaseName, final String groupName, 
final String storageUnitName, final DataSourceState dataSourceState) {
         QualifiedDataSourceState status = new 
QualifiedDataSourceState(dataSourceState);
         
repository.persist(QualifiedDataSourceNode.getQualifiedDataSourceNodePath(
                 new QualifiedDataSource(databaseName, groupName, 
storageUnitName)), YamlEngine.marshal(new 
YamlQualifiedDataSourceStateSwapper().swapToYamlConfiguration(status)));
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistServiceTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistServiceTest.java
index b5721114c2d..3719093359e 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistServiceTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/persist/service/QualifiedDataSourceStatePersistServiceTest.java
@@ -17,29 +17,48 @@
 
 package org.apache.shardingsphere.mode.persist.service;
 
+import org.apache.shardingsphere.infra.state.datasource.DataSourceState;
+import 
org.apache.shardingsphere.infra.state.datasource.qualified.QualifiedDataSourceState;
 import org.apache.shardingsphere.mode.spi.PersistRepository;
+import org.junit.jupiter.api.BeforeEach;
 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.List;
+import java.util.Map;
 
-import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.mockito.ArgumentMatchers.anyString;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 @ExtendWith(MockitoExtension.class)
 class QualifiedDataSourceStatePersistServiceTest {
     
+    private QualifiedDataSourceStatePersistService 
qualifiedDataSourceStatePersistService;
+    
     @Mock
     private PersistRepository repository;
     
+    @BeforeEach
+    void setUp() {
+        qualifiedDataSourceStatePersistService = new 
QualifiedDataSourceStatePersistService(repository);
+    }
+    
     @Test
     void assertLoadStatus() {
-        List<String> disabledDataSources = 
Arrays.asList("replica_query_db.readwrite_ds.replica_ds_0", 
"other_schema.other_ds.other_ds0");
-        
when(repository.getChildrenKeys(anyString())).thenReturn(disabledDataSources);
-        assertDoesNotThrow(() -> new 
QualifiedDataSourceStatePersistService(repository).loadStates());
+        
when(repository.getChildrenKeys("/nodes/qualified_data_sources")).thenReturn(Arrays.asList("foo_db.foo_group.foo_ds",
 "bar_db.bar_group.bar_ds"));
+        
when(repository.query("/nodes/qualified_data_sources/foo_db.foo_group.foo_ds")).thenReturn("state:
 ENABLED");
+        Map<String, QualifiedDataSourceState> actual = 
qualifiedDataSourceStatePersistService.load();
+        assertThat(actual.size(), is(1));
+        assertThat(actual.get("foo_db.foo_group.foo_ds").getState(), 
is(DataSourceState.ENABLED));
+    }
+    
+    @Test
+    void assertUpdateStatus() {
+        qualifiedDataSourceStatePersistService.update("foo_db", "foo_group", 
"foo_ds", DataSourceState.ENABLED);
+        
verify(repository).persist("/nodes/qualified_data_sources/foo_db.foo_group.foo_ds",
 "state: ENABLED\n");
     }
 }

Reply via email to