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

Reply via email to