You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2020/12/30 15:17:06 UTC

[shardingsphere] branch master updated: Add more assertion for DDL IT (#8839)

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 bc030ab  Add more assertion for DDL IT (#8839)
bc030ab is described below

commit bc030abd5e79d4a356895a9eddf2f051194ed09e
Author: Liang Zhang <te...@163.com>
AuthorDate: Wed Dec 30 23:16:41 2020 +0800

    Add more assertion for DDL IT (#8839)
---
 .../cases/dataset/metadata/DataSetColumn.java      |  2 +
 .../test/integration/engine/it/ddl/BaseDDLIT.java  | 71 +++++++++++-----------
 2 files changed, 39 insertions(+), 34 deletions(-)

diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/metadata/DataSetColumn.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/metadata/DataSetColumn.java
index 7113e18..be15ef0 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/metadata/DataSetColumn.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/metadata/DataSetColumn.java
@@ -17,6 +17,7 @@
 
 package org.apache.shardingsphere.test.integration.cases.dataset.metadata;
 
+import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -27,6 +28,7 @@ import javax.xml.bind.annotation.XmlAttribute;
 @Getter
 @Setter
 @XmlAccessorType(XmlAccessType.FIELD)
+@EqualsAndHashCode
 public final class DataSetColumn {
     
     @XmlAttribute(required = true)
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java
index e140c96..eb41270 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java
@@ -45,8 +45,10 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.text.ParseException;
 import java.util.Collection;
+import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -112,44 +114,37 @@ public abstract class BaseDDLIT extends SingleIT {
         DataSetMetadata expected = getDataSet().findMetadata(tableName);
         Collection<DataNode> dataNodes = new InlineExpressionParser(expected.getDataNodes()).splitAndEvaluate().stream().map(DataNode::new).collect(Collectors.toList());
         if (expected.getColumns().isEmpty()) {
-            assertFalse(containsTable(dataNodes));
+            assertNotContainsTable(dataNodes);
             return;
         }
         assertTableMetaData(getActualColumns(dataNodes), getActualIndexes(dataNodes), expected);
     }
     
     private void assertTableMetaData(final List<DataSetColumn> actualColumns, final List<DataSetIndex> actualIndexes, final DataSetMetadata expected) {
-        for (DataSetColumn each : expected.getColumns()) {
-            assertColumnMetaData(actualColumns, each);
-        }
-        for (DataSetIndex each : expected.getIndexes()) {
-            assertIndexMetaData(actualIndexes, each);
-        }
+        assertColumnMetaData(actualColumns, expected.getColumns());
+        assertIndexMetaData(actualIndexes, expected.getIndexes());
     }
     
-    private boolean containsTable(final Collection<DataNode> dataNodes) throws SQLException {
+    private void assertNotContainsTable(final Collection<DataNode> dataNodes) throws SQLException {
         for (DataNode each : dataNodes) {
             try (Connection connection = getActualDataSources().get(each.getDataSourceName()).getConnection()) {
-                if (containsTable(connection, each.getTableName())) {
-                    return true;
-                }
+                assertNotContainsTable(connection, each.getTableName());
             }
         }
-        return false;
     }
     
-    private boolean containsTable(final Connection connection, final String tableName) throws SQLException {
-        return connection.getMetaData().getTables(null, null, tableName, new String[]{"TABLE"}).next();
+    private void assertNotContainsTable(final Connection connection, final String tableName) throws SQLException {
+        assertFalse(connection.getMetaData().getTables(null, null, tableName, new String[]{"TABLE"}).next());
     }
     
     private List<DataSetColumn> getActualColumns(final Collection<DataNode> dataNodes) throws SQLException {
-        List<DataSetColumn> result = new LinkedList<>();
+        Set<DataSetColumn> result = new LinkedHashSet<>();
         for (DataNode each : dataNodes) {
             try (Connection connection = getActualDataSources().get(each.getDataSourceName()).getConnection()) {
                 result.addAll(getActualColumns(connection, each.getTableName()));
             }
         }
-        return result;
+        return new LinkedList<>(result);
     }
     
     private List<DataSetColumn> getActualColumns(final Connection connection, final String tableName) throws SQLException {
@@ -167,13 +162,13 @@ public abstract class BaseDDLIT extends SingleIT {
     }
     
     private List<DataSetIndex> getActualIndexes(final Collection<DataNode> dataNodes) throws SQLException {
-        List<DataSetIndex> result = new LinkedList<>();
+        Set<DataSetIndex> result = new LinkedHashSet<>();
         for (DataNode each : dataNodes) {
             try (Connection connection = getActualDataSources().get(each.getDataSourceName()).getConnection()) {
                 result.addAll(getActualIndexes(connection, each.getTableName()));
             }
         }
-        return result;
+        return new LinkedList<>(result);
     }
     
     private List<DataSetIndex> getActualIndexes(final Connection connection, final String tableName) throws SQLException {
@@ -191,26 +186,34 @@ public abstract class BaseDDLIT extends SingleIT {
         }
     }
     
-    // TODO need to assert line by line
-    private void assertColumnMetaData(final List<DataSetColumn> actual, final DataSetColumn expect) {
-        for (DataSetColumn each : actual) {
-            if (expect.getName().equals(each.getName())) {
-                if ("MySQL".equals(getDatabaseType().getName()) && "integer".equals(expect.getType())) {
-                    assertThat(each.getType(), is("int"));
-                } else if ("PostgreSQL".equals(getDatabaseType().getName()) && "integer".equals(expect.getType())) {
-                    assertThat(each.getType(), is("int4"));
-                } else {
-                    assertThat(each.getType(), is(expect.getType()));
-                }
-            }
+    private void assertColumnMetaData(final List<DataSetColumn> actual, final List<DataSetColumn> expected) {
+        assertThat(actual.size(), is(expected.size()));
+        for (int i = 0; i < actual.size(); i++) {
+            assertColumnMetaData(actual.get(i), expected.get(i));
+        }
+    }
+    
+    private void assertColumnMetaData(final DataSetColumn actual, final DataSetColumn expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        if ("MySQL".equals(getDatabaseType().getName()) && "integer".equals(expected.getType())) {
+            assertThat(actual.getType(), is("int"));
+        } else if ("PostgreSQL".equals(getDatabaseType().getName()) && "integer".equals(expected.getType())) {
+            assertThat(actual.getType(), is("int4"));
+        } else {
+            assertThat(actual.getType(), is(expected.getType()));
+        }
+    }
+    
+    private void assertIndexMetaData(final List<DataSetIndex> actual, final List<DataSetIndex> expected) {
+        for (DataSetIndex each : expected) {
+            assertIndexMetaData(actual, each);
         }
     }
     
-    // TODO need to assert line by line
-    private void assertIndexMetaData(final List<DataSetIndex> actual, final DataSetIndex expect) {
+    private void assertIndexMetaData(final List<DataSetIndex> actual, final DataSetIndex expected) {
         for (DataSetIndex each : actual) {
-            if (expect.getName().equals(each.getName())) {
-                assertThat(each.isUnique(), is(expect.isUnique()));
+            if (expected.getName().equals(each.getName())) {
+                assertThat(each.isUnique(), is(expected.isUnique()));
             }
         }
     }