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

zhaojinchao 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 2a47ef4a53d Add test cases on ClusterMetaDataManagerPersistService 
(#32858)
2a47ef4a53d is described below

commit 2a47ef4a53d8ed0f1ce92dd3ccedd481548a546e
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Sep 14 12:56:15 2024 +0800

    Add test cases on ClusterMetaDataManagerPersistService (#32858)
---
 .../schema/pojo/AlterSchemaMetaDataPOJO.java       |  2 +-
 .../ClusterMetaDataManagerPersistService.java      | 76 +++++++++----------
 .../ClusterMetaDataManagerPersistServiceTest.java  | 88 ++++++++++++++++++++++
 3 files changed, 127 insertions(+), 39 deletions(-)

diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/pojo/AlterSchemaMetaDataPOJO.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/pojo/AlterSchemaMetaDataPOJO.java
index cd5a8d2c74d..b63a5d3c19c 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/pojo/AlterSchemaMetaDataPOJO.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/pojo/AlterSchemaMetaDataPOJO.java
@@ -26,7 +26,7 @@ import java.util.Collection;
 import java.util.LinkedList;
 
 /**
- * alter schema metadata pojo.
+ * Alter schema metadata pojo.
  */
 @RequiredArgsConstructor
 @Getter
diff --git 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
index 535ae03a9af..3098922420f 100644
--- 
a/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
+++ 
b/mode/type/cluster/core/src/main/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistService.java
@@ -161,6 +161,27 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
         return 
toBeDroppedResourceNames.stream().filter(propsMap::containsKey).collect(Collectors.toList());
     }
     
+    private void afterStorageUnitsAltered(final String databaseName, final 
MetaDataContexts originalMetaDataContexts, final MetaDataContexts 
reloadMetaDataContexts) {
+        
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
 schema) -> metaDataPersistService.getDatabaseMetaDataService()
+                
.persistByAlterConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
 schemaName, schema));
+        // TODO confirm
+        
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
+                .ifPresent(optional -> 
optional.getSchemaData().forEach((schemaName, schemaData) -> 
metaDataPersistService.getShardingSphereDataPersistService()
+                        .persist(databaseName, schemaName, schemaData, 
originalMetaDataContexts.getMetaData().getDatabases())));
+        metaDataPersistService.persistReloadDatabaseByAlter(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+                
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
+    }
+    
+    private void afterStorageUnitsDropped(final String databaseName, final 
MetaDataContexts originalMetaDataContexts, final MetaDataContexts 
reloadMetaDataContexts) {
+        
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
 schema) -> metaDataPersistService.getDatabaseMetaDataService()
+                
.persistByDropConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
 schemaName, schema));
+        
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
+                .ifPresent(optional -> 
optional.getSchemaData().forEach((schemaName, schemaData) -> 
metaDataPersistService.getShardingSphereDataPersistService()
+                        .persist(databaseName, schemaName, schemaData, 
originalMetaDataContexts.getMetaData().getDatabases())));
+        metaDataPersistService.persistReloadDatabaseByDrop(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
+                
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
+    }
+    
     @Override
     public void alterSingleRuleConfiguration(final String databaseName, final 
Collection<RuleConfiguration> ruleConfigs) {
         ruleConfigs.removeIf(each -> 
!each.getClass().isAssignableFrom(SingleRuleConfiguration.class));
@@ -171,12 +192,18 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
     @Override
     public void alterRuleConfiguration(final String databaseName, final 
RuleConfiguration toBeAlteredRuleConfig) {
         MetaDataContexts originalMetaDataContexts = 
metaDataContextManager.getMetaDataContexts().get();
-        if (null != toBeAlteredRuleConfig) {
-            Collection<MetaDataVersion> metaDataVersions = 
metaDataPersistService.getDatabaseRulePersistService()
-                    .persistConfigurations(databaseName, 
Collections.singleton(toBeAlteredRuleConfig));
-            
metaDataPersistService.getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
-            afterRuleConfigurationAltered(databaseName, 
originalMetaDataContexts);
+        if (null == toBeAlteredRuleConfig) {
+            return;
         }
+        Collection<MetaDataVersion> metaDataVersions = 
metaDataPersistService.getDatabaseRulePersistService().persistConfigurations(databaseName,
 Collections.singleton(toBeAlteredRuleConfig));
+        
metaDataPersistService.getMetaDataVersionPersistService().switchActiveVersion(metaDataVersions);
+        afterRuleConfigurationAltered(databaseName, originalMetaDataContexts);
+    }
+    
+    private void afterRuleConfigurationAltered(final String databaseName, 
final MetaDataContexts originalMetaDataContexts) {
+        MetaDataContexts reloadMetaDataContexts = 
metaDataContextManager.getMetaDataContexts().get();
+        metaDataPersistService.persistReloadDatabaseByAlter(
+                databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName), 
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
     }
     
     @Override
@@ -193,6 +220,12 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
         afterRuleConfigurationDropped(databaseName, originalMetaDataContexts);
     }
     
+    private void afterRuleConfigurationDropped(final String databaseName, 
final MetaDataContexts originalMetaDataContexts) {
+        MetaDataContexts reloadMetaDataContexts = 
metaDataContextManager.getMetaDataContexts().get();
+        metaDataPersistService.persistReloadDatabaseByDrop(
+                databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName), 
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
+    }
+    
     @Override
     public void alterGlobalRuleConfiguration(final RuleConfiguration 
toBeAlteredRuleConfig) {
         
metaDataPersistService.getGlobalRuleService().persist(Collections.singleton(toBeAlteredRuleConfig));
@@ -213,37 +246,4 @@ public final class ClusterMetaDataManagerPersistService 
implements MetaDataManag
     public void dropTables(final String databaseName, final String schemaName, 
final Collection<String> tableNames) {
         tableNames.forEach(each -> 
metaDataPersistService.getDatabaseMetaDataService().getTableMetaDataPersistService().delete(databaseName,
 schemaName, each));
     }
-    
-    private void afterStorageUnitsAltered(final String databaseName, final 
MetaDataContexts originalMetaDataContexts, final MetaDataContexts 
reloadMetaDataContexts) {
-        
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
 schema) -> metaDataPersistService.getDatabaseMetaDataService()
-                
.persistByAlterConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
 schemaName, schema));
-        // TODO confirm
-        
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
-                .ifPresent(optional -> 
optional.getSchemaData().forEach((schemaName, schemaData) -> 
metaDataPersistService.getShardingSphereDataPersistService()
-                        .persist(databaseName, schemaName, schemaData, 
originalMetaDataContexts.getMetaData().getDatabases())));
-        metaDataPersistService.persistReloadDatabaseByAlter(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
-                
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
-    }
-    
-    private void afterStorageUnitsDropped(final String databaseName, final 
MetaDataContexts originalMetaDataContexts, final MetaDataContexts 
reloadMetaDataContexts) {
-        
reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getSchemas().forEach((schemaName,
 schema) -> metaDataPersistService.getDatabaseMetaDataService()
-                
.persistByDropConfiguration(reloadMetaDataContexts.getMetaData().getDatabase(databaseName).getName(),
 schemaName, schema));
-        
Optional.ofNullable(reloadMetaDataContexts.getStatistics().getDatabaseData().get(databaseName))
-                .ifPresent(optional -> 
optional.getSchemaData().forEach((schemaName, schemaData) -> 
metaDataPersistService.getShardingSphereDataPersistService()
-                        .persist(databaseName, schemaName, schemaData, 
originalMetaDataContexts.getMetaData().getDatabases())));
-        metaDataPersistService.persistReloadDatabaseByDrop(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
-                
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
-    }
-    
-    private void afterRuleConfigurationAltered(final String databaseName, 
final MetaDataContexts originalMetaDataContexts) {
-        MetaDataContexts reloadMetaDataContexts = 
metaDataContextManager.getMetaDataContexts().get();
-        metaDataPersistService.persistReloadDatabaseByAlter(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
-                
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
-    }
-    
-    private void afterRuleConfigurationDropped(final String databaseName, 
final MetaDataContexts originalMetaDataContexts) {
-        MetaDataContexts reloadMetaDataContexts = 
metaDataContextManager.getMetaDataContexts().get();
-        metaDataPersistService.persistReloadDatabaseByDrop(databaseName, 
reloadMetaDataContexts.getMetaData().getDatabase(databaseName),
-                
originalMetaDataContexts.getMetaData().getDatabase(databaseName));
-    }
 }
diff --git 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistServiceTest.java
 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistServiceTest.java
index 2a9fdd6931e..cb45774742b 100644
--- 
a/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistServiceTest.java
+++ 
b/mode/type/cluster/core/src/test/java/org/apache/shardingsphere/mode/manager/cluster/persist/ClusterMetaDataManagerPersistServiceTest.java
@@ -18,12 +18,17 @@
 package org.apache.shardingsphere.mode.manager.cluster.persist;
 
 import lombok.SneakyThrows;
+import org.apache.groovy.util.Maps;
+import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaMetaDataPOJO;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.pojo.AlterSchemaPOJO;
 import org.apache.shardingsphere.metadata.persist.MetaDataPersistService;
 import org.apache.shardingsphere.mode.metadata.MetaDataContextManager;
 import 
org.apache.shardingsphere.mode.persist.service.ListenerAssistedPersistService;
 import org.apache.shardingsphere.mode.spi.PersistRepository;
+import org.apache.shardingsphere.single.config.SingleRuleConfiguration;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -32,9 +37,16 @@ import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
 import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.Collection;
 import java.util.Collections;
+import java.util.LinkedList;
+import java.util.Properties;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -117,4 +129,80 @@ class ClusterMetaDataManagerPersistServiceTest {
         metaDataManagerPersistService.dropSchema("foo_db", 
Collections.singleton("foo_schema"));
         
verify(metaDataPersistService.getDatabaseMetaDataService()).dropSchema("foo_db",
 "foo_schema");
     }
+    
+    @Test
+    void assertAlterSchemaMetaData() {
+        metaDataManagerPersistService.alterSchemaMetaData(new 
AlterSchemaMetaDataPOJO("foo_db", "foo_schema", 
Collections.singleton("foo_ds")));
+        
verify(metaDataPersistService.getDatabaseMetaDataService().getTableMetaDataPersistService()).persist("foo_db",
 "foo_schema", Collections.emptyMap());
+        
verify(metaDataPersistService.getDatabaseMetaDataService().getViewMetaDataPersistService()).persist("foo_db",
 "foo_schema", Collections.emptyMap());
+    }
+    
+    @Test
+    void assertAlterSingleRuleConfiguration() {
+        Collection<RuleConfiguration> ruleConfigs = new 
LinkedList<>(Arrays.asList(new SingleRuleConfiguration(), 
mock(RuleConfiguration.class)));
+        
when(metaDataPersistService.getDatabaseRulePersistService().persistConfigurations("foo_db",
 ruleConfigs)).thenReturn(Collections.emptyList());
+        metaDataManagerPersistService.alterSingleRuleConfiguration("foo_db", 
ruleConfigs);
+        assertThat(ruleConfigs.size(), is(1));
+        
verify(metaDataPersistService.getMetaDataVersionPersistService()).switchActiveVersion(Collections.emptyList());
+    }
+    
+    @Test
+    void assertAlterNullRuleConfiguration() {
+        metaDataManagerPersistService.alterRuleConfiguration("foo_db", null);
+        verify(metaDataPersistService.getDatabaseRulePersistService(), 
times(0)).persistConfigurations(eq("foo_db"), any());
+    }
+    
+    @Test
+    void assertAlterRuleConfiguration() {
+        RuleConfiguration ruleConfig = new SingleRuleConfiguration();
+        metaDataManagerPersistService.alterRuleConfiguration("foo_db", 
ruleConfig);
+        
verify(metaDataPersistService.getDatabaseRulePersistService()).persistConfigurations("foo_db",
 Collections.singleton(ruleConfig));
+    }
+    
+    @Test
+    void assertRemoveNullRuleConfigurationItem() {
+        metaDataManagerPersistService.removeRuleConfigurationItem("foo_db", 
null);
+        verify(metaDataPersistService.getDatabaseRulePersistService(), 
times(0)).deleteConfigurations(eq("foo_db"), any());
+    }
+    
+    @Test
+    void assertRemoveRuleConfigurationItem() {
+        RuleConfiguration ruleConfig = new SingleRuleConfiguration();
+        metaDataManagerPersistService.removeRuleConfigurationItem("foo_db", 
ruleConfig);
+        
verify(metaDataPersistService.getDatabaseRulePersistService()).deleteConfigurations("foo_db",
 Collections.singleton(ruleConfig));
+    }
+    
+    @Test
+    void assertRemoveRuleConfiguration() {
+        metaDataManagerPersistService.removeRuleConfiguration("foo_db", 
"fixtureRule");
+        
verify(metaDataPersistService.getDatabaseRulePersistService()).delete("foo_db", 
"fixtureRule");
+    }
+    
+    @Test
+    void assertAlterGlobalRuleConfiguration() {
+        RuleConfiguration ruleConfig = new SingleRuleConfiguration();
+        metaDataManagerPersistService.alterGlobalRuleConfiguration(ruleConfig);
+        
verify(metaDataPersistService.getGlobalRuleService()).persist(Collections.singleton(ruleConfig));
+    }
+    
+    @Test
+    void assertAlterProperties() {
+        Properties props = new Properties();
+        metaDataManagerPersistService.alterProperties(props);
+        verify(metaDataPersistService.getPropsService()).persist(props);
+    }
+    
+    @Test
+    void assertCreateTable() {
+        ShardingSphereTable table = mock(ShardingSphereTable.class);
+        when(table.getName()).thenReturn("foo_tbl");
+        metaDataManagerPersistService.createTable("foo_db", "foo_schema", 
table, "foo_ds");
+        
verify(metaDataPersistService.getDatabaseMetaDataService().getTableMetaDataPersistService()).persist("foo_db",
 "foo_schema", Maps.of("foo_tbl", table));
+    }
+    
+    @Test
+    void assertDropTables() {
+        metaDataManagerPersistService.dropTables("foo_db", "foo_schema", 
Collections.singleton("foo_tbl"));
+        
verify(metaDataPersistService.getDatabaseMetaDataService().getTableMetaDataPersistService()).delete("foo_db",
 "foo_schema", "foo_tbl");
+    }
 }

Reply via email to