From b166e684e1e5a7c8062d63e938a2a2deb0e9729b Mon Sep 17 00:00:00 2001 From: Christian Beikov Date: Tue, 6 Apr 2021 14:24:13 +0200 Subject: [PATCH] Skip certain LockTests for Oracle on GH Actions which don't work there --- .github/workflows/contributor-build.yml | 13 +++++- .travis.yml | 56 ----------------------- README.md | 19 ++++++++ ci/build-github.sh | 16 ------- ci/build.sh | 7 ++- ci/{build-travis.sh => database-start.sh} | 12 ++--- docker_db.sh | 3 +- gradle/databases.gradle | 34 ++++++++------ hibernate-core/hibernate-core.gradle | 6 +++ 9 files changed, 68 insertions(+), 98 deletions(-) delete mode 100644 .travis.yml rename ci/{build-travis.sh => database-start.sh} (79%) diff --git a/.github/workflows/contributor-build.yml b/.github/workflows/contributor-build.yml index 9a549710f3..dbdb5d6e2d 100644 --- a/.github/workflows/contributor-build.yml +++ b/.github/workflows/contributor-build.yml @@ -41,10 +41,19 @@ jobs: experimental: true - rdbms: mssql experimental: true +# Running with HANA requires at least 8GB memory just for the database, which we don't have on GH Actions runners +# - rdbms: hana +# experimental: true steps: - uses: actions/checkout@v2 + with: + persist-credentials: false - name: Reclaim Disk Space run: .github/ci-prerequisites.sh + - name: Start database + env: + RDBMS: ${{ matrix.rdbms }} + run: ci/database-start.sh - name: Set up Java 8 uses: actions/setup-java@v1 with: @@ -86,6 +95,8 @@ jobs: continue-on-error: true steps: - uses: actions/checkout@v2 + with: + persist-credentials: false - name: Set up Java 11 uses: actions/setup-java@v1 with: @@ -117,4 +128,4 @@ jobs: ./**/target/reports/tests/ ./**/target/reports/checkstyle/ - name: Omit produced artifacts from build cache - run: ./ci/before-cache.sh \ No newline at end of file + run: ./ci/before-cache.sh diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 0418e1966c..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,56 +0,0 @@ -dist: trusty -language: java -script: - - ./ci/build-travis.sh -before_cache: - - ./ci/before-cache.sh -cache: - directories: - - $HOME/.gradle/caches/ - - $HOME/.gradle/wrapper/ -matrix: - fast_finish: true - include: - - env: RDBMS=h2 - jdk: oraclejdk8 - sudo: required -# - env: RDBMS=derby -# jdk: oraclejdk8 -# sudo: required -# - env: RDBMS=mariadb -# jdk: oraclejdk8 -# sudo: true -# services: -# - docker -# - env: RDBMS=postgresql -# jdk: oraclejdk8 -# sudo: true -# services: -# - docker -# - env: RDBMS=oracle -# jdk: oraclejdk8 -# sudo: true -# services: -# - docker -# - env: RDBMS=db2 -# jdk: oraclejdk8 -# sudo: true -# services: -# - docker -# - env: RDBMS=mssql -# jdk: oraclejdk8 -# sudo: true -# services: -# - docker - - env: JDK=11 - install: - - curl -L -o install-jdk.sh https://github.com/sormuras/bach/raw/master/install-jdk.sh - - source ./install-jdk.sh --target ./openjdk11 --url https://github.com/AdoptOpenJDK/openjdk11-binaries/releases/download/jdk-11.0.9%2B11.1/OpenJDK11U-jdk_x64_linux_hotspot_11.0.9_11.tar.gz - allow_failures: -# - env: RDBMS=derby -# - env: RDBMS=mariadb -# - env: RDBMS=postgresql -# - env: RDBMS=oracle -# - env: RDBMS=db2 -# - env: RDBMS=mssql - - env: JDK=11 \ No newline at end of file diff --git a/README.md b/README.md index 005d039071..8f5a40840b 100644 --- a/README.md +++ b/README.md @@ -146,3 +146,22 @@ You can do this from the module which you are interested in testing or from the Afterward, just pick any test from the IDE and run it as usual. Hibernate will pick the database configuration from the `hibernate.properties` file that was set up by the `setDataBase` Gradle task. + +Starting test databases locally as docker containers +------------------------------------------------------------- + +You don't have to install all databases locally to be able to test against them in case you have docker available. +The script `docker_db.sh` allows you to start a pre-configured database which can be used for testing. + +All you have to do is run the following command: + + ./docker_db.sh postgresql_9_5 + +omitting the argument will print a list of possible options. + +When the database is properly started, you can run tests with special profiles that are suffixed with `_ci` +e.g. `pgsql_ci` for PostgreSQL. By using the system property `dbHost` you can configure the IP address of your docker host. + +The command for running tests could look like the following: + + gradlew test -Pdb=pgsql_ci "-DdbHost=192.168.99.100" \ No newline at end of file diff --git a/ci/build-github.sh b/ci/build-github.sh index 281feed19c..74c0ae24de 100755 --- a/ci/build-github.sh +++ b/ci/build-github.sh @@ -4,20 +4,4 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" java -version -if [ "$RDBMS" == 'mysql' ]; then - bash $DIR/../docker_db.sh mysql_5_7 -elif [ "$RDBMS" == 'mysql8' ]; then - bash $DIR/../docker_db.sh mysql_8_0 -elif [ "$RDBMS" == 'mariadb' ]; then - bash $DIR/../docker_db.sh mariadb -elif [ "$RDBMS" == 'postgresql' ]; then - bash $DIR/../docker_db.sh postgresql_9_5 -elif [ "$RDBMS" == 'db2' ]; then - bash $DIR/../docker_db.sh db2 -elif [ "$RDBMS" == 'oracle' ]; then - bash $DIR/../docker_db.sh oracle -elif [ "$RDBMS" == 'mssql' ]; then - bash $DIR/../docker_db.sh mssql -fi - exec bash $DIR/build.sh \ No newline at end of file diff --git a/ci/build.sh b/ci/build.sh index 5a72ba2a45..30176554d9 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -8,11 +8,14 @@ elif [ "$RDBMS" == "mariadb" ]; then elif [ "$RDBMS" == "postgresql" ]; then goal="-Pdb=pgsql_ci" elif [ "$RDBMS" == "oracle" ]; then - goal="-Pdb=oracle_ci" + # I have no idea why, but these tests don't work on GH Actions + goal="-Pdb=oracle_ci -PexcludeTests=**.LockTest.testQueryTimeout*" elif [ "$RDBMS" == "db2" ]; then goal="-Pdb=db2_ci" elif [ "$RDBMS" == "mssql" ]; then goal="-Pdb=mssql_ci" +elif [ "$RDBMS" == "hana" ]; then + goal="-Pdb=hana_ci" fi -exec ./gradlew check ${goal} -Plog-test-progress=true --stacktrace \ No newline at end of file +exec ./gradlew check ${goal} -Plog-test-progress=true --stacktrace diff --git a/ci/build-travis.sh b/ci/database-start.sh similarity index 79% rename from ci/build-travis.sh rename to ci/database-start.sh index 603396112b..e603a9631b 100755 --- a/ci/build-travis.sh +++ b/ci/database-start.sh @@ -2,19 +2,13 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" -java -version - if [ "$RDBMS" == 'mysql' ]; then - sudo service mysql stop bash $DIR/../docker_db.sh mysql_5_7 elif [ "$RDBMS" == 'mysql8' ]; then - sudo service mysql stop bash $DIR/../docker_db.sh mysql_8_0 elif [ "$RDBMS" == 'mariadb' ]; then - sudo service mysql stop bash $DIR/../docker_db.sh mariadb elif [ "$RDBMS" == 'postgresql' ]; then - sudo service postgres stop bash $DIR/../docker_db.sh postgresql_9_5 elif [ "$RDBMS" == 'db2' ]; then bash $DIR/../docker_db.sh db2 @@ -22,6 +16,6 @@ elif [ "$RDBMS" == 'oracle' ]; then bash $DIR/../docker_db.sh oracle elif [ "$RDBMS" == 'mssql' ]; then bash $DIR/../docker_db.sh mssql -fi - -exec bash $DIR/build.sh \ No newline at end of file +elif [ "$RDBMS" == 'hana' ]; then + bash $DIR/../docker_db.sh hana +fi \ No newline at end of file diff --git a/docker_db.sh b/docker_db.sh index eee8c47bd5..4f0cd16494 100755 --- a/docker_db.sh +++ b/docker_db.sh @@ -197,6 +197,7 @@ hana() { chmod 777 -R $temp_dir docker rm -f hana || true docker run -d --name hana -p 39013:39013 -p 39017:39017 -p 39041-39045:39041-39045 -p 1128-1129:1128-1129 -p 59013-59014:59013-59014 \ + --memory=8g \ --ulimit nofile=1048576:1048576 \ --sysctl kernel.shmmax=1073741824 \ --sysctl net.ipv4.ip_local_port_range='40000 60999' \ @@ -251,4 +252,4 @@ if [ -z ${1} ]; then echo -e "\tcockroachdb" else ${1} -fi \ No newline at end of file +fi diff --git a/gradle/databases.gradle b/gradle/databases.gradle index 8e62ba2fee..cf54fda5dd 100644 --- a/gradle/databases.gradle +++ b/gradle/databases.gradle @@ -45,7 +45,7 @@ ext { 'jdbc.user' : 'hibernate_orm_test', 'jdbc.pass' : 'hibernate_orm_test', // Disable prepared statement caching due to https://www.postgresql.org/message-id/CAEcMXhmmRd4-%2BNQbnjDT26XNdUoXdmntV9zdr8%3DTu8PL9aVCYg%40mail.gmail.com - 'jdbc.url' : 'jdbc:postgresql://127.0.0.1/hibernate_orm_test?preparedStatementCacheQueries=0' + 'jdbc.url' : 'jdbc:postgresql://' + dbHost + '/hibernate_orm_test?preparedStatementCacheQueries=0' ], pgsql_ci : [ 'db.dialect' : 'org.hibernate.dialect.PostgreSQL95Dialect', @@ -60,14 +60,14 @@ ext { 'jdbc.driver': 'com.mysql.jdbc.Driver', 'jdbc.user' : 'hibernateormtest', 'jdbc.pass' : 'hibernateormtest', - 'jdbc.url' : 'jdbc:mysql://localhost/hibernate_orm_test' + 'jdbc.url' : 'jdbc:mysql://' + dbHost + '/hibernate_orm_test' ], mysql_docker : [ 'db.dialect' : 'org.hibernate.dialect.MySQL57Dialect', 'jdbc.driver': 'com.mysql.jdbc.Driver', 'jdbc.user' : 'hibernate_orm_test', 'jdbc.pass' : 'hibernate_orm_test', - 'jdbc.url' : 'jdbc:mysql://127.0.0.1/hibernate_orm_test?useSSL=false' + 'jdbc.url' : 'jdbc:mysql://' + dbHost + '/hibernate_orm_test?useSSL=false' ], // uses docker mysql_8_0 mysql8_spatial_ci: [ @@ -82,7 +82,7 @@ ext { 'jdbc.driver': 'org.mariadb.jdbc.Driver', 'jdbc.user' : 'hibernate_orm_test', 'jdbc.pass' : 'hibernate_orm_test', - 'jdbc.url' : 'jdbc:mariadb://127.0.0.1/hibernate_orm_test' + 'jdbc.url' : 'jdbc:mariadb://' + dbHost + '/hibernate_orm_test' ], mariadb_ci : [ 'db.dialect' : 'org.hibernate.dialect.MariaDB103Dialect', @@ -111,7 +111,7 @@ ext { 'jdbc.driver': 'oracle.jdbc.OracleDriver', 'jdbc.user' : 'hibernate_orm_test', 'jdbc.pass' : 'hibernate_orm_test', - 'jdbc.url' : 'jdbc:oracle:thin:@localhost:1521/xe' + 'jdbc.url' : 'jdbc:oracle:thin:@' + dbHost + ':1521/xe' ], // Use ./docker_db.sh oracle_ee to start the database oracle_docker : [ @@ -140,7 +140,7 @@ ext { 'jdbc.driver': 'com.microsoft.sqlserver.jdbc.SQLServerDriver', 'jdbc.user' : 'hibernate_orm_test', 'jdbc.pass' : 'hibernate_orm_test', - 'jdbc.url' : 'jdbc:sqlserver://localhost;instance=SQLEXPRESS;databaseName=hibernate_orm_test' + 'jdbc.url' : 'jdbc:sqlserver://' + dbHost + ';instance=SQLEXPRESS;databaseName=hibernate_orm_test' ], mssql_ci : [ 'db.dialect' : 'org.hibernate.dialect.SQLServer2012Dialect', @@ -161,14 +161,14 @@ ext { 'jdbc.driver': 'com.informix.jdbc.IfxDriver', 'jdbc.user' : 'informix', 'jdbc.pass' : 'in4mix', - 'jdbc.url' : 'jdbc:informix-sqli://127.0.0.1:9088/sysuser:INFORMIXSERVER=dev;user=informix;password=in4mix' + 'jdbc.url' : 'jdbc:informix-sqli://' + dbHost + ':9088/sysuser:INFORMIXSERVER=dev;user=informix;password=in4mix' ], db2 : [ 'db.dialect' : 'org.hibernate.dialect.DB2Dialect', 'jdbc.driver': 'com.ibm.db2.jcc.DB2Driver', 'jdbc.user' : 'db2inst1', 'jdbc.pass' : 'db2inst1-pwd', - 'jdbc.url' : 'jdbc:db2://127.0.0.1:50000/hibern8' + 'jdbc.url' : 'jdbc:db2://' + dbHost + ':50000/hibern8' ], db2_ci : [ 'db.dialect' : 'org.hibernate.dialect.DB2Dialect', @@ -190,7 +190,7 @@ ext { 'jdbc.user' : 'HIBERNATE_TEST', 'jdbc.pass' : 'H1bernate_test', // Disable prepared statement caching due to https://help.sap.com/viewer/0eec0d68141541d1b07893a39944924e/2.0.04/en-US/78f2163887814223858e4369d18e2847.html - 'jdbc.url' : 'jdbc:sap://localhost:30015/?statementCacheSize=0' + 'jdbc.url' : 'jdbc:sap://' + dbHost + ':30015/?statementCacheSize=0' ], hana_cloud : [ 'db.dialect' : 'org.hibernate.dialect.HANACloudColumnStoreDialect', @@ -198,7 +198,7 @@ ext { 'jdbc.user' : 'HIBERNATE_TEST', 'jdbc.pass' : 'H1bernate_test', // Disable prepared statement caching due to https://help.sap.com/viewer/0eec0d68141541d1b07893a39944924e/2.0.04/en-US/78f2163887814223858e4369d18e2847.html - 'jdbc.url' : 'jdbc:sap://localhost:443/?encrypt=true&validateCertificate=false&statementCacheSize=0' + 'jdbc.url' : 'jdbc:sap://' + dbHost + ':443/?encrypt=true&validateCertificate=false&statementCacheSize=0' ], hana_vlad : [ 'db.dialect' : 'org.hibernate.dialect.HANAColumnStoreDialect', @@ -206,7 +206,7 @@ ext { 'jdbc.user' : 'VLAD', 'jdbc.pass' : 'V1ad_test', // Disable prepared statement caching due to https://help.sap.com/viewer/0eec0d68141541d1b07893a39944924e/2.0.04/en-US/78f2163887814223858e4369d18e2847.html - 'jdbc.url' : 'jdbc:sap://localhost:39015/?statementCacheSize=0' + 'jdbc.url' : 'jdbc:sap://' + dbHost + ':39015/?statementCacheSize=0' ], hana_docker : [ 'db.dialect' : 'org.hibernate.dialect.HANAColumnStoreDialect', @@ -216,6 +216,14 @@ ext { // Disable prepared statement caching due to https://help.sap.com/viewer/0eec0d68141541d1b07893a39944924e/2.0.04/en-US/78f2163887814223858e4369d18e2847.html 'jdbc.url' : 'jdbc:sap://' + dbHost + ':39017/?statementCacheSize=0' ], + hana_ci : [ + 'db.dialect' : 'org.hibernate.dialect.HANAColumnStoreDialect', + 'jdbc.driver': 'com.sap.db.jdbc.Driver', + 'jdbc.user' : 'SYSTEM', + 'jdbc.pass' : 'H1bernate_test', + // Disable prepared statement caching due to https://help.sap.com/viewer/0eec0d68141541d1b07893a39944924e/2.0.04/en-US/78f2163887814223858e4369d18e2847.html + 'jdbc.url' : 'jdbc:sap://' + dbHost + ':39017/?statementCacheSize=0' + ], hana_spatial_ci : [ 'db.dialect' : 'org.hibernate.spatial.dialect.hana.HANASpatialDialect', 'jdbc.driver': 'com.sap.db.jdbc.Driver', @@ -231,7 +239,7 @@ ext { 'jdbc.user' : 'root', 'jdbc.pass' : '', // Disable prepared statement caching due to https://www.postgresql.org/message-id/CAEcMXhmmRd4-%2BNQbnjDT26XNdUoXdmntV9zdr8%3DTu8PL9aVCYg%40mail.gmail.com - 'jdbc.url' : 'jdbc:postgresql://localhost:26257/defaultdb?sslmode=disable&preparedStatementCacheQueries=0' + 'jdbc.url' : 'jdbc:postgresql://' + dbHost + ':26257/defaultdb?sslmode=disable&preparedStatementCacheQueries=0' ], cockroachdb_spatial : [ 'db.dialect' : 'org.hibernate.spatial.dialect.cockroachdb.CockroachDB202SpatialDialect', @@ -240,7 +248,7 @@ ext { 'jdbc.user' : 'root', 'jdbc.pass' : '', // Disable prepared statement caching due to https://www.postgresql.org/message-id/CAEcMXhmmRd4-%2BNQbnjDT26XNdUoXdmntV9zdr8%3DTu8PL9aVCYg%40mail.gmail.com - 'jdbc.url' : 'jdbc:postgresql://localhost:26257/defaultdb?sslmode=disable&preparedStatementCacheQueries=0' + 'jdbc.url' : 'jdbc:postgresql://' + dbHost + ':26257/defaultdb?sslmode=disable&preparedStatementCacheQueries=0' ] ] } diff --git a/hibernate-core/hibernate-core.gradle b/hibernate-core/hibernate-core.gradle index bfedf123cd..f4ae9c5270 100644 --- a/hibernate-core/hibernate-core.gradle +++ b/hibernate-core/hibernate-core.gradle @@ -251,6 +251,12 @@ test { beforeTest { descriptor -> //println "Starting test: " + descriptor } + // Allow to exclude specific tests + if (project.hasProperty('excludeTests')) { + filter { + excludeTestsMatching project.property('excludeTests').toString() + } + } } //Create the task that runs the integration tests found from the