This is an automated email from the ASF dual-hosted git repository.
jianglongtao 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 7682b81a2b1 Enhance the test case of ConvertYamlConfigurationHandler.
(#22176)
7682b81a2b1 is described below
commit 7682b81a2b1cef95441192d0936088bf404a11de
Author: yx9o <[email protected]>
AuthorDate: Tue Nov 15 14:49:20 2022 +0800
Enhance the test case of ConvertYamlConfigurationHandler. (#22176)
* Enhance the test case of ConvertYamlConfigurationHandler.
* Update.
---
.../queryable/ConvertYamlConfigurationHandler.java | 32 ++++++++++------------
.../ConvertYamlConfigurationHandlerTest.java | 24 ++++++++++++++--
2 files changed, 35 insertions(+), 21 deletions(-)
diff --git
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationHandler.java
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationHandler.java
index 9797990418e..abdab29b287 100644
---
a/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationHandler.java
+++
b/proxy/backend/src/main/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationHandler.java
@@ -234,34 +234,34 @@ public final class ConvertYamlConfigurationHandler
extends QueryableRALBackendHa
result.append(DistSQLScriptConstants.SEMI).append(System.lineSeparator()).append(System.lineSeparator());
}
- private String appendTableStrategy(final ShardingTableRuleConfiguration
shardingTableRuleConfig,
+ private String appendTableStrategy(final ShardingTableRuleConfiguration
ruleConfig,
final Map<String,
AlgorithmConfiguration> shardingAlgorithms, final Map<String,
AlgorithmConfiguration> keyGenerators) {
StringBuilder result = new StringBuilder();
- if (null != shardingTableRuleConfig.getDatabaseShardingStrategy()) {
-
appendStrategy(shardingTableRuleConfig.getDatabaseShardingStrategy(),
DistSQLScriptConstants.DATABASE_STRATEGY, result, shardingAlgorithms);
+ if (null != ruleConfig.getDatabaseShardingStrategy()) {
+ appendStrategy(ruleConfig.getDatabaseShardingStrategy(),
DistSQLScriptConstants.DATABASE_STRATEGY, result, shardingAlgorithms);
}
- if (null != shardingTableRuleConfig.getTableShardingStrategy()) {
- appendStrategy(shardingTableRuleConfig.getTableShardingStrategy(),
DistSQLScriptConstants.TABLE_STRATEGY, result, shardingAlgorithms);
+ if (null != ruleConfig.getTableShardingStrategy()) {
+ appendStrategy(ruleConfig.getTableShardingStrategy(),
DistSQLScriptConstants.TABLE_STRATEGY, result, shardingAlgorithms);
}
- if (null != shardingTableRuleConfig.getKeyGenerateStrategy()) {
- KeyGenerateStrategyConfiguration keyGenerateStrategyConfig =
shardingTableRuleConfig.getKeyGenerateStrategy();
+ if (null != ruleConfig.getKeyGenerateStrategy()) {
+ KeyGenerateStrategyConfiguration keyGenerateStrategyConfig =
ruleConfig.getKeyGenerateStrategy();
String algorithmDefinition =
getAlgorithmType(keyGenerators.get(keyGenerateStrategyConfig.getKeyGeneratorName()));
result.append(String.format(DistSQLScriptConstants.KEY_GENERATOR_STRATEGY,
keyGenerateStrategyConfig.getColumn(), algorithmDefinition));
}
return result.substring(0, result.lastIndexOf(","));
}
- private void appendStrategy(final ShardingStrategyConfiguration
shardingStrategyConfiguration, final String strategyType,
+ private void appendStrategy(final ShardingStrategyConfiguration
strategyConfig, final String strategyType,
final StringBuilder result, final Map<String,
AlgorithmConfiguration> shardingAlgorithms) {
- String type = shardingStrategyConfiguration.getType().toLowerCase();
- String algorithmDefinition =
getAlgorithmType(shardingAlgorithms.get(shardingStrategyConfiguration.getShardingAlgorithmName()));
+ String type = strategyConfig.getType().toLowerCase();
+ String algorithmDefinition =
getAlgorithmType(shardingAlgorithms.get(strategyConfig.getShardingAlgorithmName()));
switch (type) {
case DistSQLScriptConstants.STANDARD:
- StandardShardingStrategyConfiguration
standardShardingStrategyConfig = (StandardShardingStrategyConfiguration)
shardingStrategyConfiguration;
+ StandardShardingStrategyConfiguration
standardShardingStrategyConfig = (StandardShardingStrategyConfiguration)
strategyConfig;
result.append(String.format(DistSQLScriptConstants.SHARDING_STRATEGY_STANDARD,
strategyType, type, standardShardingStrategyConfig.getShardingColumn(),
algorithmDefinition));
break;
case DistSQLScriptConstants.COMPLEX:
- ComplexShardingStrategyConfiguration
complexShardingStrategyConfig = (ComplexShardingStrategyConfiguration)
shardingStrategyConfiguration;
+ ComplexShardingStrategyConfiguration
complexShardingStrategyConfig = (ComplexShardingStrategyConfiguration)
strategyConfig;
result.append(String.format(DistSQLScriptConstants.SHARDING_STRATEGY_COMPLEX,
strategyType, type, complexShardingStrategyConfig.getShardingColumns(),
algorithmDefinition));
break;
case DistSQLScriptConstants.HINT:
@@ -392,10 +392,8 @@ public final class ConvertYamlConfigurationHandler extends
QueryableRALBackendHa
Iterator<EncryptTableRuleConfiguration> iterator =
ruleConfig.getTables().iterator();
while (iterator.hasNext()) {
EncryptTableRuleConfiguration tableRuleConfig = iterator.next();
- String tableName = tableRuleConfig.getName();
- String columns = getEncryptColumns(tableRuleConfig.getColumns(),
ruleConfig.getEncryptors());
boolean queryWithCipher = null !=
tableRuleConfig.getQueryWithCipherColumn() ?
tableRuleConfig.getQueryWithCipherColumn() : true;
- result.append(String.format(DistSQLScriptConstants.ENCRYPT,
tableName, columns, queryWithCipher));
+ result.append(String.format(DistSQLScriptConstants.ENCRYPT,
tableRuleConfig.getName(), getEncryptColumns(tableRuleConfig.getColumns(),
ruleConfig.getEncryptors()), queryWithCipher));
if (iterator.hasNext()) {
result.append(DistSQLScriptConstants.COMMA).append(System.lineSeparator());
}
@@ -441,11 +439,9 @@ public final class ConvertYamlConfigurationHandler extends
QueryableRALBackendHa
Iterator<ShadowDataSourceConfiguration> iterator =
ruleConfig.getDataSources().iterator();
while (iterator.hasNext()) {
ShadowDataSourceConfiguration dataSourceConfig = iterator.next();
- String source = dataSourceConfig.getProductionDataSourceName();
- String shadow = dataSourceConfig.getShadowDataSourceName();
String shadowRuleName = dataSourceConfig.getName();
String shadowTables = getShadowTables(shadowRuleName,
ruleConfig.getTables(), ruleConfig.getShadowAlgorithms());
- result.append(String.format(DistSQLScriptConstants.SHADOW,
shadowRuleName, source, shadow, shadowTables));
+ result.append(String.format(DistSQLScriptConstants.SHADOW,
shadowRuleName, dataSourceConfig.getProductionDataSourceName(),
dataSourceConfig.getShadowDataSourceName(), shadowTables));
if (iterator.hasNext()) {
result.append(DistSQLScriptConstants.COMMA);
}
diff --git
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationHandlerTest.java
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationHandlerTest.java
index 070aea2a67c..a60a447837d 100644
---
a/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationHandlerTest.java
+++
b/proxy/backend/src/test/java/org/apache/shardingsphere/proxy/backend/handler/distsql/ral/queryable/ConvertYamlConfigurationHandlerTest.java
@@ -17,8 +17,13 @@
package org.apache.shardingsphere.proxy.backend.handler.distsql.ral.queryable;
+import com.google.common.base.Splitter;
+import com.google.common.base.Strings;
import lombok.SneakyThrows;
import
org.apache.shardingsphere.distsql.parser.statement.ral.queryable.ConvertYamlConfigurationStatement;
+import org.apache.shardingsphere.infra.database.type.dialect.MySQLDatabaseType;
+import org.apache.shardingsphere.parser.rule.SQLParserRule;
+import
org.apache.shardingsphere.parser.rule.builder.DefaultSQLParserRuleConfigurationBuilder;
import
org.apache.shardingsphere.proxy.backend.response.header.query.QueryHeader;
import
org.apache.shardingsphere.proxy.backend.response.header.query.QueryResponseHeader;
import org.apache.shardingsphere.proxy.backend.session.ConnectionSession;
@@ -34,6 +39,7 @@ import java.util.Objects;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
@@ -63,6 +69,8 @@ public final class ConvertYamlConfigurationHandlerTest {
private final String mixExpectedFilePath = "/expected/convert-mix.yaml";
+ private final SQLParserRule sqlParserRule = new SQLParserRule(new
DefaultSQLParserRuleConfigurationBuilder().build());
+
@Test
public void assertExecuteWithSharding() throws SQLException {
assertExecute(shardingConfigFilePath, shardingExpectedFilePath);
@@ -123,9 +131,19 @@ public final class ConvertYamlConfigurationHandlerTest {
assertFalse(actual.isAutoIncrement());
}
- private void assertRowData(final Collection<Object> actual, final String
expectedFilePath) {
- assertThat(actual.size(), is(1));
- assertThat(actual.iterator().next(),
is(loadExpectedRow(expectedFilePath)));
+ private void assertRowData(final Collection<Object> data, final String
expectedFilePath) {
+ assertThat(data.size(), is(1));
+ Object actual = data.iterator().next();
+ assertThat(actual, is(loadExpectedRow(expectedFilePath)));
+ assertParseSQL((String) actual);
+ }
+
+ private void assertParseSQL(final String actual) {
+ for (String each : Splitter.on(";").trimResults().splitToList(actual))
{
+ if (!Strings.isNullOrEmpty(each)) {
+ assertNotNull(sqlParserRule.getSQLParserEngine(new
MySQLDatabaseType().getType()).parse(each, false));
+ }
+ }
}
@SneakyThrows(IOException.class)