This is an automated email from the ASF dual-hosted git repository. duanzhengqiang 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 70b9915adff Optimize properties data export in ClusterExportMetaDataGenerator (#35194) 70b9915adff is described below commit 70b9915adff009b6d5ec9c8ad737a8d565f13e7a Author: jiangML <1060319...@qq.com> AuthorDate: Mon Apr 14 15:12:18 2025 +0800 Optimize properties data export in ClusterExportMetaDataGenerator (#35194) * Optimize properties data export in ClusterExportMetaDataGenerator * Fix test error --- .../util/ClusterExportMetaDataGenerator.java | 12 +------- .../export/ExportMetaDataExecutorTest.java | 33 +++++++++++++++++++++- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ClusterExportMetaDataGenerator.java b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ClusterExportMetaDataGenerator.java index 3a5ddb3c29e..2f029ed61a9 100644 --- a/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ClusterExportMetaDataGenerator.java +++ b/proxy/backend/core/src/main/java/org/apache/shardingsphere/proxy/backend/util/ClusterExportMetaDataGenerator.java @@ -77,17 +77,7 @@ public final class ClusterExportMetaDataGenerator { } private String generatePropsData(final Properties props) { - if (props.isEmpty()) { - return ""; - } - StringBuilder result = new StringBuilder(); - result.append("props:").append(System.lineSeparator()); - for (Entry<Object, Object> entry : props.entrySet()) { - if (null != entry.getValue() && !"".equals(entry.getValue().toString())) { - result.append(" ").append(entry.getKey()).append(": ").append(entry.getValue()).append(System.lineSeparator()); - } - } - return result.toString(); + return props.isEmpty() ? "" : YamlEngine.marshal(Collections.singletonMap("props", props)); } @SuppressWarnings({"rawtypes", "unchecked"}) diff --git a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ExportMetaDataExecutorTest.java b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ExportMetaDataExecutorTest.java index 8d2b0e93fae..81f38a41d90 100644 --- a/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ExportMetaDataExecutorTest.java +++ b/proxy/backend/core/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/export/ExportMetaDataExecutorTest.java @@ -26,6 +26,8 @@ import org.apache.shardingsphere.globalclock.rule.builder.DefaultGlobalClockRule import org.apache.shardingsphere.infra.config.mode.ModeConfiguration; import org.apache.shardingsphere.infra.config.props.ConfigurationProperties; import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey; +import org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationProperties; +import org.apache.shardingsphere.infra.config.props.temporary.TemporaryConfigurationPropertyKey; import org.apache.shardingsphere.infra.database.core.type.DatabaseType; import org.apache.shardingsphere.infra.datasource.pool.props.creator.DataSourcePoolPropertiesCreator; import org.apache.shardingsphere.infra.datasource.pool.props.domain.DataSourcePoolProperties; @@ -65,6 +67,7 @@ import java.util.Collections; import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; import java.util.Properties; import java.util.stream.Collectors; @@ -230,11 +233,39 @@ class ExportMetaDataExecutorTest { return; } assertThat(actual.size(), is(expected.size())); + ConfigurationProperties actualConfigProperties = new ConfigurationProperties(actual); + ConfigurationProperties expectedConfigProperties = new ConfigurationProperties(expected); + TemporaryConfigurationProperties actualTemporaryConfigProperties = new TemporaryConfigurationProperties(actual); + TemporaryConfigurationProperties expectedTemporaryConfigProperties = new TemporaryConfigurationProperties(expected); for (Entry<Object, Object> entry : expected.entrySet()) { - assertThat(actual.get(entry.getKey()), is(entry.getValue())); + Object actualValue = findConfigurationPropertyKey(String.valueOf(entry.getKey())) + .map(actualConfigProperties::getValue) + .orElseGet(() -> findTemporaryConfigurationPropertyKey(String.valueOf(entry.getKey())).map(actualTemporaryConfigProperties::getValue).orElse(null)); + Object expectedValue = findConfigurationPropertyKey(String.valueOf(entry.getKey())) + .map(expectedConfigProperties::getValue) + .orElseGet(() -> findTemporaryConfigurationPropertyKey(String.valueOf(entry.getKey())).map(expectedTemporaryConfigProperties::getValue).orElse(null)); + assertThat(actualValue, is(expectedValue)); } } + private Optional<ConfigurationPropertyKey> findConfigurationPropertyKey(final String key) { + for (ConfigurationPropertyKey each : ConfigurationPropertyKey.values()) { + if (each.getKey().equalsIgnoreCase(key)) { + return Optional.of(each); + } + } + return Optional.empty(); + } + + private Optional<TemporaryConfigurationPropertyKey> findTemporaryConfigurationPropertyKey(final String key) { + for (TemporaryConfigurationPropertyKey each : TemporaryConfigurationPropertyKey.values()) { + if (each.getKey().equalsIgnoreCase(key)) { + return Optional.of(each); + } + } + return Optional.empty(); + } + private void assertDatabaseConfig(final Map<String, String> actual, final Map<String, String> expected) { assertThat(actual.size(), is(expected.size())); for (Entry<String, String> entry : expected.entrySet()) {