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()));
}
}