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 3f27fc1  Add alter sharding key generator DistSQL parser test case 
assert. (#14076)
3f27fc1 is described below

commit 3f27fc1fbd61afd8fb84f5b12fbf803cb53c45e4
Author: Zonglei Dong <[email protected]>
AuthorDate: Tue Dec 14 14:24:18 2021 +0800

    Add alter sharding key generator DistSQL parser test case assert. (#14076)
---
 .../distsql/rdl/ShardingKeyGeneratorAssert.java    | 49 ++++++++++++++++++++++
 .../rdl/alter/AlterRuleStatementAssert.java        |  5 +++
 .../AlterShardingKeyGeneratorStatementAssert.java} | 40 ++++++++----------
 .../CreateShardingKeyGeneratorStatementAssert.java | 24 ++++-------
 ...AlterShardingKeyGeneratorStatementTestCase.java |  6 +--
 .../src/main/resources/case/rdl/alter.xml          |  6 +--
 6 files changed, 86 insertions(+), 44 deletions(-)

diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/ShardingKeyGeneratorAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/ShardingKeyGeneratorAssert.java
new file mode 100644
index 0000000..3619782
--- /dev/null
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/segment/distsql/rdl/ShardingKeyGeneratorAssert.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.distsql.rdl;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.sharding.distsql.parser.segment.ShardingKeyGeneratorSegment;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.distsql.AlgorithmAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.distsql.rdl.ExpectedShardingKeyGenerator;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertThat;
+
+/**
+ * Sharding key generator assert.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class ShardingKeyGeneratorAssert {
+    
+    /**
+     * Assert sharding key generator is correct with expected parser result.
+     *
+     * @param assertContext assert context
+     * @param actual actual sharding key generator
+     * @param expected expected sharding key generator test case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final ShardingKeyGeneratorSegment actual, final ExpectedShardingKeyGenerator 
expected) {
+        assertNotNull(assertContext.getText("Actual sharding key generator 
segment should exist."), actual.getAlgorithmSegment());
+        assertThat(actual.getKeyGeneratorName(), 
is(expected.getKeyGeneratorName()));
+        AlgorithmAssert.assertIs(assertContext, actual.getAlgorithmSegment(), 
expected.getAlgorithmSegment());
+    }
+}
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterRuleStatementAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterRuleStatementAssert.java
index 3cb6faa..148ee4e 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterRuleStatementAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/AlterRuleStatementAssert.java
@@ -26,6 +26,7 @@ import 
org.apache.shardingsphere.shadow.distsql.parser.statement.AlterShadowAlgo
 import 
org.apache.shardingsphere.shadow.distsql.parser.statement.AlterShadowRuleStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBindingTableRulesStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingBroadcastTableRulesStatement;
+import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingKeyGeneratorStatement;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingTableRuleStatement;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl.AlterDatabaseDiscoveryRuleStatementAssert;
@@ -36,6 +37,7 @@ import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl.AlterShadowRuleStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl.AlterShardingBindingTableRulesStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl.AlterShardingBroadcastTableRulesStatementAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl.AlterShardingKeyGeneratorStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl.AlterShardingTableRuleStatementAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterDefaultSingleTableRuleStatementTestCase;
@@ -45,6 +47,7 @@ import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShadowRuleStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingBindingTableRulesStatementTestCase;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingBroadcastTableRulesStatementTestCase;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingKeyGeneratorStatementTestCase;
 
 /**
  * Alter rule statement assert.
@@ -79,6 +82,8 @@ public final class AlterRuleStatementAssert {
         } else if (actual instanceof AlterDefaultSingleTableRuleStatement) {
             AlterDefaultSingleTableRuleStatementAssert.assertIs(assertContext, 
(AlterDefaultSingleTableRuleStatement) actual, 
                     (AlterDefaultSingleTableRuleStatementTestCase) expected);
+        } else if (actual instanceof AlterShardingKeyGeneratorStatement) {
+            AlterShardingKeyGeneratorStatementAssert.assertIs(assertContext, 
(AlterShardingKeyGeneratorStatement) actual, 
(AlterShardingKeyGeneratorStatementTestCase) expected);
         }
     }
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateShardingKeyGeneratorStatementAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterShardingKeyGeneratorStatementAssert.java
similarity index 58%
copy from 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateShardingKeyGeneratorStatementAssert.java
copy to 
shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterShardingKeyGeneratorStatementAssert.java
index 6c64f6c..346f747 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateShardingKeyGeneratorStatementAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/alter/impl/AlterShardingKeyGeneratorStatementAssert.java
@@ -15,60 +15,54 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.create.impl;
+package 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.statement.distsql.rdl.alter.impl;
 
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.sharding.distsql.parser.segment.ShardingKeyGeneratorSegment;
-import 
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingKeyGeneratorStatement;
+import 
org.apache.shardingsphere.sharding.distsql.parser.statement.AlterShardingKeyGeneratorStatement;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.distsql.AlgorithmAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.distsql.rdl.ShardingKeyGeneratorAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.distsql.rdl.ExpectedShardingKeyGenerator;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateShardingKeyGeneratorStatementTestCase;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.alter.AlterShardingKeyGeneratorStatementTestCase;
 
 import java.util.Collection;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
-import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
 
 /**
- * Create sharding key generator statement assert.
+ * Alter sharding key generator statement assert.
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class CreateShardingKeyGeneratorStatementAssert {
+public final class AlterShardingKeyGeneratorStatementAssert {
     
     /**
-     * Assert create sharding key generator statement is correct with expected 
parser result.
+     * Assert alter sharding key generator statement is correct with expected 
parser result.
      *
      * @param assertContext assert context
-     * @param actual actual create sharding key generator statement
+     * @param actual actual alter sharding key generator statement
      * @param expected expected create sharding key generator statement test 
case
      */
-    public static void assertIs(final SQLCaseAssertContext assertContext, 
final CreateShardingKeyGeneratorStatement actual, final 
CreateShardingKeyGeneratorStatementTestCase expected) {
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final AlterShardingKeyGeneratorStatement actual, final 
AlterShardingKeyGeneratorStatementTestCase expected) {
         if (null == expected) {
-            assertNull(assertContext.getText("Actual statement should not 
exist."), actual);
+            assertNull(assertContext.getText("Actual sharding key generator 
statement should not exist."), actual);
         } else {
-            assertNotNull(assertContext.getText("Actual statement should 
exist."), actual);
+            assertNotNull(assertContext.getText("Actual sharding key generator 
statement should exist."), actual);
             assertShardingKeyGenerator(assertContext, 
actual.getKeyGeneratorSegments(), expected.getShardingKeyGenerators());
         }
     }
     
     private static void assertShardingKeyGenerator(final SQLCaseAssertContext 
assertContext, final Collection<ShardingKeyGeneratorSegment> actual, final 
List<ExpectedShardingKeyGenerator> expected) {
         if (null == expected) {
-            assertNull(assertContext.getText("Actual sharding key generator 
should not exist."), actual);
+            assertNull(assertContext.getText("Actual sharding key generator 
segments should not exist."), actual);
         } else {
-            assertNotNull(assertContext.getText("Actual sharding key generator 
should exist."), actual);
-            final Map<String, ShardingKeyGeneratorSegment> actualMap = 
actual.stream().collect(Collectors.toMap(ShardingKeyGeneratorSegment::getKeyGeneratorName,
 each -> each));
-            for (ExpectedShardingKeyGenerator each : expected) {
-                ShardingKeyGeneratorSegment actualAlgorithm = 
actualMap.get(each.getKeyGeneratorName());
-                assertNotNull(assertContext.getText("Actual sharding key 
generator should exist."), actualAlgorithm);
-                assertThat(actualAlgorithm.getKeyGeneratorName(), 
is(each.getKeyGeneratorName()));
-                AlgorithmAssert.assertIs(assertContext, 
actualAlgorithm.getAlgorithmSegment(), each.getAlgorithmSegment());
+            assertNotNull(assertContext.getText("Actual sharding key generator 
segments should exist."), actual);
+            int count = 0;
+            for (ShardingKeyGeneratorSegment each : actual) {
+                ShardingKeyGeneratorAssert.assertIs(assertContext, each, 
expected.get(count));
+                count++;
             }
         }
     }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateShardingKeyGeneratorStatementAssert.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateShardingKeyGeneratorStatementAssert.java
index 6c64f6c..73165ae 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateShardingKeyGeneratorStatementAssert.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/asserts/statement/distsql/rdl/create/impl/CreateShardingKeyGeneratorStatementAssert.java
@@ -22,19 +22,15 @@ import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.sharding.distsql.parser.segment.ShardingKeyGeneratorSegment;
 import 
org.apache.shardingsphere.sharding.distsql.parser.statement.CreateShardingKeyGeneratorStatement;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.SQLCaseAssertContext;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.distsql.AlgorithmAssert;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.asserts.segment.distsql.rdl.ShardingKeyGeneratorAssert;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.distsql.rdl.ExpectedShardingKeyGenerator;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.distsql.rdl.create.CreateShardingKeyGeneratorStatementTestCase;
 
 import java.util.Collection;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
-import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
 
 /**
  * Create sharding key generator statement assert.
@@ -51,24 +47,22 @@ public final class 
CreateShardingKeyGeneratorStatementAssert {
      */
     public static void assertIs(final SQLCaseAssertContext assertContext, 
final CreateShardingKeyGeneratorStatement actual, final 
CreateShardingKeyGeneratorStatementTestCase expected) {
         if (null == expected) {
-            assertNull(assertContext.getText("Actual statement should not 
exist."), actual);
+            assertNull(assertContext.getText("Actual sharding key generator 
statement should not exist."), actual);
         } else {
-            assertNotNull(assertContext.getText("Actual statement should 
exist."), actual);
+            assertNotNull(assertContext.getText("Actual sharding key generator 
statement should exist."), actual);
             assertShardingKeyGenerator(assertContext, 
actual.getKeyGeneratorSegments(), expected.getShardingKeyGenerators());
         }
     }
     
     private static void assertShardingKeyGenerator(final SQLCaseAssertContext 
assertContext, final Collection<ShardingKeyGeneratorSegment> actual, final 
List<ExpectedShardingKeyGenerator> expected) {
         if (null == expected) {
-            assertNull(assertContext.getText("Actual sharding key generator 
should not exist."), actual);
+            assertNull(assertContext.getText("Actual sharding key generator 
segments should not exist."), actual);
         } else {
-            assertNotNull(assertContext.getText("Actual sharding key generator 
should exist."), actual);
-            final Map<String, ShardingKeyGeneratorSegment> actualMap = 
actual.stream().collect(Collectors.toMap(ShardingKeyGeneratorSegment::getKeyGeneratorName,
 each -> each));
-            for (ExpectedShardingKeyGenerator each : expected) {
-                ShardingKeyGeneratorSegment actualAlgorithm = 
actualMap.get(each.getKeyGeneratorName());
-                assertNotNull(assertContext.getText("Actual sharding key 
generator should exist."), actualAlgorithm);
-                assertThat(actualAlgorithm.getKeyGeneratorName(), 
is(each.getKeyGeneratorName()));
-                AlgorithmAssert.assertIs(assertContext, 
actualAlgorithm.getAlgorithmSegment(), each.getAlgorithmSegment());
+            assertNotNull(assertContext.getText("Actual sharding key generator 
segments should exist."), actual);
+            int count = 0;
+            for (ShardingKeyGeneratorSegment each : actual) {
+                ShardingKeyGeneratorAssert.assertIs(assertContext, each, 
expected.get(count));
+                count++;
             }
         }
     }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingKeyGeneratorStatementTestCase.java
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingKeyGeneratorStatementTestCase.java
index 54ffd7c..522cca7 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingKeyGeneratorStatementTestCase.java
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/distsql/rdl/alter/AlterShardingKeyGeneratorStatementTestCase.java
@@ -19,7 +19,7 @@ package 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domai
 
 import lombok.Getter;
 import lombok.Setter;
-import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.distsql.rdl.ExpectedShardingAlgorithm;
+import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.segment.impl.distsql.rdl.ExpectedShardingKeyGenerator;
 import 
org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
 
 import javax.xml.bind.annotation.XmlElement;
@@ -33,6 +33,6 @@ import java.util.List;
 @Setter
 public final class AlterShardingKeyGeneratorStatementTestCase extends 
SQLParserTestCase {
     
-    @XmlElement(name = "keyGenerator")
-    private final List<ExpectedShardingAlgorithm> shardingAlgorithms = new 
LinkedList<>();
+    @XmlElement(name = "shardingKeyGenerator")
+    private final List<ExpectedShardingKeyGenerator> shardingKeyGenerators = 
new LinkedList<>();
 }
diff --git 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rdl/alter.xml
 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rdl/alter.xml
index 5586c45..d9bec03 100644
--- 
a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rdl/alter.xml
+++ 
b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/rdl/alter.xml
@@ -256,13 +256,13 @@
     </alter-sharding-algorithm>
 
     <alter-sharding-key-generator sql-case-id="alter-sharding-key-generator">
-        <keyGenerator key-generator-name="uuid_key_generator">
-            <algorithm algorithm-name="inline">
+        <shardingKeyGenerator key-generator-name="uuid_key_generator">
+            <algorithm algorithm-name="uuid">
                 <properties>
                     <property key="worker-id" value="123"/>
                 </properties>
             </algorithm>
-        </keyGenerator>
+        </shardingKeyGenerator>
     </alter-sharding-key-generator>
 
     <alter-default-single-table sql-case-id="alter-default-single-table" 
default-data-source="ds_0" />

Reply via email to