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 ce4729b2cb5 Add more test cases on
EncryptRuleConfigurationToDistSQLConverter (#33466)
ce4729b2cb5 is described below
commit ce4729b2cb559365f8057441445cdb9682e35eca
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Oct 30 13:41:00 2024 +0800
Add more test cases on EncryptRuleConfigurationToDistSQLConverter (#33466)
---
.../converter/EncryptConvertDistSQLConstants.java | 2 +-
...EncryptRuleConfigurationToDistSQLConverter.java | 70 +++++++++-------------
...yptRuleConfigurationToDistSQLConverterTest.java | 44 ++++++++------
...ingRuleConfigurationToDistSQLConverterTest.java | 2 +-
...dowRuleConfigurationToDistSQLConverterTest.java | 2 +-
5 files changed, 56 insertions(+), 64 deletions(-)
diff --git
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptConvertDistSQLConstants.java
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptConvertDistSQLConstants.java
index 2df8b99bc60..56af8c3d3bc 100644
---
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptConvertDistSQLConstants.java
+++
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptConvertDistSQLConstants.java
@@ -28,7 +28,7 @@ public final class EncryptConvertDistSQLConstants {
public static final String CREATE_ENCRYPT_RULE = "CREATE ENCRYPT RULE";
- public static final String ENCRYPT_RULE = " %s ("
+ public static final String ENCRYPT_TABLE = " %s ("
+ System.lineSeparator()
+ "COLUMNS("
+ System.lineSeparator()
diff --git
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleConfigurationToDistSQLConverter.java
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleConfigurationToDistSQLConverter.java
index 609fe4cff81..0cae236d5b1 100644
---
a/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleConfigurationToDistSQLConverter.java
+++
b/features/encrypt/distsql/handler/src/main/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleConfigurationToDistSQLConverter.java
@@ -28,8 +28,8 @@ import
org.apache.shardingsphere.encrypt.config.rule.EncryptTableRuleConfigurati
import
org.apache.shardingsphere.infra.algorithm.core.config.AlgorithmConfiguration;
import java.util.Collection;
-import java.util.Iterator;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* Encrypt rule configuration to DistSQL converter.
@@ -38,58 +38,44 @@ public final class
EncryptRuleConfigurationToDistSQLConverter implements RuleCon
@Override
public String convert(final EncryptRuleConfiguration ruleConfig) {
- if (ruleConfig.getTables().isEmpty()) {
- return "";
- }
- StringBuilder result = new
StringBuilder(EncryptConvertDistSQLConstants.CREATE_ENCRYPT_RULE);
- Iterator<EncryptTableRuleConfiguration> iterator =
ruleConfig.getTables().iterator();
- while (iterator.hasNext()) {
- EncryptTableRuleConfiguration tableRuleConfig = iterator.next();
-
result.append(String.format(EncryptConvertDistSQLConstants.ENCRYPT_RULE,
tableRuleConfig.getName(), getEncryptColumns(tableRuleConfig.getColumns(),
ruleConfig.getEncryptors())));
- if (iterator.hasNext()) {
-
result.append(DistSQLConstants.COMMA).append(System.lineSeparator());
- }
- }
- result.append(DistSQLConstants.SEMI);
- return result.toString();
+ return ruleConfig.getTables().isEmpty() ? "" :
EncryptConvertDistSQLConstants.CREATE_ENCRYPT_RULE +
convertEncryptTables(ruleConfig) + DistSQLConstants.SEMI;
}
- private String getEncryptColumns(final
Collection<EncryptColumnRuleConfiguration> ruleConfigs, final Map<String,
AlgorithmConfiguration> encryptors) {
- StringBuilder result = new StringBuilder();
- Iterator<EncryptColumnRuleConfiguration> iterator =
ruleConfigs.iterator();
- while (iterator.hasNext()) {
- EncryptColumnRuleConfiguration columnRuleConfig = iterator.next();
-
result.append(String.format(EncryptConvertDistSQLConstants.ENCRYPT_COLUMN,
columnRuleConfig.getName(), getColumns(columnRuleConfig),
getEncryptAlgorithms(columnRuleConfig, encryptors)));
- if (iterator.hasNext()) {
-
result.append(DistSQLConstants.COMMA).append(System.lineSeparator());
- }
- }
- return result.toString();
+ private String convertEncryptTables(final EncryptRuleConfiguration
ruleConfig) {
+ return ruleConfig.getTables().stream().map(each ->
convertEncryptTable(ruleConfig,
each)).collect(Collectors.joining(DistSQLConstants.COMMA +
System.lineSeparator()));
+ }
+
+ private String convertEncryptTable(final EncryptRuleConfiguration
ruleConfig, final EncryptTableRuleConfiguration tableRuleConfig) {
+ return String.format(EncryptConvertDistSQLConstants.ENCRYPT_TABLE,
tableRuleConfig.getName(), convertEncryptColumns(tableRuleConfig.getColumns(),
ruleConfig.getEncryptors()));
+ }
+
+ private String convertEncryptColumns(final
Collection<EncryptColumnRuleConfiguration> columnRuleConfigs, final Map<String,
AlgorithmConfiguration> encryptors) {
+ return columnRuleConfigs.stream().map(each ->
convertEncryptColumn(each,
encryptors)).collect(Collectors.joining(DistSQLConstants.COMMA +
System.lineSeparator()));
}
- private String getColumns(final EncryptColumnRuleConfiguration ruleConfig)
{
+ private String convertEncryptColumn(final EncryptColumnRuleConfiguration
columnRuleConfig, final Map<String, AlgorithmConfiguration> encryptors) {
+ return String.format(EncryptConvertDistSQLConstants.ENCRYPT_COLUMN,
columnRuleConfig.getName(), convertColumns(columnRuleConfig),
convertEncryptAlgorithms(columnRuleConfig, encryptors));
+ }
+
+ private String convertColumns(final EncryptColumnRuleConfiguration
columnRuleConfig) {
StringBuilder result = new StringBuilder();
- String cipherColumnName = ruleConfig.getCipher().getName();
- if (!Strings.isNullOrEmpty(cipherColumnName)) {
- result.append(String.format(EncryptConvertDistSQLConstants.CIPHER,
cipherColumnName));
- }
- if (ruleConfig.getAssistedQuery().isPresent()) {
- result.append(DistSQLConstants.COMMA).append('
').append(String.format(EncryptConvertDistSQLConstants.ASSISTED_QUERY_COLUMN,
ruleConfig.getAssistedQuery().get().getName()));
+ String cipherColumnName = columnRuleConfig.getCipher().getName();
+ result.append(String.format(EncryptConvertDistSQLConstants.CIPHER,
cipherColumnName));
+ if (columnRuleConfig.getAssistedQuery().isPresent()) {
+ result.append(DistSQLConstants.COMMA).append('
').append(String.format(EncryptConvertDistSQLConstants.ASSISTED_QUERY_COLUMN,
columnRuleConfig.getAssistedQuery().get().getName()));
}
- if (ruleConfig.getLikeQuery().isPresent()) {
- result.append(DistSQLConstants.COMMA).append('
').append(String.format(EncryptConvertDistSQLConstants.LIKE_QUERY_COLUMN,
ruleConfig.getLikeQuery().get().getName()));
+ if (columnRuleConfig.getLikeQuery().isPresent()) {
+ result.append(DistSQLConstants.COMMA).append('
').append(String.format(EncryptConvertDistSQLConstants.LIKE_QUERY_COLUMN,
columnRuleConfig.getLikeQuery().get().getName()));
}
return result.toString();
}
- private String getEncryptAlgorithms(final EncryptColumnRuleConfiguration
ruleConfig, final Map<String, AlgorithmConfiguration> encryptors) {
+ private String convertEncryptAlgorithms(final
EncryptColumnRuleConfiguration columnRuleConfig, final Map<String,
AlgorithmConfiguration> encryptors) {
StringBuilder result = new StringBuilder();
- String cipherEncryptorName = ruleConfig.getCipher().getEncryptorName();
- String assistedQueryEncryptorName =
ruleConfig.getAssistedQuery().map(EncryptColumnItemRuleConfiguration::getEncryptorName).orElse("");
- String likeQueryEncryptorName =
ruleConfig.getLikeQuery().map(EncryptColumnItemRuleConfiguration::getEncryptorName).orElse("");
- if (!Strings.isNullOrEmpty(cipherEncryptorName)) {
-
result.append(String.format(EncryptConvertDistSQLConstants.ENCRYPT_ALGORITHM,
AlgorithmDistSQLConverter.getAlgorithmType(encryptors.get(cipherEncryptorName))));
- }
+ String cipherEncryptorName =
columnRuleConfig.getCipher().getEncryptorName();
+ String assistedQueryEncryptorName =
columnRuleConfig.getAssistedQuery().map(EncryptColumnItemRuleConfiguration::getEncryptorName).orElse("");
+ String likeQueryEncryptorName =
columnRuleConfig.getLikeQuery().map(EncryptColumnItemRuleConfiguration::getEncryptorName).orElse("");
+
result.append(String.format(EncryptConvertDistSQLConstants.ENCRYPT_ALGORITHM,
AlgorithmDistSQLConverter.getAlgorithmType(encryptors.get(cipherEncryptorName))));
if (!Strings.isNullOrEmpty(assistedQueryEncryptorName)) {
result.append(DistSQLConstants.COMMA).append(' ')
.append(String.format(EncryptConvertDistSQLConstants.ASSISTED_QUERY_ALGORITHM,
AlgorithmDistSQLConverter.getAlgorithmType(encryptors.get(assistedQueryEncryptorName))));
diff --git
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleConfigurationToDistSQLConverterTest.java
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleConfigurationToDistSQLConverterTest.java
index d75ab7db31c..5baa1e2394c 100644
---
a/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleConfigurationToDistSQLConverterTest.java
+++
b/features/encrypt/distsql/handler/src/test/java/org/apache/shardingsphere/encrypt/distsql/handler/converter/EncryptRuleConfigurationToDistSQLConverterTest.java
@@ -33,8 +33,6 @@ 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.when;
class EncryptRuleConfigurationToDistSQLConverterTest {
@@ -43,8 +41,7 @@ class EncryptRuleConfigurationToDistSQLConverterTest {
@Test
void assertConvertWithEmptyTables() {
- EncryptRuleConfiguration encryptRuleConfig =
mock(EncryptRuleConfiguration.class);
-
when(encryptRuleConfig.getTables()).thenReturn(Collections.emptyList());
+ EncryptRuleConfiguration encryptRuleConfig = new
EncryptRuleConfiguration(Collections.emptyList(), Collections.emptyMap());
assertThat(converter.convert(encryptRuleConfig), is(""));
}
@@ -52,26 +49,35 @@ class EncryptRuleConfigurationToDistSQLConverterTest {
void assertConvert() {
EncryptRuleConfiguration encryptRuleConfig =
getEncryptRuleConfiguration();
assertThat(converter.convert(encryptRuleConfig),
- is("CREATE ENCRYPT RULE t_encrypt (" + System.lineSeparator()
+ "COLUMNS(" + System.lineSeparator()
- + "(NAME=user_id, CIPHER=user_cipher,
ASSISTED_QUERY_COLUMN=user_assisted, LIKE_QUERY_COLUMN=user_like,
ENCRYPT_ALGORITHM(TYPE(NAME='md5')), "
- + "ASSISTED_QUERY_ALGORITHM(),
LIKE_QUERY_ALGORITHM())," + System.lineSeparator()
- + "(NAME=pwd, CIPHER=pwd_cipher,
ASSISTED_QUERY_COLUMN=pwd_assisted, LIKE_QUERY_COLUMN=pwd_like,
ENCRYPT_ALGORITHM(TYPE(NAME='md5')), "
- + "ASSISTED_QUERY_ALGORITHM(),
LIKE_QUERY_ALGORITHM())" + System.lineSeparator() + "))," +
System.lineSeparator() + " t_encrypt_another (" + System.lineSeparator() +
"COLUMNS("
- + System.lineSeparator() + "(NAME=user_id,
CIPHER=user_cipher, ASSISTED_QUERY_COLUMN=user_assisted,
LIKE_QUERY_COLUMN=user_like, ENCRYPT_ALGORITHM(TYPE(NAME='md5')), "
- + "ASSISTED_QUERY_ALGORITHM(),
LIKE_QUERY_ALGORITHM())" + System.lineSeparator() + "));"));
+ is("CREATE ENCRYPT RULE foo_tbl ("
+ + System.lineSeparator()
+ + "COLUMNS("
+ + System.lineSeparator()
+ + "(NAME=foo_col, CIPHER=foo_col_cipher,
ENCRYPT_ALGORITHM(TYPE(NAME='md5'))),"
+ + System.lineSeparator()
+ + "(NAME=bar_col, CIPHER=bar_col_cipher,
ASSISTED_QUERY_COLUMN=bar_col_assisted, LIKE_QUERY_COLUMN=bar_col_like,"
+ + " ENCRYPT_ALGORITHM(TYPE(NAME='md5')),
ASSISTED_QUERY_ALGORITHM(), LIKE_QUERY_ALGORITHM())"
+ + System.lineSeparator()
+ + ")),"
+ + System.lineSeparator()
+ + " t_encrypt_another ("
+ + System.lineSeparator()
+ + "COLUMNS("
+ + System.lineSeparator()
+ + "(NAME=foo_col, CIPHER=foo_col_cipher,
ENCRYPT_ALGORITHM(TYPE(NAME='md5')))"
+ + System.lineSeparator()
+ + "));"));
}
private EncryptRuleConfiguration getEncryptRuleConfiguration() {
- EncryptColumnRuleConfiguration encryptColumnRuleConfig = new
EncryptColumnRuleConfiguration("user_id", new
EncryptColumnItemRuleConfiguration("user_cipher", "test"));
- encryptColumnRuleConfig.setAssistedQuery(new
EncryptColumnItemRuleConfiguration("user_assisted",
"foo_assist_query_encryptor"));
- encryptColumnRuleConfig.setLikeQuery(new
EncryptColumnItemRuleConfiguration("user_like", "foo_like_encryptor"));
- EncryptColumnRuleConfiguration encryptColumnRuleConfig2 = new
EncryptColumnRuleConfiguration("pwd", new
EncryptColumnItemRuleConfiguration("pwd_cipher", "test"));
- encryptColumnRuleConfig2.setAssistedQuery(new
EncryptColumnItemRuleConfiguration("pwd_assisted",
"foo_assist_query_encryptor"));
- encryptColumnRuleConfig2.setLikeQuery(new
EncryptColumnItemRuleConfiguration("pwd_like", "foo_like_encryptor"));
- EncryptTableRuleConfiguration encryptTableRuleConfig = new
EncryptTableRuleConfiguration("t_encrypt", new
LinkedList<>(Arrays.asList(encryptColumnRuleConfig, encryptColumnRuleConfig2)));
+ EncryptColumnRuleConfiguration encryptColumnRuleConfig1 = new
EncryptColumnRuleConfiguration("foo_col", new
EncryptColumnItemRuleConfiguration("foo_col_cipher", "test"));
+ EncryptColumnRuleConfiguration encryptColumnRuleConfig2 = new
EncryptColumnRuleConfiguration("bar_col", new
EncryptColumnItemRuleConfiguration("bar_col_cipher", "test"));
+ encryptColumnRuleConfig2.setAssistedQuery(new
EncryptColumnItemRuleConfiguration("bar_col_assisted",
"bar_assist_query_encryptor"));
+ encryptColumnRuleConfig2.setLikeQuery(new
EncryptColumnItemRuleConfiguration("bar_col_like", "bar_like_encryptor"));
+ EncryptTableRuleConfiguration encryptTableRuleConfig = new
EncryptTableRuleConfiguration("foo_tbl", new
LinkedList<>(Arrays.asList(encryptColumnRuleConfig1,
encryptColumnRuleConfig2)));
AlgorithmConfiguration shardingSphereAlgorithmConfig = new
AlgorithmConfiguration("md5", new Properties());
return new EncryptRuleConfiguration(
- new LinkedList<>(Arrays.asList(encryptTableRuleConfig, new
EncryptTableRuleConfiguration("t_encrypt_another",
Collections.singleton(encryptColumnRuleConfig)))),
+ new LinkedList<>(Arrays.asList(encryptTableRuleConfig, new
EncryptTableRuleConfiguration("t_encrypt_another",
Collections.singleton(encryptColumnRuleConfig1)))),
Collections.singletonMap("test",
shardingSphereAlgorithmConfig));
}
}
diff --git
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleConfigurationToDistSQLConverterTest.java
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleConfigurationToDistSQLConverterTest.java
index 682cfe61d48..b93677392ce 100644
---
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleConfigurationToDistSQLConverterTest.java
+++
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/converter/ReadwriteSplittingRuleConfigurationToDistSQLConverterTest.java
@@ -68,7 +68,7 @@ class
ReadwriteSplittingRuleConfigurationToDistSQLConverterTest {
+ ");"));
}
- private static ReadwriteSplittingRuleConfiguration
createRuleConfiguration() {
+ private ReadwriteSplittingRuleConfiguration createRuleConfiguration() {
ReadwriteSplittingDataSourceGroupRuleConfiguration
dataSourceGroupConfig0 = new ReadwriteSplittingDataSourceGroupRuleConfiguration(
"foo_ds", "ds_primary", Arrays.asList("ds_slave_0",
"ds_slave_1"), "test");
ReadwriteSplittingDataSourceGroupRuleConfiguration
dataSourceGroupConfig1 = new ReadwriteSplittingDataSourceGroupRuleConfiguration(
diff --git
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/handler/converter/ShadowRuleConfigurationToDistSQLConverterTest.java
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/handler/converter/ShadowRuleConfigurationToDistSQLConverterTest.java
index 1e2c08c1a2b..5e83d5ce933 100644
---
a/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/handler/converter/ShadowRuleConfigurationToDistSQLConverterTest.java
+++
b/features/shadow/distsql/handler/src/test/java/org/apache/shardingsphere/shadow/distsql/handler/converter/ShadowRuleConfigurationToDistSQLConverterTest.java
@@ -50,7 +50,7 @@ class ShadowRuleConfigurationToDistSQLConverterTest {
+ "t_order(TYPE(NAME='regex_match'))," +
System.lineSeparator() + "t_order_item(TYPE(NAME='regex_match'))" +
System.lineSeparator() + ");"));
}
- private static ShadowRuleConfiguration createRuleConfiguration() {
+ private ShadowRuleConfiguration createRuleConfiguration() {
ShadowRuleConfiguration result = new ShadowRuleConfiguration();
result.getDataSources().add(new
ShadowDataSourceConfiguration("shadow_rule", "source", "shadow"));
result.getShadowAlgorithms().put("user_id_select_match_algorithm", new
AlgorithmConfiguration("REGEX_MATCH", new Properties()));