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 fe82bb675a8 Add MetaDataContextsTest (#37209)
fe82bb675a8 is described below

commit fe82bb675a8eea0c4b8d06c22633d3f5d1aa5b74
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Nov 28 14:41:19 2025 +0800

    Add MetaDataContextsTest (#37209)
---
 .../transaction/DialectTransactionOption.java      |  2 +-
 .../mode/metadata/MetaDataContextsTest.java        | 58 ++++++++++++++++++++--
 2 files changed, 55 insertions(+), 5 deletions(-)

diff --git 
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/metadata/option/transaction/DialectTransactionOption.java
 
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/metadata/option/transaction/DialectTransactionOption.java
index 419e9bd8232..3316716ccad 100644
--- 
a/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/metadata/option/transaction/DialectTransactionOption.java
+++ 
b/database/connector/core/src/main/java/org/apache/shardingsphere/database/connector/core/metadata/database/metadata/option/transaction/DialectTransactionOption.java
@@ -37,7 +37,7 @@ public final class DialectTransactionOption {
     
     private final boolean isSupportDDLInXATransaction;
     
-    // TODO Investgate the reason of some databases cannot support meta data 
refreshed in transaction. The method should be removed finally after metadata 
refresh supported for all database.
+    // TODO Investigate the reason of some databases cannot support meta data 
refreshed in transaction. The method should be removed finally after metadata 
refresh supported for all database.
     private final boolean isSupportMetaDataRefreshInTransaction;
     
     private final int defaultIsolationLevel;
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
index b4d93b28e6e..e9a07fa8f24 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsTest.java
@@ -21,10 +21,17 @@ import 
org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
+import 
org.apache.shardingsphere.infra.metadata.database.resource.ResourceMetaData;
+import org.apache.shardingsphere.infra.metadata.database.rule.RuleMetaData;
 import 
org.apache.shardingsphere.infra.metadata.statistics.ShardingSphereStatistics;
 import 
org.apache.shardingsphere.infra.metadata.statistics.builder.ShardingSphereStatisticsFactory;
 import org.apache.shardingsphere.infra.spi.type.typed.TypedSPILoader;
+import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistFacade;
+import 
org.apache.shardingsphere.mode.metadata.persist.statistics.StatisticsPersistService;
+import 
org.apache.shardingsphere.test.infra.framework.extension.mock.AutoMockExtension;
+import 
org.apache.shardingsphere.test.infra.framework.extension.mock.StaticMockSettings;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 
 import java.util.Collections;
 import java.util.Properties;
@@ -32,13 +39,56 @@ import java.util.Properties;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
+@ExtendWith(AutoMockExtension.class)
+@StaticMockSettings(ShardingSphereStatisticsFactory.class)
 class MetaDataContextsTest {
     
     @Test
-    void assertGetDefaultMetaData() {
-        ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db", 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), mock(), mock(), 
Collections.emptyList());
-        ShardingSphereMetaData metaData = new 
ShardingSphereMetaData(Collections.singleton(database), mock(), mock(), new 
ConfigurationProperties(new Properties()));
-        assertThat(new MetaDataContexts(metaData, 
ShardingSphereStatisticsFactory.create(metaData, new 
ShardingSphereStatistics())).getMetaData().getDatabase("foo_db"), is(database));
+    void assertGetMetaData() {
+        ShardingSphereMetaData metaData = createMetaData("foo_db");
+        assertThat(new MetaDataContexts(metaData, new 
ShardingSphereStatistics()).getMetaData(), is(metaData));
+    }
+    
+    @Test
+    void assertGetStatistics() {
+        ShardingSphereStatistics statistics = new ShardingSphereStatistics();
+        assertThat(new MetaDataContexts(createMetaData("foo_db"), 
statistics).getStatistics(), is(statistics));
+    }
+    
+    @Test
+    void assertUpdateWithNewMetaDataContexts() {
+        MetaDataContexts metaDataContexts = new 
MetaDataContexts(createMetaData("foo_db"), new ShardingSphereStatistics());
+        MetaDataContexts newMetaDataContexts = new 
MetaDataContexts(createMetaData("bar_db"), new ShardingSphereStatistics());
+        metaDataContexts.update(newMetaDataContexts);
+        assertThat(metaDataContexts.getMetaData(), 
is(newMetaDataContexts.getMetaData()));
+        assertThat(metaDataContexts.getStatistics(), 
is(newMetaDataContexts.getStatistics()));
+    }
+    
+    @Test
+    void assertUpdateWithPersistFacade() {
+        ShardingSphereMetaData metaData = createMetaData("foo_db");
+        ShardingSphereStatistics loadedStatistics = new 
ShardingSphereStatistics();
+        ShardingSphereStatistics refreshedStatistics = new 
ShardingSphereStatistics();
+        StatisticsPersistService statisticsPersistService = 
mock(StatisticsPersistService.class);
+        MetaDataPersistFacade metaDataPersistFacade = 
mock(MetaDataPersistFacade.class);
+        
when(metaDataPersistFacade.getStatisticsService()).thenReturn(statisticsPersistService);
+        
when(statisticsPersistService.load(metaData)).thenReturn(loadedStatistics);
+        MetaDataContexts metaDataContexts = new 
MetaDataContexts(createMetaData("bar_db"), new ShardingSphereStatistics());
+        when(ShardingSphereStatisticsFactory.create(metaData, 
loadedStatistics)).thenReturn(refreshedStatistics);
+        metaDataContexts.update(metaData, metaDataPersistFacade);
+        verify(statisticsPersistService).load(metaData);
+        assertThat(metaDataContexts.getMetaData(), is(metaData));
+        assertThat(metaDataContexts.getStatistics(), is(refreshedStatistics));
+    }
+    
+    private ShardingSphereMetaData createMetaData(final String databaseName) {
+        DatabaseType databaseType = 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE");
+        ShardingSphereDatabase database = new ShardingSphereDatabase(
+                databaseName, databaseType, new 
ResourceMetaData(Collections.emptyMap()), new 
RuleMetaData(Collections.emptyList()), Collections.emptyList());
+        return new ShardingSphereMetaData(
+                Collections.singleton(database), new 
ResourceMetaData(Collections.emptyMap()), new 
RuleMetaData(Collections.emptyList()), new ConfigurationProperties(new 
Properties()));
     }
 }

Reply via email to