From 47b488f1e861abce4cd5bdecea0d13d318f9c36d Mon Sep 17 00:00:00 2001 From: John Tims Date: Wed, 27 May 2020 12:01:17 -0600 Subject: [PATCH 1/2] Run tests against sqlserver --- .github/workflows/ci.yml | 10 +++++++--- pom.xml | 1 - .../java/com/querydsl/jpa/AbstractJPATest.java | 4 +++- .../java/com/querydsl/jpa/ParsingTest.java | 1 + .../test/resources/META-INF/persistence.xml | 6 +++--- .../com/querydsl/jpa/testutil/mssql.properties | 6 +++--- .../querydsl/sql/codegen/ExportBaseTest.java | 6 ++++++ .../querydsl/sql/codegen/ExportMSSQLTest.java | 4 ++++ .../java/com/querydsl/sql/Connections.java | 6 +++--- .../test/java/com/querydsl/sql/SelectBase.java | 6 +++--- travis/docker-compose.yml | 18 +++++++++++++++++- 11 files changed, 50 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 877f1e427..855fdcce7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,7 @@ jobs: target: [test-without-scala, test-scala, test-hibernate-5] include: - target: test-without-scala - containers: db2 mysql postgresql mongo + containers: db2 mysql postgresql mongo sqlserver maven-args: --activate-profiles all,travis,examples --projects !querydsl-scala - target: test-scala @@ -31,7 +31,7 @@ jobs: maven-args: --activate-profiles all,travis --projects querydsl-scala --resume-from querydsl-scala - target: test-hibernate-5 - containers: db2 mysql postgresql mongo + containers: db2 mysql postgresql mongo sqlserver maven-args: --activate-profiles jpa,hibernate5,travis,examples --projects !querydsl-jpa-codegen runs-on: ubuntu-latest @@ -46,7 +46,11 @@ jobs: - name: Start test databases if: ${{ matrix.containers }} - run: cd travis/ && docker-compose up --detach ${{ matrix.containers }} && time docker-compose up block-until-healthy + run: | + cd travis/ &&\ + docker-compose up --detach ${{ matrix.containers }} &&\ + docker ps &&\ + time docker-compose up block-until-healthy - name: Initialize cache uses: actions/cache@v1 diff --git a/pom.xml b/pom.xml index b43ad4ba8..b3216a9ba 100644 --- a/pom.xml +++ b/pom.xml @@ -695,7 +695,6 @@ com.querydsl.core.testutil.Performance, com.querydsl.core.testutil.ReportingOnly, - com.querydsl.core.testutil.SQLServer, com.querydsl.core.testutil.Teradata, com.querydsl.core.testutil.Oracle, com.querydsl.core.testutil.CUBRID, diff --git a/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java b/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java index 3243a4737..2905525dd 100644 --- a/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java +++ b/querydsl-jpa/src/test/java/com/querydsl/jpa/AbstractJPATest.java @@ -605,6 +605,7 @@ public abstract class AbstractJPATest { @Test @NoEclipseLink + @ExcludeIn(SQLSERVER) public void distinct_orderBy() { QCat cat = QCat.cat; List result = query().select(cat.id, cat.mate.id) @@ -1514,7 +1515,7 @@ public abstract class AbstractJPATest { @Test @NoBatooJPA - @ExcludeIn(ORACLE) + @ExcludeIn({ORACLE, SQLSERVER}) public void substring2() { QCompany company = QCompany.company; StringExpression name = company.name; @@ -1678,6 +1679,7 @@ public abstract class AbstractJPATest { @Test @NoEclipseLink @NoOpenJPA @NoBatooJPA + @ExcludeIn(SQLSERVER) public void test() { Cat kitten = savedCats.get(0); Cat noKitten = savedCats.get(savedCats.size() - 1); diff --git a/querydsl-jpa/src/test/java/com/querydsl/jpa/ParsingTest.java b/querydsl-jpa/src/test/java/com/querydsl/jpa/ParsingTest.java index e37135704..fb8bcd74d 100644 --- a/querydsl-jpa/src/test/java/com/querydsl/jpa/ParsingTest.java +++ b/querydsl-jpa/src/test/java/com/querydsl/jpa/ParsingTest.java @@ -48,6 +48,7 @@ public class ParsingTest extends AbstractQueryTest { } @Test + @ExcludeIn(SQLSERVER) public void beforeAndAfter() throws RecognitionException, TokenStreamException { ComparableExpression ed = catalog.effectiveDate; query() diff --git a/querydsl-jpa/src/test/resources/META-INF/persistence.xml b/querydsl-jpa/src/test/resources/META-INF/persistence.xml index 0b67c2e60..b1a506255 100644 --- a/querydsl-jpa/src/test/resources/META-INF/persistence.xml +++ b/querydsl-jpa/src/test/resources/META-INF/persistence.xml @@ -236,9 +236,9 @@ - - - + + + diff --git a/querydsl-jpa/src/test/resources/com/querydsl/jpa/testutil/mssql.properties b/querydsl-jpa/src/test/resources/com/querydsl/jpa/testutil/mssql.properties index b82ea94f1..10fbdc982 100644 --- a/querydsl-jpa/src/test/resources/com/querydsl/jpa/testutil/mssql.properties +++ b/querydsl-jpa/src/test/resources/com/querydsl/jpa/testutil/mssql.properties @@ -1,9 +1,9 @@ ## MSSQL hibernate.dialect=com.querydsl.jpa.support.QSQLServer2008Dialect hibernate.connection.driver_class=net.sourceforge.jtds.jdbc.Driver -hibernate.connection.url=jdbc:jtds:sqlserver://localhost:1433/querydsl -hibernate.connection.username=querydsl -hibernate.connection.password=querydsl +hibernate.connection.url=jdbc:jtds:sqlserver://localhost:1433/tempdb +hibernate.connection.username=sa +hibernate.connection.password=Password1! ## Common properties #hibernate.show_sql=true diff --git a/querydsl-sql-codegen/src/test/java/com/querydsl/sql/codegen/ExportBaseTest.java b/querydsl-sql-codegen/src/test/java/com/querydsl/sql/codegen/ExportBaseTest.java index 8fcd0a7a2..8d67f5908 100644 --- a/querydsl-sql-codegen/src/test/java/com/querydsl/sql/codegen/ExportBaseTest.java +++ b/querydsl-sql-codegen/src/test/java/com/querydsl/sql/codegen/ExportBaseTest.java @@ -22,6 +22,10 @@ import org.junit.rules.TemporaryFolder; import com.querydsl.sql.Connections; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.Matchers.greaterThan; + public abstract class ExportBaseTest { @Rule @@ -37,6 +41,8 @@ public abstract class ExportBaseTest { exporter.setTargetFolder(folder.getRoot()); exporter.setNamingStrategy(namingStrategy); exporter.export(Connections.getConnection().getMetaData()); + + assertThat(folder.getRoot().listFiles().length, is(greaterThan(0))); } protected String getSchemaPattern() { diff --git a/querydsl-sql-codegen/src/test/java/com/querydsl/sql/codegen/ExportMSSQLTest.java b/querydsl-sql-codegen/src/test/java/com/querydsl/sql/codegen/ExportMSSQLTest.java index 21b06902b..eca6dc02a 100644 --- a/querydsl-sql-codegen/src/test/java/com/querydsl/sql/codegen/ExportMSSQLTest.java +++ b/querydsl-sql-codegen/src/test/java/com/querydsl/sql/codegen/ExportMSSQLTest.java @@ -27,4 +27,8 @@ public class ExportMSSQLTest extends ExportBaseTest { Connections.initSQLServer(); } + @Override + protected String getSchemaPattern() { + return "sys"; + } } diff --git a/querydsl-sql/src/test/java/com/querydsl/sql/Connections.java b/querydsl-sql/src/test/java/com/querydsl/sql/Connections.java index d4357d20f..8e1ef8555 100644 --- a/querydsl-sql/src/test/java/com/querydsl/sql/Connections.java +++ b/querydsl-sql/src/test/java/com/querydsl/sql/Connections.java @@ -138,10 +138,10 @@ public final class Connections { private static Connection getSQLServer() throws ClassNotFoundException, SQLException { Class.forName("net.sourceforge.jtds.jdbc.Driver"); Properties props = new Properties(); - props.put("user", "querydsl"); - props.put("password", "querydsl"); + props.put("user", "sa"); + props.put("password", "Password1!"); props.put("sendTimeAsDatetime", "false"); - String url = "jdbc:jtds:sqlserver://localhost:1433/querydsl"; + String url = "jdbc:jtds:sqlserver://localhost:1433/tempdb"; // return DriverManager.getConnection(url, "querydsl", "querydsl"); return DriverManager.getConnection(url, props); } diff --git a/querydsl-sql/src/test/java/com/querydsl/sql/SelectBase.java b/querydsl-sql/src/test/java/com/querydsl/sql/SelectBase.java index 09a268996..a89537364 100644 --- a/querydsl-sql/src/test/java/com/querydsl/sql/SelectBase.java +++ b/querydsl-sql/src/test/java/com/querydsl/sql/SelectBase.java @@ -1177,7 +1177,7 @@ public class SelectBase extends AbstractBaseTest { } @Test - @ExcludeIn(FIREBIRD) // FIXME + @ExcludeIn({FIREBIRD, SQLSERVER}) // FIXME public void math2() { math(Expressions.constant(0.5)); } @@ -2119,7 +2119,7 @@ public class SelectBase extends AbstractBaseTest { } @Test - @ExcludeIn({DB2, DERBY}) + @ExcludeIn({DB2, DERBY, SQLSERVER}) public void groupConcat() { List expected = ImmutableList.of("Mike,Mary", "Joe,Peter,Steve,Jim", "Jennifer,Helen,Daisy,Barbara"); if (Connections.getTarget() == POSTGRESQL) { @@ -2133,7 +2133,7 @@ public class SelectBase extends AbstractBaseTest { } @Test - @ExcludeIn({DB2, DERBY}) + @ExcludeIn({DB2, DERBY, SQLSERVER}) public void groupConcat2() { List expected = ImmutableList.of("Mike-Mary", "Joe-Peter-Steve-Jim", "Jennifer-Helen-Daisy-Barbara"); if (Connections.getTarget() == POSTGRESQL) { diff --git a/travis/docker-compose.yml b/travis/docker-compose.yml index f1aed566f..5b39b8543 100644 --- a/travis/docker-compose.yml +++ b/travis/docker-compose.yml @@ -6,6 +6,8 @@ services: depends_on: db2: condition: service_healthy + sqlserver: + condition: service_healthy mysql: image: mysql:5.6.38 @@ -61,11 +63,25 @@ services: - ARCHIVE_LOGS=false - AUTOCONFIG=false healthcheck: - test: ["CMD", "/opt/ibm/db2/V11.5/bin/db2", "CONNECT", "TO", "sample"] + test: /opt/ibm/db2/V11.5/bin/db2 CONNECT TO $$DBNAME interval: 5s timeout: 180s start_period: 180s + sqlserver: + image: mcr.microsoft.com/mssql/server:2017-latest-ubuntu + environment: + - ACCEPT_EULA=Y + - SA_PASSWORD=Password1! + - MSSQL_PID=Express + ports: + - "1433:1433" + healthcheck: + test: /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$$SA_PASSWORD" -Q "SELECT 1" || exit 1 + interval: 5s + timeout: 30s + start_period: 30s + firebird: image: jacobalberty/firebird:2.5.6-ss ports: From 4d7f485663533274a070566d313968bf1fb46110 Mon Sep 17 00:00:00 2001 From: John Tims Date: Wed, 27 May 2020 15:39:37 -0600 Subject: [PATCH 2/2] Give sqlserver and db2 more time to initialize --- travis/docker-compose.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/travis/docker-compose.yml b/travis/docker-compose.yml index 5b39b8543..588f1d210 100644 --- a/travis/docker-compose.yml +++ b/travis/docker-compose.yml @@ -65,8 +65,8 @@ services: healthcheck: test: /opt/ibm/db2/V11.5/bin/db2 CONNECT TO $$DBNAME interval: 5s - timeout: 180s - start_period: 180s + timeout: 240s + start_period: 240s sqlserver: image: mcr.microsoft.com/mssql/server:2017-latest-ubuntu @@ -79,8 +79,8 @@ services: healthcheck: test: /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P "$$SA_PASSWORD" -Q "SELECT 1" || exit 1 interval: 5s - timeout: 30s - start_period: 30s + timeout: 60s + start_period: 60s firebird: image: jacobalberty/firebird:2.5.6-ss