diff --git a/.github/workflows/jdbc-tests-with-non-default-params.yml b/.github/workflows/jdbc-tests-with-non-default-params.yml new file mode 100644 index 0000000000..391516df49 --- /dev/null +++ b/.github/workflows/jdbc-tests-with-non-default-params.yml @@ -0,0 +1,119 @@ +name: JDBC Tests with non default server collation +on: [push, pull_request] + +jobs: + run-babelfish-jdbc-tests: + env: + INSTALL_DIR: psql + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + id: checkout + + - name: Install Dependencies + id: install-dependencies + if: always() + uses: ./.github/composite-actions/install-dependencies + + - name: Build Modified Postgres + id: build-modified-postgres + if: always() && steps.install-dependencies.outcome == 'success' + uses: ./.github/composite-actions/build-modified-postgres + + - name: Compile ANTLR + id: compile-antlr + if: always() && steps.build-modified-postgres.outcome == 'success' + uses: ./.github/composite-actions/compile-antlr + + - name: Build Extensions + id: build-extensions + if: always() && steps.compile-antlr.outcome == 'success' + uses: ./.github/composite-actions/build-extensions + + - name: Build tds_fdw Extension + id: build-tds_fdw-extension + if: always() && steps.build-extensions.outcome == 'success' + uses: ./.github/composite-actions/build-tds_fdw-extension + + - name: Build PostGIS Extension + id: build-postgis-extension + if: always() && steps.build-tds_fdw-extension.outcome == 'success' + uses: ./.github/composite-actions/build-postgis-extension + + - name: Install Extensions + id: install-extensions + if: always() && steps.build-postgis-extension.outcome == 'success' + run: | + cd ~ + export PATH=/opt/mssql-tools/bin:$PATH + ~/psql/bin/initdb -D ~/psql/data/ + ~/psql/bin/pg_ctl -D ~/psql/data/ -l logfile start + cd psql/data + sudo sed -i "s/#listen_addresses = 'localhost'/listen_addresses = '*'/g" postgresql.conf + sudo sed -i "s/#shared_preload_libraries = ''/shared_preload_libraries = 'babelfishpg_tds, pg_stat_statements'/g" postgresql.conf + ipaddress=$(ifconfig eth0 | grep 'inet ' | cut -d: -f2 | awk '{ print $2}') + # Allow only runner to have trust authentication, all other users must provide a password + { + sudo echo "local all runner trust" + sudo echo "local all all md5" + sudo echo "host all runner 127.0.0.1/32 trust" + sudo echo "host all runner $ipaddress/32 trust" + sudo echo "host all all 0.0.0.0/0 md5" + sudo echo "host all all ::/0 md5" + } > pg_hba.conf + + sudo echo "babelfishpg_tsql.server_collation_name = 'chinese_prc_ci_as'" >> postgresql.conf + + ~/psql/bin/pg_ctl -D ~/psql/data/ -l logfile restart + cd ~/work/babelfish_extensions/babelfish_extensions/ + sudo ~/psql/bin/psql -d postgres -U runner -v user="jdbc_user" -v db="jdbc_testdb" -v migration_mode="single-db" -v parallel_query_mode=false -f .github/scripts/create_extension.sql + sqlcmd -S localhost -U "jdbc_user" -P 12345678 -Q "SELECT @@version GO" + shell: bash + + - name: Run JDBC Tests + id: jdbc + if: always() && steps.install-extensions.outcome == 'success' + timeout-minutes: 60 + run: | + export PATH=~/${{env.INSTALL_DIR}}/bin:$PATH + export PG_SRC=~/work/babelfish_extensions/postgresql_modified_for_babelfish + cd test/JDBC/ + mvn test + + - name: Cleanup babelfish database + id: cleanup + if: always() && steps.install-extensions.outcome == 'success' + run: | + sudo ~/psql/bin/psql -d postgres -U runner -v user="jdbc_user" -v db="jdbc_testdb" -f .github/scripts/cleanup_babelfish_database.sql + + - name: Upload Log + if: always() && steps.jdbc.outcome == 'failure' + uses: actions/upload-artifact@v2 + with: + name: postgres-log + path: ~/psql/data/logfile + + # The test summary files contain paths with ':' characters, which is not allowed with the upload-artifact actions + - name: Rename Test Summary Files + id: test-file-rename + if: always() && steps.jdbc.outcome == 'failure' + run: | + cd test/JDBC/Info + timestamp=`ls -Art | tail -n 1` + cd $timestamp + mv $timestamp.diff ../output-diff.diff + mv "$timestamp"_runSummary.log ../run-summary.log + + - name: Upload Run Summary + if: always() && steps.test-file-rename == 'success' + uses: actions/upload-artifact@v2 + with: + name: run-summary.log + path: test/JDBC/Info/run-summary.log + + - name: Upload Output Diff + if: always() && steps.jdbc.outcome == 'failure' + uses: actions/upload-artifact@v2 + with: + name: output-diff.diff + path: test/JDBC/Info/output-diff.diff