From e87710e6fb7209b5ea62099367a95a0ba8377645 Mon Sep 17 00:00:00 2001 From: Vincent Guilpain Date: Thu, 4 Sep 2025 10:34:16 +0900 Subject: [PATCH 1/4] Support TiDB --- .github/workflows/ci.yaml | 222 ++++++++++++++++++ .../jdbc/JdbcAdminImportTestUtils.java | 16 ++ .../com/scalar/db/storage/jdbc/JdbcEnv.java | 6 + 3 files changed, 244 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index db0c6b3b74..0b7133aec8 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1741,6 +1741,228 @@ jobs: name: db2_12.1_integration_test_reports_${{ matrix.mode.label }} path: core/build/reports/tests/integrationTestJdbc + integration-test-for-tidb-v6-5: + name: TiDB v6.5 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - name: Install TiUP + run: | + curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh + echo "$HOME/.tiup/bin" >> $GITHUB_PATH + + - name: Start TiDB with TiUP Playground + timeout-minutes: 3 + run: | + tiup playground v6.5 --db 1 --pd 1 --kv 1 --tiflash 0 --without-monitor > tiup.log 2>&1 & + # Check if TiDB is running + while true; do + if mysql -h 127.0.0.1 -P 4000 -u root -e "SELECT 1" > /dev/null 2>&1; then + echo "TiDB is ready" + break + fi + echo "Waiting for TiDB to be ready..." + sleep 5 + done + + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=REPEATABLE_READ ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: tidb_v6_5_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-tidb-v7-5: + name: TiDB v7.5 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - name: Install TiUP + run: | + curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh + echo "$HOME/.tiup/bin" >> $GITHUB_PATH + + - name: Start TiDB with TiUP Playground + timeout-minutes: 3 + run: | + tiup playground v7.5 --db 1 --pd 1 --kv 1 --tiflash 0 --without-monitor > tiup.log 2>&1 & + # Check if TiDB is running + while true; do + if mysql -h 127.0.0.1 -P 4000 -u root -e "SELECT 1" > /dev/null 2>&1; then + echo "TiDB is ready" + break + fi + echo "Waiting for TiDB to be ready..." + sleep 5 + done + + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=REPEATABLE_READ ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: tidb_v7_5_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-tidb-v8-5: + name: TiDB v8.5 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - name: Install TiUP + run: | + curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh + echo "$HOME/.tiup/bin" >> $GITHUB_PATH + + - name: Start TiDB with TiUP Playground + timeout-minutes: 3 + run: | + tiup playground v8.5 --db 1 --pd 1 --kv 1 --tiflash 0 --without-monitor > tiup.log 2>&1 & + # Check if TiDB is running + while true; do + if mysql -h 127.0.0.1 -P 4000 -u root -e "SELECT 1" > /dev/null 2>&1; then + echo "TiDB is ready" + break + fi + echo "Waiting for TiDB to be ready..." + sleep 5 + done + + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=REPEATABLE_READ ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: tidb_v8_5_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + integration-test-for-multi-storage: name: Multi-storage integration test (${{ matrix.mode.label }}) runs-on: ubuntu-latest diff --git a/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcAdminImportTestUtils.java b/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcAdminImportTestUtils.java index 333185686a..c9d03c988b 100644 --- a/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcAdminImportTestUtils.java +++ b/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcAdminImportTestUtils.java @@ -603,6 +603,13 @@ private List createExistingMysqlDatabaseWithAllDataTypes(String namesp UNSUPPORTED_DATA_TYPES_MYSQL.stream() .filter(type -> !type.equalsIgnoreCase("JSON")) .collect(Collectors.toList()))); + } else if (isTiDB()) { + data.addAll( + prepareCreateNonImportableTableSql( + namespace, + UNSUPPORTED_DATA_TYPES_MYSQL.stream() + .filter(type -> !type.equalsIgnoreCase("GEOMETRY")) + .collect(Collectors.toList()))); } else { data.addAll(prepareCreateNonImportableTableSql(namespace, UNSUPPORTED_DATA_TYPES_MYSQL)); } @@ -763,6 +770,15 @@ private boolean isMariaDB() { } } + private boolean isTiDB() { + try (Connection connection = dataSource.getConnection()) { + String version = connection.getMetaData().getDatabaseProductVersion(); + return version.contains("TiDB"); + } catch (SQLException e) { + throw new RuntimeException("Get database product version failed"); + } + } + private int getMajorVersion() { try (Connection connection = dataSource.getConnection()) { return connection.getMetaData().getDatabaseMajorVersion(); diff --git a/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcEnv.java b/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcEnv.java index 3c7ab0eeed..fdc8965944 100644 --- a/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcEnv.java +++ b/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcEnv.java @@ -2,6 +2,7 @@ import com.scalar.db.config.DatabaseConfig; import java.util.Properties; +import org.assertj.core.util.Strings; public final class JdbcEnv { private static final String PROP_JDBC_URL = "scalardb.jdbc.url"; @@ -9,6 +10,7 @@ public final class JdbcEnv { private static final String PROP_JDBC_PASSWORD = "scalardb.jdbc.password"; private static final String PROP_JDBC_NORMAL_USERNAME = "scalardb.jdbc.normal_username"; private static final String PROP_JDBC_NORMAL_PASSWORD = "scalardb.jdbc.normal_password"; + private static final String PROP_JDBC_ISOLATION_LEVEL = "scalardb.jdbc.isolation_level"; private static final String DEFAULT_JDBC_URL = "jdbc:postgresql://localhost:5432/"; private static final String DEFAULT_JDBC_USERNAME = "postgres"; @@ -22,6 +24,7 @@ public static Properties getProperties(String testName) { String jdbcUrl = System.getProperty(PROP_JDBC_URL, DEFAULT_JDBC_URL); String username = System.getProperty(PROP_JDBC_USERNAME, DEFAULT_JDBC_USERNAME); String password = System.getProperty(PROP_JDBC_PASSWORD, DEFAULT_JDBC_PASSWORD); + String isolationLevel = System.getProperty(PROP_JDBC_ISOLATION_LEVEL); Properties properties = new Properties(); properties.setProperty(DatabaseConfig.CONTACT_POINTS, jdbcUrl); @@ -31,6 +34,9 @@ public static Properties getProperties(String testName) { properties.setProperty(DatabaseConfig.CROSS_PARTITION_SCAN, "true"); properties.setProperty(DatabaseConfig.CROSS_PARTITION_SCAN_FILTERING, "true"); properties.setProperty(DatabaseConfig.CROSS_PARTITION_SCAN_ORDERING, "true"); + if (!Strings.isNullOrEmpty(isolationLevel)) { + properties.setProperty(JdbcConfig.ISOLATION_LEVEL, isolationLevel); + } // Add testName as a metadata schema suffix properties.setProperty( From d002937697b4b599ef0ad9f1bfa186eeebf6455b Mon Sep 17 00:00:00 2001 From: Vincent Guilpain Date: Tue, 30 Sep 2025 18:04:34 +0900 Subject: [PATCH 2/4] Try with read_commited transaction isolation --- .github/workflows/ci.yaml | 3540 ++++++++++++++++++------------------- 1 file changed, 1770 insertions(+), 1770 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0b7133aec8..9440cbef51 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -44,1702 +44,1702 @@ env: INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT: '"-Dscalardb.consensus_commit.coordinator.group_commit.enabled=true" "-Dscalardb.consensus_commit.coordinator.group_commit.old_group_abort_timeout_millis=15000" --tests "**.ConsensusCommit**"' jobs: - check: - name: Gradle check - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'check' task - run: ./gradlew check buildSrc:check - - - name: Save Gradle test reports - if: always() - run: | - mkdir -p /tmp/gradle_test_reports/core - mkdir -p /tmp/gradle_test_reports/schema-loader - mkdir -p /tmp/gradle_test_reports/data-loader/core - mkdir -p /tmp/gradle_test_reports/data-loader/cli - cp -a core/build/reports/tests/test /tmp/gradle_test_reports/core/ - cp -a schema-loader/build/reports/tests/test /tmp/gradle_test_reports/schema-loader/ - cp -a data-loader/core/build/reports/tests/test /tmp/gradle_test_reports/data-loader/core/ - cp -a data-loader/cli/build/reports/tests/test /tmp/gradle_test_reports/data-loader/cli/ - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: gradle_check_reports - path: /tmp/gradle_test_reports - - - name: Save SpotBugs reports - if: always() - run: | - mkdir -p /tmp/gradle_spotbugs_reports/core - mkdir -p /tmp/gradle_spotbugs_reports/schema-loader - mkdir -p /tmp/gradle_spotbugs_reports/integration-test - mkdir -p /tmp/gradle_spotbugs_reports/data-loader/core - mkdir -p /tmp/gradle_spotbugs_reports/data-loader/cli - cp -a core/build/reports/spotbugs /tmp/gradle_spotbugs_reports/core/ - cp -a schema-loader/build/reports/spotbugs /tmp/gradle_spotbugs_reports/schema-loader/ - cp -a integration-test/build/reports/spotbugs /tmp/gradle_spotbugs_reports/integration-test/ - cp -a data-loader/core/build/reports/spotbugs /tmp/gradle_spotbugs_reports/data-loader/core/ - cp -a data-loader/cli/build/reports/spotbugs /tmp/gradle_spotbugs_reports/data-loader/cli/ - - - name: Upload Spotbugs reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: gradle_spotbugs_reports - path: /tmp/gradle_spotbugs_reports - - dockerfile-lint: - name: Lint dockerfiles - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Dockerfile Lint for ScalarDB Schema Loader - run: ./gradlew schema-loader:dockerfileLint - - - name: Dockerfile Lint for ScalarDB Data Loader CLI - run: ./gradlew data-loader:cli:dockerfileLint - - integration-test-for-cassandra-3-0: - name: Cassandra 3.0 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - cassandra: - image: cassandra:3.0 - env: - MAX_HEAP_SIZE: 2048m - HEAP_NEWSIZE: 512m - ports: - - 9042:9042 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestCassandra' task - run: ./gradlew integrationTestCassandra ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: cassandra_3.0_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestCassandra - - integration-test-for-cassandra-3-11: - name: Cassandra 3.11 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - cassandra: - image: cassandra:3.11 - env: - MAX_HEAP_SIZE: 2048m - HEAP_NEWSIZE: 512m - ports: - - 9042:9042 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestCassandra' task - run: ./gradlew integrationTestCassandra ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: cassandra_3.11_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestCassandra - - integration-test-for-cosmos: - name: Cosmos DB integration test (${{ matrix.mode.label }}) - runs-on: windows-latest - env: - # Official Oracle JDK images that are windows compatible and publicly available through direct download do not exist for JDK 8 and 11 so we use instead cached versions hosted on the Scalar container registry. - # This variable evaluates to: if {!(Temurin JDK 8) && !(Oracle JDK 8 or 11)} then {true} else {false} - SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11: "${{ (github.event_name == 'workflow_dispatch' && !(inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'temurin') && !(inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' && (inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11'))) && 'true' || 'false' }}" - SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11: "${{ ((inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11') && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle') && 'true' || 'false' }}" - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11 == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.CR_PAT }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} - run: | - $container_id=$(docker create "ghcr.io/scalar-labs/oracle/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}-windows") - docker cp "${container_id}:oracle-jdk.exe" . - docker rm "$container_id" - Write-Host "Install Oracle JDK" - Start-Process "oracle-jdk.exe" -NoNewWindow -Wait -ArgumentList "/s" - Write-Host "Oracle JDK installation successful" - if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { - $jdk_root_dir = "jdk-1.8" - } else { - $jdk_root_dir = "jdk-11" - } - echo "JAVA_HOME=C:\Program Files\Java\${jdk_root_dir}" >> ${env:GITHUB_ENV} - - - name: Start Azure Cosmos DB emulator - run: | - Write-Host "Launching Cosmos DB Emulator" - Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator" - # Set startup timeout to 10min (600s), the default is 4min - Start-CosmosDbEmulator -Consistency Strong -Timeout 600 - - - name: Install TLS/SSL certificate - run: | - $cert = Get-ChildItem Cert:\LocalMachine\My | where{$_.FriendlyName -eq 'DocumentDbEmulatorCertificate'} - $params = @{ - Cert = $cert - Type = "CERT" - FilePath = "$home/tmp-cert.cer" - NoClobber = $true - } - Export-Certificate @params - certutil -encode $home/tmp-cert.cer $home/cosmosdbcert.cer - Remove-Item $home/tmp-cert.cer - # Setting the keystore option differs between Java 8 and Java 11+ - if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { - $keystore = "-keystore", "${env:JAVA_HOME}/jre/lib/security/cacerts" - } else { - $keystore = "-cacerts" - } - & ${env:JAVA_HOME}/bin/keytool.exe $keystore -storepass 'changeit' -importcert -noprompt -alias cosmos_emulator -file $home/cosmosdbcert.cer - & ${env:JAVA_HOME}/bin/keytool.exe $keystore -storepass 'changeit' -list -alias cosmos_emulator - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestCosmos' task - run: ./gradlew.bat integrationTestCosmos "-Dscalardb.cosmos.uri=https://localhost:8081/" "-Dscalardb.cosmos.password=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==" "-Dfile.encoding=UTF-8" ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: cosmos_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestCosmos - - integration-test-for-dynamo: - name: DynamoDB integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - dynamodb: - image: amazon/dynamodb-local:1.17.0 - ports: - - 8000:8000 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestDynamo' task - run: ./gradlew integrationTestDynamo ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: dynamo_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestDynamo - - integration-test-for-jdbc-mysql-5-7: - name: MySQL 5.7 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - name: Run MySQL 5.7 - run: | - docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin - - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: mysql_5.7_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-mysql-8-0: - name: MySQL 8.0 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - name: Run MySQL 8.0 - run: | - docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin - - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: mysql_8.0_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-mysql-8-4: - name: MySQL 8.4 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - name: Run MySQL 8.4 - run: | - docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:8.4 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin - - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: mysql_8.4_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-postgresql-13: - name: PostgreSQL 13 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - postgres: - image: postgres:13-alpine - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - ports: - - 5432:5432 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: postgresql_13_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-postgresql-14: - name: PostgreSQL 14 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - postgres: - image: postgres:14-alpine - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - ports: - - 5432:5432 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: postgresql_14_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-postgresql-15: - name: PostgreSQL 15 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - postgres: - image: postgres:15-alpine - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - ports: - - 5432:5432 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: postgresql_15_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-postgresql-16: - name: PostgreSQL 16 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - postgres: - image: postgres:16-alpine - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - ports: - - 5432:5432 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: postgresql_16_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-postgresql-17: - name: PostgreSQL 17 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - postgres: - image: postgres:17-alpine - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - ports: - - 5432:5432 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: postgresql_17_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-oracle-19: - name: Oracle 19 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - oracle: - image: ghcr.io/scalar-labs/oracle/db-prebuilt:19 - credentials: - username: ${{ github.repository_owner }} - password: ${{ secrets.CR_PAT }} - ports: - - 1521:1521 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/ORCLPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: oracle_19_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-oracle-21: - name: Oracle 21 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - oracle: - image: ghcr.io/scalar-labs/oracle/db-prebuilt:21 - credentials: - username: ${{ github.repository_owner }} - password: ${{ secrets.CR_PAT }} - env: - ORACLE_PWD: Oracle - ports: - - 1521:1521 - options: >- - --health-cmd "/opt/oracle/checkDBStatus.sh" - --health-interval 10s - --health-timeout 5s - --health-retries 120 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/XEPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: oracle_21_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-oracle-23: - name: Oracle 23 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - name: Free up ~14GB of disk space by removing the Android SDK - run: | - echo "Storage available before deletion" - df -h / - echo - sudo rm -r /usr/local/lib/android - echo "Storage available after deletion" - df -h / - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.CR_PAT }} - - - name: Start Oracle 23 container - run: docker run -d --name oracle-23 -p 1521:1521 ghcr.io/scalar-labs/oracle/db-prebuilt:23 - - - name: Wait for the container to be ready - timeout-minutes: 5 - run: | - while [ "`docker inspect -f {{.State.Health.Status}} oracle-23`" != "healthy" ] - do - sleep 10 - echo "Container is not yet ready" - done - echo "Container is ready" - - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/FREEPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Stop Oracle 23 container - if: always() - run: docker stop oracle-23 | xargs docker rm - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: oracle_23_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-sqlserver-2017: - name: SQL Server 2017 integration test (${{ matrix.mode.label }}) - runs-on: windows-latest - env: - # Official Oracle JDK images that are windows compatible and publicly available through direct download do not exist for JDK 8 and 11 so we use instead cached versions hosted on the Scalar container registry. - # This variable evaluates to: if {!(Temurin JDK 8) && !(Oracle JDK 8 or 11)} then {true} else {false} - SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11: "${{ (github.event_name == 'workflow_dispatch' && !(inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'temurin') && !(inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' && (inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11'))) && 'true' || 'false' }}" - SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11: "${{ ((inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11') && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle') && 'true' || 'false' }}" - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Setup Sql Server 2017 - uses: rails-sqlserver/setup-mssql@v1 - with: - components: sqlcmd,sqlengine - sa-password: "SqlServer17" - version: 2017 - - - name: Create database with Japanese collation for integration test - run: | - sqlcmd -S localhost -U sa -P SqlServer17 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11 == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.CR_PAT }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} - run: | - $container_id=$(docker create "ghcr.io/scalar-labs/oracle/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}-windows") - docker cp "${container_id}:oracle-jdk.exe" . - docker rm "$container_id" - Write-Host "Install Oracle JDK" - Start-Process "oracle-jdk.exe" -NoNewWindow -Wait -ArgumentList "/s" - Write-Host "Oracle JDK installation successful" - if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { - $jdk_root_dir = "jdk-1.8" - } else { - $jdk_root_dir = "jdk-11" - } - echo "JAVA_HOME=C:\Program Files\Java\${jdk_root_dir}" >> ${env:GITHUB_ENV} - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew.bat integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" "-Dfile.encoding=UTF-8" "-Dscalardb.jdbc.username=sa" "-Dscalardb.jdbc.password=SqlServer17" ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: sqlserver_2017_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-sqlserver-2019: - name: SQL Server 2019 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - sqlserver: - image: mcr.microsoft.com/mssql/server:2019-latest - env: - MSSQL_PID: "Express" - SA_PASSWORD: "SqlServer19" - ACCEPT_EULA: "Y" - ports: - - 1433:1433 - options: --name sqlserver19 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Create database with Japanese collation for integration test - run: | - docker exec sqlserver19 /opt/mssql-tools18/bin/sqlcmd -S localhost -C -U sa -P SqlServer19 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=sa -Dscalardb.jdbc.password=SqlServer19 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: sqlserver_2019_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-sqlserver-2022: - name: SQL Server 2022 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - sqlserver: - image: mcr.microsoft.com/mssql/server:2022-latest - env: - MSSQL_PID: "Express" - SA_PASSWORD: "SqlServer22" - ACCEPT_EULA: "Y" - ports: - - 1433:1433 - options: --name sqlserver22 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Create database with Japanese collation for integration test - run: | - docker exec sqlserver22 /opt/mssql-tools18/bin/sqlcmd -S localhost -C -U sa -P SqlServer22 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=sa -Dscalardb.jdbc.password=SqlServer22 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: sqlserver_2022_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-sqlite-3: - name: SQLite 3 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Set up SQLite3 - run: sudo apt-get install -y sqlite3 - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:sqlite:integration.sqlite3?busy_timeout=50000 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: sqlite_3_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-mariadb-10: - name: MariaDB 10 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - name: Run MariaDB 10.11 - run: | - docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mariadb:10.11 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin - - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mariadb://localhost:3306 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: mariadb_10_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-mariadb-11-4: - name: MariaDB 11.4 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - name: Run MariaDB 11.4 - run: | - docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mariadb:11.4 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin - - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mariadb://localhost:3306 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: mariadb_11.4_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-yugabytedb-2: - name: YugabyteDB 2 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - name: Run YugabyteDB 2 - run: | - docker run -p 5433:5433 -e YSQL_USER=yugabyte -e YSQL_PASSWORD=yugabyte -d yugabytedb/yugabyte:2.20.4.0-b50 bin/yugabyted start --background=false --master_flag="ysql_enable_db_catalog_version_mode=false" --tserver_flags="ysql_enable_db_catalog_version_mode=false" - - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:yugabytedb://localhost:5433/?load-balance=any -Dscalardb.jdbc.username=yugabyte -Dscalardb.jdbc.password=yugabyte -Dscalar.db.jdbc.connection_pool.max_total=12 -Dscalar.db.jdbc.table_metadata.connection_pool.max_total=4 -Dscalar.db.jdbc.admin.connection_pool.max_total=4 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: yugabytedb_2_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-db2-11-5: - name: Db2 11.5 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - db2: - image: icr.io/db2_community/db2:11.5.9.0 - env: - DB2INSTANCE: db2inst1 - DB2INST1_PASSWORD: db2inst1 - DBNAME: test_db - LICENSE: accept - ports: - - 50000:50000 - options: --privileged --name db2 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Wait for the container to be ready - timeout-minutes: 10 - run: | - while ! docker logs db2 2>&1 | grep -q "Setup has completed" - do - echo "Container is not yet ready" - sleep 5s - done - echo "Container is ready" - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url="jdbc:db2://localhost:50000/test_db" -Dscalardb.jdbc.username=db2inst1 -Dscalardb.jdbc.password=db2inst1 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: db2_11.5_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-jdbc-db2-12-1: - name: Db2 12.1 integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - db2: - image: icr.io/db2_community/db2:12.1.1.0 - env: - DB2INSTANCE: db2inst1 - DB2INST1_PASSWORD: db2inst1 - DBNAME: test_db - LICENSE: accept - ports: - - 50000:50000 - options: --privileged --name db2 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Wait for the container to be ready - timeout-minutes: 10 - run: | - while ! docker logs db2 2>&1 | grep -q "Setup has completed" - do - echo "Container is not yet ready" - sleep 5s - done - echo "Container is ready" - - - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url="jdbc:db2://localhost:50000/test_db" -Dscalardb.jdbc.username=db2inst1 -Dscalardb.jdbc.password=db2inst1 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - if: always() - uses: actions/upload-artifact@v4 - with: - name: db2_12.1_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestJdbc +# check: +# name: Gradle check +# runs-on: ubuntu-latest +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'check' task +# run: ./gradlew check buildSrc:check + +# - name: Save Gradle test reports +# if: always() +# run: | +# mkdir -p /tmp/gradle_test_reports/core +# mkdir -p /tmp/gradle_test_reports/schema-loader +# mkdir -p /tmp/gradle_test_reports/data-loader/core +# mkdir -p /tmp/gradle_test_reports/data-loader/cli +# cp -a core/build/reports/tests/test /tmp/gradle_test_reports/core/ +# cp -a schema-loader/build/reports/tests/test /tmp/gradle_test_reports/schema-loader/ +# cp -a data-loader/core/build/reports/tests/test /tmp/gradle_test_reports/data-loader/core/ +# cp -a data-loader/cli/build/reports/tests/test /tmp/gradle_test_reports/data-loader/cli/ + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: gradle_check_reports +# path: /tmp/gradle_test_reports + +# - name: Save SpotBugs reports +# if: always() +# run: | +# mkdir -p /tmp/gradle_spotbugs_reports/core +# mkdir -p /tmp/gradle_spotbugs_reports/schema-loader +# mkdir -p /tmp/gradle_spotbugs_reports/integration-test +# mkdir -p /tmp/gradle_spotbugs_reports/data-loader/core +# mkdir -p /tmp/gradle_spotbugs_reports/data-loader/cli +# cp -a core/build/reports/spotbugs /tmp/gradle_spotbugs_reports/core/ +# cp -a schema-loader/build/reports/spotbugs /tmp/gradle_spotbugs_reports/schema-loader/ +# cp -a integration-test/build/reports/spotbugs /tmp/gradle_spotbugs_reports/integration-test/ +# cp -a data-loader/core/build/reports/spotbugs /tmp/gradle_spotbugs_reports/data-loader/core/ +# cp -a data-loader/cli/build/reports/spotbugs /tmp/gradle_spotbugs_reports/data-loader/cli/ + +# - name: Upload Spotbugs reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: gradle_spotbugs_reports +# path: /tmp/gradle_spotbugs_reports + +# dockerfile-lint: +# name: Lint dockerfiles +# runs-on: ubuntu-latest + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Dockerfile Lint for ScalarDB Schema Loader +# run: ./gradlew schema-loader:dockerfileLint + +# - name: Dockerfile Lint for ScalarDB Data Loader CLI +# run: ./gradlew data-loader:cli:dockerfileLint + +# integration-test-for-cassandra-3-0: +# name: Cassandra 3.0 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# cassandra: +# image: cassandra:3.0 +# env: +# MAX_HEAP_SIZE: 2048m +# HEAP_NEWSIZE: 512m +# ports: +# - 9042:9042 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestCassandra' task +# run: ./gradlew integrationTestCassandra ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: cassandra_3.0_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestCassandra + +# integration-test-for-cassandra-3-11: +# name: Cassandra 3.11 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# cassandra: +# image: cassandra:3.11 +# env: +# MAX_HEAP_SIZE: 2048m +# HEAP_NEWSIZE: 512m +# ports: +# - 9042:9042 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestCassandra' task +# run: ./gradlew integrationTestCassandra ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: cassandra_3.11_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestCassandra + +# integration-test-for-cosmos: +# name: Cosmos DB integration test (${{ matrix.mode.label }}) +# runs-on: windows-latest +# env: + # Official Oracle JDK images that are windows compatible and publicly available through direct download do not exist for JDK 8 and 11 so we use instead cached versions hosted on the Scalar container registry. + # This variable evaluates to: if {!(Temurin JDK 8) && !(Oracle JDK 8 or 11)} then {true} else {false} +# SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11: "${{ (github.event_name == 'workflow_dispatch' && !(inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'temurin') && !(inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' && (inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11'))) && 'true' || 'false' }}" +# SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11: "${{ ((inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11') && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle') && 'true' || 'false' }}" + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11 == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to GitHub Container Registry +# uses: docker/login-action@v3 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} +# with: +# registry: ghcr.io +# username: ${{ github.repository_owner }} +# password: ${{ secrets.CR_PAT }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} +# run: | +# $container_id=$(docker create "ghcr.io/scalar-labs/oracle/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}-windows") +# docker cp "${container_id}:oracle-jdk.exe" . +# docker rm "$container_id" +# Write-Host "Install Oracle JDK" +# Start-Process "oracle-jdk.exe" -NoNewWindow -Wait -ArgumentList "/s" +# Write-Host "Oracle JDK installation successful" +# if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { +# $jdk_root_dir = "jdk-1.8" +# } else { +# $jdk_root_dir = "jdk-11" +# } +# echo "JAVA_HOME=C:\Program Files\Java\${jdk_root_dir}" >> ${env:GITHUB_ENV} + +# - name: Start Azure Cosmos DB emulator +# run: | +# Write-Host "Launching Cosmos DB Emulator" +# Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator" + # Set startup timeout to 10min (600s), the default is 4min +# Start-CosmosDbEmulator -Consistency Strong -Timeout 600 + +# - name: Install TLS/SSL certificate +# run: | +# $cert = Get-ChildItem Cert:\LocalMachine\My | where{$_.FriendlyName -eq 'DocumentDbEmulatorCertificate'} +# $params = @{ +# Cert = $cert +# Type = "CERT" +# FilePath = "$home/tmp-cert.cer" +# NoClobber = $true +# } +# Export-Certificate @params +# certutil -encode $home/tmp-cert.cer $home/cosmosdbcert.cer +# Remove-Item $home/tmp-cert.cer + # Setting the keystore option differs between Java 8 and Java 11+ +# if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { +# $keystore = "-keystore", "${env:JAVA_HOME}/jre/lib/security/cacerts" +# } else { +# $keystore = "-cacerts" +# } +# & ${env:JAVA_HOME}/bin/keytool.exe $keystore -storepass 'changeit' -importcert -noprompt -alias cosmos_emulator -file $home/cosmosdbcert.cer +# & ${env:JAVA_HOME}/bin/keytool.exe $keystore -storepass 'changeit' -list -alias cosmos_emulator + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestCosmos' task +# run: ./gradlew.bat integrationTestCosmos "-Dscalardb.cosmos.uri=https://localhost:8081/" "-Dscalardb.cosmos.password=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==" "-Dfile.encoding=UTF-8" ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: cosmos_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestCosmos + +# integration-test-for-dynamo: +# name: DynamoDB integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# dynamodb: +# image: amazon/dynamodb-local:1.17.0 +# ports: +# - 8000:8000 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestDynamo' task +# run: ./gradlew integrationTestDynamo ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: dynamo_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestDynamo + +# integration-test-for-jdbc-mysql-5-7: +# name: MySQL 5.7 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - name: Run MySQL 5.7 +# run: | +# docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin + +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: mysql_5.7_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-mysql-8-0: +# name: MySQL 8.0 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - name: Run MySQL 8.0 +# run: | +# docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin + +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: mysql_8.0_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-mysql-8-4: +# name: MySQL 8.4 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - name: Run MySQL 8.4 +# run: | +# docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:8.4 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin + +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: mysql_8.4_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-postgresql-13: +# name: PostgreSQL 13 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# postgres: +# image: postgres:13-alpine +# env: +# POSTGRES_USER: postgres +# POSTGRES_PASSWORD: postgres +# ports: +# - 5432:5432 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: postgresql_13_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-postgresql-14: +# name: PostgreSQL 14 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# postgres: +# image: postgres:14-alpine +# env: +# POSTGRES_USER: postgres +# POSTGRES_PASSWORD: postgres +# ports: +# - 5432:5432 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: postgresql_14_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-postgresql-15: +# name: PostgreSQL 15 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# postgres: +# image: postgres:15-alpine +# env: +# POSTGRES_USER: postgres +# POSTGRES_PASSWORD: postgres +# ports: +# - 5432:5432 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: postgresql_15_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-postgresql-16: +# name: PostgreSQL 16 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# postgres: +# image: postgres:16-alpine +# env: +# POSTGRES_USER: postgres +# POSTGRES_PASSWORD: postgres +# ports: +# - 5432:5432 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: postgresql_16_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-postgresql-17: +# name: PostgreSQL 17 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# postgres: +# image: postgres:17-alpine +# env: +# POSTGRES_USER: postgres +# POSTGRES_PASSWORD: postgres +# ports: +# - 5432:5432 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: postgresql_17_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-oracle-19: +# name: Oracle 19 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# oracle: +# image: ghcr.io/scalar-labs/oracle/db-prebuilt:19 +# credentials: +# username: ${{ github.repository_owner }} +# password: ${{ secrets.CR_PAT }} +# ports: +# - 1521:1521 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/ORCLPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: oracle_19_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-oracle-21: +# name: Oracle 21 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# oracle: +# image: ghcr.io/scalar-labs/oracle/db-prebuilt:21 +# credentials: +# username: ${{ github.repository_owner }} +# password: ${{ secrets.CR_PAT }} +# env: +# ORACLE_PWD: Oracle +# ports: +# - 1521:1521 +# options: >- +# --health-cmd "/opt/oracle/checkDBStatus.sh" +# --health-interval 10s +# --health-timeout 5s +# --health-retries 120 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/XEPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: oracle_21_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-oracle-23: +# name: Oracle 23 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - name: Free up ~14GB of disk space by removing the Android SDK +# run: | +# echo "Storage available before deletion" +# df -h / +# echo +# sudo rm -r /usr/local/lib/android +# echo "Storage available after deletion" +# df -h / + +# - name: Login to GitHub Container Registry +# uses: docker/login-action@v3 +# with: +# registry: ghcr.io +# username: ${{ github.repository_owner }} +# password: ${{ secrets.CR_PAT }} + +# - name: Start Oracle 23 container +# run: docker run -d --name oracle-23 -p 1521:1521 ghcr.io/scalar-labs/oracle/db-prebuilt:23 + +# - name: Wait for the container to be ready +# timeout-minutes: 5 +# run: | +# while [ "`docker inspect -f {{.State.Health.Status}} oracle-23`" != "healthy" ] +# do +# sleep 10 +# echo "Container is not yet ready" +# done +# echo "Container is ready" + +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/FREEPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Stop Oracle 23 container +# if: always() +# run: docker stop oracle-23 | xargs docker rm + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: oracle_23_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-sqlserver-2017: +# name: SQL Server 2017 integration test (${{ matrix.mode.label }}) +# runs-on: windows-latest +# env: + # Official Oracle JDK images that are windows compatible and publicly available through direct download do not exist for JDK 8 and 11 so we use instead cached versions hosted on the Scalar container registry. + # This variable evaluates to: if {!(Temurin JDK 8) && !(Oracle JDK 8 or 11)} then {true} else {false} +# SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11: "${{ (github.event_name == 'workflow_dispatch' && !(inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'temurin') && !(inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' && (inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11'))) && 'true' || 'false' }}" +# SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11: "${{ ((inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11') && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle') && 'true' || 'false' }}" + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Setup Sql Server 2017 +# uses: rails-sqlserver/setup-mssql@v1 +# with: +# components: sqlcmd,sqlengine +# sa-password: "SqlServer17" +# version: 2017 + +# - name: Create database with Japanese collation for integration test +# run: | +# sqlcmd -S localhost -U sa -P SqlServer17 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11 == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to GitHub Container Registry +# uses: docker/login-action@v3 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} +# with: +# registry: ghcr.io +# username: ${{ github.repository_owner }} +# password: ${{ secrets.CR_PAT }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} +# run: | +# $container_id=$(docker create "ghcr.io/scalar-labs/oracle/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}-windows") +# docker cp "${container_id}:oracle-jdk.exe" . +# docker rm "$container_id" +# Write-Host "Install Oracle JDK" +# Start-Process "oracle-jdk.exe" -NoNewWindow -Wait -ArgumentList "/s" +# Write-Host "Oracle JDK installation successful" +# if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { +# $jdk_root_dir = "jdk-1.8" +# } else { +# $jdk_root_dir = "jdk-11" +# } +# echo "JAVA_HOME=C:\Program Files\Java\${jdk_root_dir}" >> ${env:GITHUB_ENV} + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew.bat integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" "-Dfile.encoding=UTF-8" "-Dscalardb.jdbc.username=sa" "-Dscalardb.jdbc.password=SqlServer17" ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: sqlserver_2017_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-sqlserver-2019: +# name: SQL Server 2019 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# sqlserver: +# image: mcr.microsoft.com/mssql/server:2019-latest +# env: +# MSSQL_PID: "Express" +# SA_PASSWORD: "SqlServer19" +# ACCEPT_EULA: "Y" +# ports: +# - 1433:1433 +# options: --name sqlserver19 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Create database with Japanese collation for integration test +# run: | +# docker exec sqlserver19 /opt/mssql-tools18/bin/sqlcmd -S localhost -C -U sa -P SqlServer19 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=sa -Dscalardb.jdbc.password=SqlServer19 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: sqlserver_2019_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-sqlserver-2022: +# name: SQL Server 2022 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# sqlserver: +# image: mcr.microsoft.com/mssql/server:2022-latest +# env: +# MSSQL_PID: "Express" +# SA_PASSWORD: "SqlServer22" +# ACCEPT_EULA: "Y" +# ports: +# - 1433:1433 +# options: --name sqlserver22 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Create database with Japanese collation for integration test +# run: | +# docker exec sqlserver22 /opt/mssql-tools18/bin/sqlcmd -S localhost -C -U sa -P SqlServer22 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=sa -Dscalardb.jdbc.password=SqlServer22 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: sqlserver_2022_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-sqlite-3: +# name: SQLite 3 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Set up SQLite3 +# run: sudo apt-get install -y sqlite3 + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:sqlite:integration.sqlite3?busy_timeout=50000 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: sqlite_3_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-mariadb-10: +# name: MariaDB 10 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - name: Run MariaDB 10.11 +# run: | +# docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mariadb:10.11 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin + +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mariadb://localhost:3306 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: mariadb_10_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-mariadb-11-4: +# name: MariaDB 11.4 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - name: Run MariaDB 11.4 +# run: | +# docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mariadb:11.4 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin + +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mariadb://localhost:3306 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: mariadb_11.4_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-yugabytedb-2: +# name: YugabyteDB 2 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - name: Run YugabyteDB 2 +# run: | +# docker run -p 5433:5433 -e YSQL_USER=yugabyte -e YSQL_PASSWORD=yugabyte -d yugabytedb/yugabyte:2.20.4.0-b50 bin/yugabyted start --background=false --master_flag="ysql_enable_db_catalog_version_mode=false" --tserver_flags="ysql_enable_db_catalog_version_mode=false" + +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:yugabytedb://localhost:5433/?load-balance=any -Dscalardb.jdbc.username=yugabyte -Dscalardb.jdbc.password=yugabyte -Dscalar.db.jdbc.connection_pool.max_total=12 -Dscalar.db.jdbc.table_metadata.connection_pool.max_total=4 -Dscalar.db.jdbc.admin.connection_pool.max_total=4 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: yugabytedb_2_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-db2-11-5: +# name: Db2 11.5 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# db2: +# image: icr.io/db2_community/db2:11.5.9.0 +# env: +# DB2INSTANCE: db2inst1 +# DB2INST1_PASSWORD: db2inst1 +# DBNAME: test_db +# LICENSE: accept +# ports: +# - 50000:50000 +# options: --privileged --name db2 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Wait for the container to be ready +# timeout-minutes: 10 +# run: | +# while ! docker logs db2 2>&1 | grep -q "Setup has completed" +# do +# echo "Container is not yet ready" +# sleep 5s +# done +# echo "Container is ready" + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url="jdbc:db2://localhost:50000/test_db" -Dscalardb.jdbc.username=db2inst1 -Dscalardb.jdbc.password=db2inst1 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: db2_11.5_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc + +# integration-test-for-jdbc-db2-12-1: +# name: Db2 12.1 integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# db2: +# image: icr.io/db2_community/db2:12.1.1.0 +# env: +# DB2INSTANCE: db2inst1 +# DB2INST1_PASSWORD: db2inst1 +# DBNAME: test_db +# LICENSE: accept +# ports: +# - 50000:50000 +# options: --privileged --name db2 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Wait for the container to be ready +# timeout-minutes: 10 +# run: | +# while ! docker logs db2 2>&1 | grep -q "Setup has completed" +# do +# echo "Container is not yet ready" +# sleep 5s +# done +# echo "Container is ready" + +# - name: Execute Gradle 'integrationTestJdbc' task +# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url="jdbc:db2://localhost:50000/test_db" -Dscalardb.jdbc.username=db2inst1 -Dscalardb.jdbc.password=db2inst1 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# if: always() +# uses: actions/upload-artifact@v4 +# with: +# name: db2_12.1_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestJdbc integration-test-for-tidb-v6-5: name: TiDB v6.5 integration test (${{ matrix.mode.label }}) @@ -1806,7 +1806,7 @@ jobs: uses: gradle/actions/setup-gradle@v4 - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=REPEATABLE_READ ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=READ_COMMITTED ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - name: Upload Gradle test reports if: always() @@ -1880,7 +1880,7 @@ jobs: uses: gradle/actions/setup-gradle@v4 - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=REPEATABLE_READ ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=READ_COMMITTED ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - name: Upload Gradle test reports if: always() @@ -1954,7 +1954,7 @@ jobs: uses: gradle/actions/setup-gradle@v4 - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=REPEATABLE_READ ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=READ_COMMITTED ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - name: Upload Gradle test reports if: always() @@ -1963,74 +1963,74 @@ jobs: name: tidb_v8_5_integration_test_reports_${{ matrix.mode.label }} path: core/build/reports/tests/integrationTestJdbc - integration-test-for-multi-storage: - name: Multi-storage integration test (${{ matrix.mode.label }}) - runs-on: ubuntu-latest - - services: - postgres: - image: postgres:17-alpine - env: - POSTGRES_USER: postgres - POSTGRES_PASSWORD: postgres - ports: - - 5432:5432 - - cassandra: - image: cassandra:3.11 - env: - MAX_HEAP_SIZE: 2048m - HEAP_NEWSIZE: 512m - ports: - - 9042:9042 - - strategy: - matrix: - mode: - - label: default - group_commit_enabled: false - - label: with_group_commit - group_commit_enabled: true - - steps: - - uses: actions/checkout@v5 - - - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) - uses: actions/setup-java@v5 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: ${{ env.JAVA_VENDOR }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test - uses: actions/setup-java@v5 - if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} - with: - java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} - distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - - - name: Login to Oracle container registry - uses: docker/login-action@v3 - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - with: - registry: container-registry.oracle.com - username: ${{ secrets.OCR_USERNAME }} - password: ${{ secrets.OCR_TOKEN }} - - - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test - if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} - run: | - container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") - docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 - - - name: Execute Gradle 'integrationTestMultiStorage' task - run: ./gradlew integrationTestMultiStorage ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - - - name: Upload Gradle test reports - uses: actions/upload-artifact@v4 - if: always() - with: - name: multi_storage_integration_test_reports_${{ matrix.mode.label }} - path: core/build/reports/tests/integrationTestMultiStorage +# integration-test-for-multi-storage: +# name: Multi-storage integration test (${{ matrix.mode.label }}) +# runs-on: ubuntu-latest + +# services: +# postgres: +# image: postgres:17-alpine +# env: +# POSTGRES_USER: postgres +# POSTGRES_PASSWORD: postgres +# ports: +# - 5432:5432 + +# cassandra: +# image: cassandra:3.11 +# env: +# MAX_HEAP_SIZE: 2048m +# HEAP_NEWSIZE: 512m +# ports: +# - 9042:9042 + +# strategy: +# matrix: +# mode: +# - label: default +# group_commit_enabled: false +# - label: with_group_commit +# group_commit_enabled: true + +# steps: +# - uses: actions/checkout@v5 + +# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) +# uses: actions/setup-java@v5 +# with: +# java-version: ${{ env.JAVA_VERSION }} +# distribution: ${{ env.JAVA_VENDOR }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test +# uses: actions/setup-java@v5 +# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} +# with: +# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} +# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + +# - name: Login to Oracle container registry +# uses: docker/login-action@v3 +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# with: +# registry: container-registry.oracle.com +# username: ${{ secrets.OCR_USERNAME }} +# password: ${{ secrets.OCR_TOKEN }} + +# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test +# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} +# run: | +# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") +# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + +# - name: Setup Gradle +# uses: gradle/actions/setup-gradle@v4 + +# - name: Execute Gradle 'integrationTestMultiStorage' task +# run: ./gradlew integrationTestMultiStorage ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + +# - name: Upload Gradle test reports +# uses: actions/upload-artifact@v4 +# if: always() +# with: +# name: multi_storage_integration_test_reports_${{ matrix.mode.label }} +# path: core/build/reports/tests/integrationTestMultiStorage From 602a8b79563fd62805ef6f9d97e107845c169667 Mon Sep 17 00:00:00 2001 From: Vincent Guilpain Date: Fri, 3 Oct 2025 15:22:44 +0900 Subject: [PATCH 3/4] Set REPEATABLE_READ transaction isolation --- .github/workflows/ci.yaml | 3548 ++++++++++++++++++------------------- 1 file changed, 1774 insertions(+), 1774 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 9440cbef51..b2fa894dbf 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -44,1705 +44,1705 @@ env: INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT: '"-Dscalardb.consensus_commit.coordinator.group_commit.enabled=true" "-Dscalardb.consensus_commit.coordinator.group_commit.old_group_abort_timeout_millis=15000" --tests "**.ConsensusCommit**"' jobs: -# check: -# name: Gradle check -# runs-on: ubuntu-latest -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'check' task -# run: ./gradlew check buildSrc:check - -# - name: Save Gradle test reports -# if: always() -# run: | -# mkdir -p /tmp/gradle_test_reports/core -# mkdir -p /tmp/gradle_test_reports/schema-loader -# mkdir -p /tmp/gradle_test_reports/data-loader/core -# mkdir -p /tmp/gradle_test_reports/data-loader/cli -# cp -a core/build/reports/tests/test /tmp/gradle_test_reports/core/ -# cp -a schema-loader/build/reports/tests/test /tmp/gradle_test_reports/schema-loader/ -# cp -a data-loader/core/build/reports/tests/test /tmp/gradle_test_reports/data-loader/core/ -# cp -a data-loader/cli/build/reports/tests/test /tmp/gradle_test_reports/data-loader/cli/ - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: gradle_check_reports -# path: /tmp/gradle_test_reports - -# - name: Save SpotBugs reports -# if: always() -# run: | -# mkdir -p /tmp/gradle_spotbugs_reports/core -# mkdir -p /tmp/gradle_spotbugs_reports/schema-loader -# mkdir -p /tmp/gradle_spotbugs_reports/integration-test -# mkdir -p /tmp/gradle_spotbugs_reports/data-loader/core -# mkdir -p /tmp/gradle_spotbugs_reports/data-loader/cli -# cp -a core/build/reports/spotbugs /tmp/gradle_spotbugs_reports/core/ -# cp -a schema-loader/build/reports/spotbugs /tmp/gradle_spotbugs_reports/schema-loader/ -# cp -a integration-test/build/reports/spotbugs /tmp/gradle_spotbugs_reports/integration-test/ -# cp -a data-loader/core/build/reports/spotbugs /tmp/gradle_spotbugs_reports/data-loader/core/ -# cp -a data-loader/cli/build/reports/spotbugs /tmp/gradle_spotbugs_reports/data-loader/cli/ - -# - name: Upload Spotbugs reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: gradle_spotbugs_reports -# path: /tmp/gradle_spotbugs_reports - -# dockerfile-lint: -# name: Lint dockerfiles -# runs-on: ubuntu-latest - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Dockerfile Lint for ScalarDB Schema Loader -# run: ./gradlew schema-loader:dockerfileLint - -# - name: Dockerfile Lint for ScalarDB Data Loader CLI -# run: ./gradlew data-loader:cli:dockerfileLint - -# integration-test-for-cassandra-3-0: -# name: Cassandra 3.0 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# cassandra: -# image: cassandra:3.0 -# env: -# MAX_HEAP_SIZE: 2048m -# HEAP_NEWSIZE: 512m -# ports: -# - 9042:9042 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestCassandra' task -# run: ./gradlew integrationTestCassandra ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: cassandra_3.0_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestCassandra - -# integration-test-for-cassandra-3-11: -# name: Cassandra 3.11 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# cassandra: -# image: cassandra:3.11 -# env: -# MAX_HEAP_SIZE: 2048m -# HEAP_NEWSIZE: 512m -# ports: -# - 9042:9042 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestCassandra' task -# run: ./gradlew integrationTestCassandra ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: cassandra_3.11_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestCassandra - -# integration-test-for-cosmos: -# name: Cosmos DB integration test (${{ matrix.mode.label }}) -# runs-on: windows-latest -# env: + check: + name: Gradle check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'check' task + run: ./gradlew check buildSrc:check + + - name: Save Gradle test reports + if: always() + run: | + mkdir -p /tmp/gradle_test_reports/core + mkdir -p /tmp/gradle_test_reports/schema-loader + mkdir -p /tmp/gradle_test_reports/data-loader/core + mkdir -p /tmp/gradle_test_reports/data-loader/cli + cp -a core/build/reports/tests/test /tmp/gradle_test_reports/core/ + cp -a schema-loader/build/reports/tests/test /tmp/gradle_test_reports/schema-loader/ + cp -a data-loader/core/build/reports/tests/test /tmp/gradle_test_reports/data-loader/core/ + cp -a data-loader/cli/build/reports/tests/test /tmp/gradle_test_reports/data-loader/cli/ + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: gradle_check_reports + path: /tmp/gradle_test_reports + + - name: Save SpotBugs reports + if: always() + run: | + mkdir -p /tmp/gradle_spotbugs_reports/core + mkdir -p /tmp/gradle_spotbugs_reports/schema-loader + mkdir -p /tmp/gradle_spotbugs_reports/integration-test + mkdir -p /tmp/gradle_spotbugs_reports/data-loader/core + mkdir -p /tmp/gradle_spotbugs_reports/data-loader/cli + cp -a core/build/reports/spotbugs /tmp/gradle_spotbugs_reports/core/ + cp -a schema-loader/build/reports/spotbugs /tmp/gradle_spotbugs_reports/schema-loader/ + cp -a integration-test/build/reports/spotbugs /tmp/gradle_spotbugs_reports/integration-test/ + cp -a data-loader/core/build/reports/spotbugs /tmp/gradle_spotbugs_reports/data-loader/core/ + cp -a data-loader/cli/build/reports/spotbugs /tmp/gradle_spotbugs_reports/data-loader/cli/ + + - name: Upload Spotbugs reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: gradle_spotbugs_reports + path: /tmp/gradle_spotbugs_reports + + dockerfile-lint: + name: Lint dockerfiles + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Dockerfile Lint for ScalarDB Schema Loader + run: ./gradlew schema-loader:dockerfileLint + + - name: Dockerfile Lint for ScalarDB Data Loader CLI + run: ./gradlew data-loader:cli:dockerfileLint + + integration-test-for-cassandra-3-0: + name: Cassandra 3.0 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + cassandra: + image: cassandra:3.0 + env: + MAX_HEAP_SIZE: 2048m + HEAP_NEWSIZE: 512m + ports: + - 9042:9042 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestCassandra' task + run: ./gradlew integrationTestCassandra ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: cassandra_3.0_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestCassandra + + integration-test-for-cassandra-3-11: + name: Cassandra 3.11 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + cassandra: + image: cassandra:3.11 + env: + MAX_HEAP_SIZE: 2048m + HEAP_NEWSIZE: 512m + ports: + - 9042:9042 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestCassandra' task + run: ./gradlew integrationTestCassandra ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: cassandra_3.11_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestCassandra + + integration-test-for-cosmos: + name: Cosmos DB integration test (${{ matrix.mode.label }}) + runs-on: windows-latest + env: # Official Oracle JDK images that are windows compatible and publicly available through direct download do not exist for JDK 8 and 11 so we use instead cached versions hosted on the Scalar container registry. # This variable evaluates to: if {!(Temurin JDK 8) && !(Oracle JDK 8 or 11)} then {true} else {false} -# SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11: "${{ (github.event_name == 'workflow_dispatch' && !(inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'temurin') && !(inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' && (inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11'))) && 'true' || 'false' }}" -# SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11: "${{ ((inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11') && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle') && 'true' || 'false' }}" - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11 == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to GitHub Container Registry -# uses: docker/login-action@v3 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} -# with: -# registry: ghcr.io -# username: ${{ github.repository_owner }} -# password: ${{ secrets.CR_PAT }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} -# run: | -# $container_id=$(docker create "ghcr.io/scalar-labs/oracle/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}-windows") -# docker cp "${container_id}:oracle-jdk.exe" . -# docker rm "$container_id" -# Write-Host "Install Oracle JDK" -# Start-Process "oracle-jdk.exe" -NoNewWindow -Wait -ArgumentList "/s" -# Write-Host "Oracle JDK installation successful" -# if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { -# $jdk_root_dir = "jdk-1.8" -# } else { -# $jdk_root_dir = "jdk-11" -# } -# echo "JAVA_HOME=C:\Program Files\Java\${jdk_root_dir}" >> ${env:GITHUB_ENV} - -# - name: Start Azure Cosmos DB emulator -# run: | -# Write-Host "Launching Cosmos DB Emulator" -# Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator" + SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11: "${{ (github.event_name == 'workflow_dispatch' && !(inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'temurin') && !(inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' && (inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11'))) && 'true' || 'false' }}" + SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11: "${{ ((inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11') && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle') && 'true' || 'false' }}" + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11 == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.CR_PAT }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} + run: | + $container_id=$(docker create "ghcr.io/scalar-labs/oracle/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}-windows") + docker cp "${container_id}:oracle-jdk.exe" . + docker rm "$container_id" + Write-Host "Install Oracle JDK" + Start-Process "oracle-jdk.exe" -NoNewWindow -Wait -ArgumentList "/s" + Write-Host "Oracle JDK installation successful" + if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { + $jdk_root_dir = "jdk-1.8" + } else { + $jdk_root_dir = "jdk-11" + } + echo "JAVA_HOME=C:\Program Files\Java\${jdk_root_dir}" >> ${env:GITHUB_ENV} + + - name: Start Azure Cosmos DB emulator + run: | + Write-Host "Launching Cosmos DB Emulator" + Import-Module "$env:ProgramFiles\Azure Cosmos DB Emulator\PSModules\Microsoft.Azure.CosmosDB.Emulator" # Set startup timeout to 10min (600s), the default is 4min -# Start-CosmosDbEmulator -Consistency Strong -Timeout 600 - -# - name: Install TLS/SSL certificate -# run: | -# $cert = Get-ChildItem Cert:\LocalMachine\My | where{$_.FriendlyName -eq 'DocumentDbEmulatorCertificate'} -# $params = @{ -# Cert = $cert -# Type = "CERT" -# FilePath = "$home/tmp-cert.cer" -# NoClobber = $true -# } -# Export-Certificate @params -# certutil -encode $home/tmp-cert.cer $home/cosmosdbcert.cer -# Remove-Item $home/tmp-cert.cer + Start-CosmosDbEmulator -Consistency Strong -Timeout 600 + + - name: Install TLS/SSL certificate + run: | + $cert = Get-ChildItem Cert:\LocalMachine\My | where{$_.FriendlyName -eq 'DocumentDbEmulatorCertificate'} + $params = @{ + Cert = $cert + Type = "CERT" + FilePath = "$home/tmp-cert.cer" + NoClobber = $true + } + Export-Certificate @params + certutil -encode $home/tmp-cert.cer $home/cosmosdbcert.cer + Remove-Item $home/tmp-cert.cer # Setting the keystore option differs between Java 8 and Java 11+ -# if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { -# $keystore = "-keystore", "${env:JAVA_HOME}/jre/lib/security/cacerts" -# } else { -# $keystore = "-cacerts" -# } -# & ${env:JAVA_HOME}/bin/keytool.exe $keystore -storepass 'changeit' -importcert -noprompt -alias cosmos_emulator -file $home/cosmosdbcert.cer -# & ${env:JAVA_HOME}/bin/keytool.exe $keystore -storepass 'changeit' -list -alias cosmos_emulator - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestCosmos' task -# run: ./gradlew.bat integrationTestCosmos "-Dscalardb.cosmos.uri=https://localhost:8081/" "-Dscalardb.cosmos.password=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==" "-Dfile.encoding=UTF-8" ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: cosmos_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestCosmos - -# integration-test-for-dynamo: -# name: DynamoDB integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# dynamodb: -# image: amazon/dynamodb-local:1.17.0 -# ports: -# - 8000:8000 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestDynamo' task -# run: ./gradlew integrationTestDynamo ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: dynamo_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestDynamo - -# integration-test-for-jdbc-mysql-5-7: -# name: MySQL 5.7 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - name: Run MySQL 5.7 -# run: | -# docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin - -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: mysql_5.7_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-mysql-8-0: -# name: MySQL 8.0 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - name: Run MySQL 8.0 -# run: | -# docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin - -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: mysql_8.0_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-mysql-8-4: -# name: MySQL 8.4 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - name: Run MySQL 8.4 -# run: | -# docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:8.4 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin - -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: mysql_8.4_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-postgresql-13: -# name: PostgreSQL 13 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# postgres: -# image: postgres:13-alpine -# env: -# POSTGRES_USER: postgres -# POSTGRES_PASSWORD: postgres -# ports: -# - 5432:5432 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: postgresql_13_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-postgresql-14: -# name: PostgreSQL 14 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# postgres: -# image: postgres:14-alpine -# env: -# POSTGRES_USER: postgres -# POSTGRES_PASSWORD: postgres -# ports: -# - 5432:5432 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: postgresql_14_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-postgresql-15: -# name: PostgreSQL 15 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# postgres: -# image: postgres:15-alpine -# env: -# POSTGRES_USER: postgres -# POSTGRES_PASSWORD: postgres -# ports: -# - 5432:5432 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: postgresql_15_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-postgresql-16: -# name: PostgreSQL 16 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# postgres: -# image: postgres:16-alpine -# env: -# POSTGRES_USER: postgres -# POSTGRES_PASSWORD: postgres -# ports: -# - 5432:5432 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: postgresql_16_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-postgresql-17: -# name: PostgreSQL 17 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# postgres: -# image: postgres:17-alpine -# env: -# POSTGRES_USER: postgres -# POSTGRES_PASSWORD: postgres -# ports: -# - 5432:5432 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: postgresql_17_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-oracle-19: -# name: Oracle 19 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# oracle: -# image: ghcr.io/scalar-labs/oracle/db-prebuilt:19 -# credentials: -# username: ${{ github.repository_owner }} -# password: ${{ secrets.CR_PAT }} -# ports: -# - 1521:1521 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/ORCLPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: oracle_19_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-oracle-21: -# name: Oracle 21 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# oracle: -# image: ghcr.io/scalar-labs/oracle/db-prebuilt:21 -# credentials: -# username: ${{ github.repository_owner }} -# password: ${{ secrets.CR_PAT }} -# env: -# ORACLE_PWD: Oracle -# ports: -# - 1521:1521 -# options: >- -# --health-cmd "/opt/oracle/checkDBStatus.sh" -# --health-interval 10s -# --health-timeout 5s -# --health-retries 120 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/XEPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: oracle_21_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-oracle-23: -# name: Oracle 23 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - name: Free up ~14GB of disk space by removing the Android SDK -# run: | -# echo "Storage available before deletion" -# df -h / -# echo -# sudo rm -r /usr/local/lib/android -# echo "Storage available after deletion" -# df -h / - -# - name: Login to GitHub Container Registry -# uses: docker/login-action@v3 -# with: -# registry: ghcr.io -# username: ${{ github.repository_owner }} -# password: ${{ secrets.CR_PAT }} - -# - name: Start Oracle 23 container -# run: docker run -d --name oracle-23 -p 1521:1521 ghcr.io/scalar-labs/oracle/db-prebuilt:23 - -# - name: Wait for the container to be ready -# timeout-minutes: 5 -# run: | -# while [ "`docker inspect -f {{.State.Health.Status}} oracle-23`" != "healthy" ] -# do -# sleep 10 -# echo "Container is not yet ready" -# done -# echo "Container is ready" - -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/FREEPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Stop Oracle 23 container -# if: always() -# run: docker stop oracle-23 | xargs docker rm - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: oracle_23_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-sqlserver-2017: -# name: SQL Server 2017 integration test (${{ matrix.mode.label }}) -# runs-on: windows-latest -# env: - # Official Oracle JDK images that are windows compatible and publicly available through direct download do not exist for JDK 8 and 11 so we use instead cached versions hosted on the Scalar container registry. - # This variable evaluates to: if {!(Temurin JDK 8) && !(Oracle JDK 8 or 11)} then {true} else {false} -# SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11: "${{ (github.event_name == 'workflow_dispatch' && !(inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'temurin') && !(inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' && (inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11'))) && 'true' || 'false' }}" -# SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11: "${{ ((inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11') && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle') && 'true' || 'false' }}" - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Setup Sql Server 2017 -# uses: rails-sqlserver/setup-mssql@v1 -# with: -# components: sqlcmd,sqlengine -# sa-password: "SqlServer17" -# version: 2017 - -# - name: Create database with Japanese collation for integration test -# run: | -# sqlcmd -S localhost -U sa -P SqlServer17 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11 == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to GitHub Container Registry -# uses: docker/login-action@v3 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} -# with: -# registry: ghcr.io -# username: ${{ github.repository_owner }} -# password: ${{ secrets.CR_PAT }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} -# run: | -# $container_id=$(docker create "ghcr.io/scalar-labs/oracle/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}-windows") -# docker cp "${container_id}:oracle-jdk.exe" . -# docker rm "$container_id" -# Write-Host "Install Oracle JDK" -# Start-Process "oracle-jdk.exe" -NoNewWindow -Wait -ArgumentList "/s" -# Write-Host "Oracle JDK installation successful" -# if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { -# $jdk_root_dir = "jdk-1.8" -# } else { -# $jdk_root_dir = "jdk-11" -# } -# echo "JAVA_HOME=C:\Program Files\Java\${jdk_root_dir}" >> ${env:GITHUB_ENV} - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew.bat integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" "-Dfile.encoding=UTF-8" "-Dscalardb.jdbc.username=sa" "-Dscalardb.jdbc.password=SqlServer17" ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: sqlserver_2017_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-sqlserver-2019: -# name: SQL Server 2019 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# sqlserver: -# image: mcr.microsoft.com/mssql/server:2019-latest -# env: -# MSSQL_PID: "Express" -# SA_PASSWORD: "SqlServer19" -# ACCEPT_EULA: "Y" -# ports: -# - 1433:1433 -# options: --name sqlserver19 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Create database with Japanese collation for integration test -# run: | -# docker exec sqlserver19 /opt/mssql-tools18/bin/sqlcmd -S localhost -C -U sa -P SqlServer19 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=sa -Dscalardb.jdbc.password=SqlServer19 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: sqlserver_2019_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-sqlserver-2022: -# name: SQL Server 2022 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# sqlserver: -# image: mcr.microsoft.com/mssql/server:2022-latest -# env: -# MSSQL_PID: "Express" -# SA_PASSWORD: "SqlServer22" -# ACCEPT_EULA: "Y" -# ports: -# - 1433:1433 -# options: --name sqlserver22 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Create database with Japanese collation for integration test -# run: | -# docker exec sqlserver22 /opt/mssql-tools18/bin/sqlcmd -S localhost -C -U sa -P SqlServer22 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=sa -Dscalardb.jdbc.password=SqlServer22 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: sqlserver_2022_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-sqlite-3: -# name: SQLite 3 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Set up SQLite3 -# run: sudo apt-get install -y sqlite3 - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:sqlite:integration.sqlite3?busy_timeout=50000 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: sqlite_3_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-mariadb-10: -# name: MariaDB 10 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - name: Run MariaDB 10.11 -# run: | -# docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mariadb:10.11 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin - -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mariadb://localhost:3306 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: mariadb_10_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-mariadb-11-4: -# name: MariaDB 11.4 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - name: Run MariaDB 11.4 -# run: | -# docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mariadb:11.4 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin - -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mariadb://localhost:3306 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: mariadb_11.4_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-yugabytedb-2: -# name: YugabyteDB 2 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - name: Run YugabyteDB 2 -# run: | -# docker run -p 5433:5433 -e YSQL_USER=yugabyte -e YSQL_PASSWORD=yugabyte -d yugabytedb/yugabyte:2.20.4.0-b50 bin/yugabyted start --background=false --master_flag="ysql_enable_db_catalog_version_mode=false" --tserver_flags="ysql_enable_db_catalog_version_mode=false" - -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:yugabytedb://localhost:5433/?load-balance=any -Dscalardb.jdbc.username=yugabyte -Dscalardb.jdbc.password=yugabyte -Dscalar.db.jdbc.connection_pool.max_total=12 -Dscalar.db.jdbc.table_metadata.connection_pool.max_total=4 -Dscalar.db.jdbc.admin.connection_pool.max_total=4 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: yugabytedb_2_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-db2-11-5: -# name: Db2 11.5 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# db2: -# image: icr.io/db2_community/db2:11.5.9.0 -# env: -# DB2INSTANCE: db2inst1 -# DB2INST1_PASSWORD: db2inst1 -# DBNAME: test_db -# LICENSE: accept -# ports: -# - 50000:50000 -# options: --privileged --name db2 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Wait for the container to be ready -# timeout-minutes: 10 -# run: | -# while ! docker logs db2 2>&1 | grep -q "Setup has completed" -# do -# echo "Container is not yet ready" -# sleep 5s -# done -# echo "Container is ready" - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url="jdbc:db2://localhost:50000/test_db" -Dscalardb.jdbc.username=db2inst1 -Dscalardb.jdbc.password=db2inst1 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: db2_11.5_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - -# integration-test-for-jdbc-db2-12-1: -# name: Db2 12.1 integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# db2: -# image: icr.io/db2_community/db2:12.1.1.0 -# env: -# DB2INSTANCE: db2inst1 -# DB2INST1_PASSWORD: db2inst1 -# DBNAME: test_db -# LICENSE: accept -# ports: -# - 50000:50000 -# options: --privileged --name db2 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Wait for the container to be ready -# timeout-minutes: 10 -# run: | -# while ! docker logs db2 2>&1 | grep -q "Setup has completed" -# do -# echo "Container is not yet ready" -# sleep 5s -# done -# echo "Container is ready" - -# - name: Execute Gradle 'integrationTestJdbc' task -# run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url="jdbc:db2://localhost:50000/test_db" -Dscalardb.jdbc.username=db2inst1 -Dscalardb.jdbc.password=db2inst1 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# if: always() -# uses: actions/upload-artifact@v4 -# with: -# name: db2_12.1_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestJdbc - - integration-test-for-tidb-v6-5: - name: TiDB v6.5 integration test (${{ matrix.mode.label }}) + if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { + $keystore = "-keystore", "${env:JAVA_HOME}/jre/lib/security/cacerts" + } else { + $keystore = "-cacerts" + } + & ${env:JAVA_HOME}/bin/keytool.exe $keystore -storepass 'changeit' -importcert -noprompt -alias cosmos_emulator -file $home/cosmosdbcert.cer + & ${env:JAVA_HOME}/bin/keytool.exe $keystore -storepass 'changeit' -list -alias cosmos_emulator + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestCosmos' task + run: ./gradlew.bat integrationTestCosmos "-Dscalardb.cosmos.uri=https://localhost:8081/" "-Dscalardb.cosmos.password=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==" "-Dfile.encoding=UTF-8" ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: cosmos_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestCosmos + + integration-test-for-dynamo: + name: DynamoDB integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + dynamodb: + image: amazon/dynamodb-local:1.17.0 + ports: + - 8000:8000 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestDynamo' task + run: ./gradlew integrationTestDynamo ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: dynamo_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestDynamo + + integration-test-for-jdbc-mysql-5-7: + name: MySQL 5.7 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - name: Run MySQL 5.7 + run: | + docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin + + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: mysql_5.7_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-mysql-8-0: + name: MySQL 8.0 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - name: Run MySQL 8.0 + run: | + docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin + + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: mysql_8.0_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-mysql-8-4: + name: MySQL 8.4 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - name: Run MySQL 8.4 + run: | + docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:8.4 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin + + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:3306/ -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: mysql_8.4_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-postgresql-13: + name: PostgreSQL 13 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:13-alpine + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: postgresql_13_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-postgresql-14: + name: PostgreSQL 14 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:14-alpine + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: postgresql_14_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-postgresql-15: + name: PostgreSQL 15 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:15-alpine + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: postgresql_15_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-postgresql-16: + name: PostgreSQL 16 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:16-alpine + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: postgresql_16_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-postgresql-17: + name: PostgreSQL 17 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:17-alpine + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: postgresql_17_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-oracle-19: + name: Oracle 19 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + oracle: + image: ghcr.io/scalar-labs/oracle/db-prebuilt:19 + credentials: + username: ${{ github.repository_owner }} + password: ${{ secrets.CR_PAT }} + ports: + - 1521:1521 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/ORCLPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: oracle_19_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-oracle-21: + name: Oracle 21 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + oracle: + image: ghcr.io/scalar-labs/oracle/db-prebuilt:21 + credentials: + username: ${{ github.repository_owner }} + password: ${{ secrets.CR_PAT }} + env: + ORACLE_PWD: Oracle + ports: + - 1521:1521 + options: >- + --health-cmd "/opt/oracle/checkDBStatus.sh" + --health-interval 10s + --health-timeout 5s + --health-retries 120 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/XEPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: oracle_21_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-oracle-23: + name: Oracle 23 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - name: Free up ~14GB of disk space by removing the Android SDK + run: | + echo "Storage available before deletion" + df -h / + echo + sudo rm -r /usr/local/lib/android + echo "Storage available after deletion" + df -h / + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.CR_PAT }} + + - name: Start Oracle 23 container + run: docker run -d --name oracle-23 -p 1521:1521 ghcr.io/scalar-labs/oracle/db-prebuilt:23 + + - name: Wait for the container to be ready + timeout-minutes: 5 + run: | + while [ "`docker inspect -f {{.State.Health.Status}} oracle-23`" != "healthy" ] + do + sleep 10 + echo "Container is not yet ready" + done + echo "Container is ready" + + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:oracle:thin:@//localhost:1521/FREEPDB1 -Dscalardb.jdbc.username=SYSTEM -Dscalardb.jdbc.password=Oracle ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Stop Oracle 23 container + if: always() + run: docker stop oracle-23 | xargs docker rm + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: oracle_23_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-sqlserver-2017: + name: SQL Server 2017 integration test (${{ matrix.mode.label }}) + runs-on: windows-latest + env: + # Official Oracle JDK images that are windows compatible and publicly available through direct download do not exist for JDK 8 and 11 so we use instead cached versions hosted on the Scalar container registry. + # This variable evaluates to: if {!(Temurin JDK 8) && !(Oracle JDK 8 or 11)} then {true} else {false} + SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11: "${{ (github.event_name == 'workflow_dispatch' && !(inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'temurin') && !(inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' && (inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11'))) && 'true' || 'false' }}" + SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11: "${{ ((inputs.INT_TEST_JAVA_RUNTIME_VERSION == '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION == '11') && inputs.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle') && 'true' || 'false' }}" + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Setup Sql Server 2017 + uses: rails-sqlserver/setup-mssql@v1 + with: + components: sqlcmd,sqlengine + sa-password: "SqlServer17" + version: 2017 + + - name: Create database with Japanese collation for integration test + run: | + sqlcmd -S localhost -U sa -P SqlServer17 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_JDK_WHEN_NOT_ORACLE_8_OR_11 == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.CR_PAT }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.SET_UP_INT_TEST_RUNTIME_ORACLE_JDK_8_OR_11 == 'true'}} + run: | + $container_id=$(docker create "ghcr.io/scalar-labs/oracle/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}-windows") + docker cp "${container_id}:oracle-jdk.exe" . + docker rm "$container_id" + Write-Host "Install Oracle JDK" + Start-Process "oracle-jdk.exe" -NoNewWindow -Wait -ArgumentList "/s" + Write-Host "Oracle JDK installation successful" + if ( ${env:INT_TEST_JAVA_RUNTIME_VERSION} -eq '8' ) { + $jdk_root_dir = "jdk-1.8" + } else { + $jdk_root_dir = "jdk-11" + } + echo "JAVA_HOME=C:\Program Files\Java\${jdk_root_dir}" >> ${env:GITHUB_ENV} + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew.bat integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" "-Dfile.encoding=UTF-8" "-Dscalardb.jdbc.username=sa" "-Dscalardb.jdbc.password=SqlServer17" ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: sqlserver_2017_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-sqlserver-2019: + name: SQL Server 2019 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + sqlserver: + image: mcr.microsoft.com/mssql/server:2019-latest + env: + MSSQL_PID: "Express" + SA_PASSWORD: "SqlServer19" + ACCEPT_EULA: "Y" + ports: + - 1433:1433 + options: --name sqlserver19 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Create database with Japanese collation for integration test + run: | + docker exec sqlserver19 /opt/mssql-tools18/bin/sqlcmd -S localhost -C -U sa -P SqlServer19 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=sa -Dscalardb.jdbc.password=SqlServer19 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: sqlserver_2019_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-sqlserver-2022: + name: SQL Server 2022 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + sqlserver: + image: mcr.microsoft.com/mssql/server:2022-latest + env: + MSSQL_PID: "Express" + SA_PASSWORD: "SqlServer22" + ACCEPT_EULA: "Y" + ports: + - 1433:1433 + options: --name sqlserver22 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Create database with Japanese collation for integration test + run: | + docker exec sqlserver22 /opt/mssql-tools18/bin/sqlcmd -S localhost -C -U sa -P SqlServer22 -Q "CREATE DATABASE test_db COLLATE Japanese_BIN2;" + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc "-Dscalardb.jdbc.url=jdbc:sqlserver://localhost:1433;databaseName=test_db;encrypt=true;trustServerCertificate=true" -Dscalardb.jdbc.username=sa -Dscalardb.jdbc.password=SqlServer22 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: sqlserver_2022_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-sqlite-3: + name: SQLite 3 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Set up SQLite3 + run: sudo apt-get install -y sqlite3 + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:sqlite:integration.sqlite3?busy_timeout=50000 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: sqlite_3_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-mariadb-10: + name: MariaDB 10 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - name: Run MariaDB 10.11 + run: | + docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mariadb:10.11 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin + + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mariadb://localhost:3306 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: mariadb_10_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-mariadb-11-4: + name: MariaDB 11.4 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - name: Run MariaDB 11.4 + run: | + docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mariadb:11.4 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin + + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mariadb://localhost:3306 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password=mysql ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: mariadb_11.4_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-yugabytedb-2: + name: YugabyteDB 2 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - name: Run YugabyteDB 2 + run: | + docker run -p 5433:5433 -e YSQL_USER=yugabyte -e YSQL_PASSWORD=yugabyte -d yugabytedb/yugabyte:2.20.4.0-b50 bin/yugabyted start --background=false --master_flag="ysql_enable_db_catalog_version_mode=false" --tserver_flags="ysql_enable_db_catalog_version_mode=false" + + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:yugabytedb://localhost:5433/?load-balance=any -Dscalardb.jdbc.username=yugabyte -Dscalardb.jdbc.password=yugabyte -Dscalar.db.jdbc.connection_pool.max_total=12 -Dscalar.db.jdbc.table_metadata.connection_pool.max_total=4 -Dscalar.db.jdbc.admin.connection_pool.max_total=4 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: yugabytedb_2_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-db2-11-5: + name: Db2 11.5 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + db2: + image: icr.io/db2_community/db2:11.5.9.0 + env: + DB2INSTANCE: db2inst1 + DB2INST1_PASSWORD: db2inst1 + DBNAME: test_db + LICENSE: accept + ports: + - 50000:50000 + options: --privileged --name db2 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Wait for the container to be ready + timeout-minutes: 10 + run: | + while ! docker logs db2 2>&1 | grep -q "Setup has completed" + do + echo "Container is not yet ready" + sleep 5s + done + echo "Container is ready" + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url="jdbc:db2://localhost:50000/test_db" -Dscalardb.jdbc.username=db2inst1 -Dscalardb.jdbc.password=db2inst1 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: db2_11.5_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-jdbc-db2-12-1: + name: Db2 12.1 integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + db2: + image: icr.io/db2_community/db2:12.1.1.0 + env: + DB2INSTANCE: db2inst1 + DB2INST1_PASSWORD: db2inst1 + DBNAME: test_db + LICENSE: accept + ports: + - 50000:50000 + options: --privileged --name db2 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Wait for the container to be ready + timeout-minutes: 10 + run: | + while ! docker logs db2 2>&1 | grep -q "Setup has completed" + do + echo "Container is not yet ready" + sleep 5s + done + echo "Container is ready" + + - name: Execute Gradle 'integrationTestJdbc' task + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url="jdbc:db2://localhost:50000/test_db" -Dscalardb.jdbc.username=db2inst1 -Dscalardb.jdbc.password=db2inst1 ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + if: always() + uses: actions/upload-artifact@v4 + with: + name: db2_12.1_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestJdbc + + integration-test-for-tidb-6-5: + name: TiDB 6.5 integration test (${{ matrix.mode.label }}) runs-on: ubuntu-latest strategy: @@ -1806,17 +1806,17 @@ jobs: uses: gradle/actions/setup-gradle@v4 - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=READ_COMMITTED ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=REPEATABLE_READ ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - name: Upload Gradle test reports if: always() uses: actions/upload-artifact@v4 with: - name: tidb_v6_5_integration_test_reports_${{ matrix.mode.label }} + name: tidb_6_5_integration_test_reports_${{ matrix.mode.label }} path: core/build/reports/tests/integrationTestJdbc integration-test-for-tidb-v7-5: - name: TiDB v7.5 integration test (${{ matrix.mode.label }}) + name: TiDB 7.5 integration test (${{ matrix.mode.label }}) runs-on: ubuntu-latest strategy: @@ -1880,17 +1880,17 @@ jobs: uses: gradle/actions/setup-gradle@v4 - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=READ_COMMITTED ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=REPEATABLE_READ ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - name: Upload Gradle test reports if: always() uses: actions/upload-artifact@v4 with: - name: tidb_v7_5_integration_test_reports_${{ matrix.mode.label }} + name: tidb_7_5_integration_test_reports_${{ matrix.mode.label }} path: core/build/reports/tests/integrationTestJdbc integration-test-for-tidb-v8-5: - name: TiDB v8.5 integration test (${{ matrix.mode.label }}) + name: TiDB 8.5 integration test (${{ matrix.mode.label }}) runs-on: ubuntu-latest strategy: @@ -1954,83 +1954,83 @@ jobs: uses: gradle/actions/setup-gradle@v4 - name: Execute Gradle 'integrationTestJdbc' task - run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=READ_COMMITTED ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + run: ./gradlew integrationTestJdbc -Dscalardb.jdbc.url=jdbc:mysql://localhost:4000 -Dscalardb.jdbc.username=root -Dscalardb.jdbc.password= -Dscalardb.jdbc.isolation_level=REPEATABLE_READ ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - name: Upload Gradle test reports if: always() uses: actions/upload-artifact@v4 with: - name: tidb_v8_5_integration_test_reports_${{ matrix.mode.label }} + name: tidb_8_5_integration_test_reports_${{ matrix.mode.label }} path: core/build/reports/tests/integrationTestJdbc -# integration-test-for-multi-storage: -# name: Multi-storage integration test (${{ matrix.mode.label }}) -# runs-on: ubuntu-latest - -# services: -# postgres: -# image: postgres:17-alpine -# env: -# POSTGRES_USER: postgres -# POSTGRES_PASSWORD: postgres -# ports: -# - 5432:5432 - -# cassandra: -# image: cassandra:3.11 -# env: -# MAX_HEAP_SIZE: 2048m -# HEAP_NEWSIZE: 512m -# ports: -# - 9042:9042 - -# strategy: -# matrix: -# mode: -# - label: default -# group_commit_enabled: false -# - label: with_group_commit -# group_commit_enabled: true - -# steps: -# - uses: actions/checkout@v5 - -# - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) -# uses: actions/setup-java@v5 -# with: -# java-version: ${{ env.JAVA_VERSION }} -# distribution: ${{ env.JAVA_VENDOR }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test -# uses: actions/setup-java@v5 -# if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} -# with: -# java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} -# distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} - -# - name: Login to Oracle container registry -# uses: docker/login-action@v3 -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# with: -# registry: container-registry.oracle.com -# username: ${{ secrets.OCR_USERNAME }} -# password: ${{ secrets.OCR_TOKEN }} - -# - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test -# if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} -# run: | -# container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") -# docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" - -# - name: Setup Gradle -# uses: gradle/actions/setup-gradle@v4 - -# - name: Execute Gradle 'integrationTestMultiStorage' task -# run: ./gradlew integrationTestMultiStorage ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} - -# - name: Upload Gradle test reports -# uses: actions/upload-artifact@v4 -# if: always() -# with: -# name: multi_storage_integration_test_reports_${{ matrix.mode.label }} -# path: core/build/reports/tests/integrationTestMultiStorage + integration-test-for-multi-storage: + name: Multi-storage integration test (${{ matrix.mode.label }}) + runs-on: ubuntu-latest + + services: + postgres: + image: postgres:17-alpine + env: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + ports: + - 5432:5432 + + cassandra: + image: cassandra:3.11 + env: + MAX_HEAP_SIZE: 2048m + HEAP_NEWSIZE: 512m + ports: + - 9042:9042 + + strategy: + matrix: + mode: + - label: default + group_commit_enabled: false + - label: with_group_commit + group_commit_enabled: true + + steps: + - uses: actions/checkout@v5 + + - name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) + uses: actions/setup-java@v5 + with: + java-version: ${{ env.JAVA_VERSION }} + distribution: ${{ env.JAVA_VENDOR }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }}) to run integration test + uses: actions/setup-java@v5 + if: ${{ env.SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK == 'true'}} + with: + java-version: ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} + distribution: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR }} + + - name: Login to Oracle container registry + uses: docker/login-action@v3 + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + with: + registry: container-registry.oracle.com + username: ${{ secrets.OCR_USERNAME }} + password: ${{ secrets.OCR_TOKEN }} + + - name: Set up JDK ${{ env.INT_TEST_JAVA_RUNTIME_VERSION }} (oracle) to run the integration test + if: ${{ env.INT_TEST_JAVA_RUNTIME_VENDOR == 'oracle' }} + run: | + container_id=$(docker create "container-registry.oracle.com/java/jdk:${{ env.INT_TEST_JAVA_RUNTIME_VERSION }}") + docker cp -L "$container_id:/usr/java/default" /usr/lib/jvm/oracle-jdk && docker rm "$container_id" + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Execute Gradle 'integrationTestMultiStorage' task + run: ./gradlew integrationTestMultiStorage ${{ matrix.mode.group_commit_enabled && env.INT_TEST_GRADLE_OPTIONS_FOR_GROUP_COMMIT || '' }} + + - name: Upload Gradle test reports + uses: actions/upload-artifact@v4 + if: always() + with: + name: multi_storage_integration_test_reports_${{ matrix.mode.label }} + path: core/build/reports/tests/integrationTestMultiStorage From 9213310356797612202c8bb841dbd61f109e632d Mon Sep 17 00:00:00 2001 From: Vincent Guilpain Date: Fri, 3 Oct 2025 17:45:23 +0900 Subject: [PATCH 4/4] Apply suggestion [skip ci] --- .../com/scalar/db/storage/jdbc/JdbcAdminImportTestUtils.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcAdminImportTestUtils.java b/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcAdminImportTestUtils.java index c9d03c988b..5671a2df72 100644 --- a/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcAdminImportTestUtils.java +++ b/core/src/integration-test/java/com/scalar/db/storage/jdbc/JdbcAdminImportTestUtils.java @@ -766,7 +766,7 @@ private boolean isMariaDB() { String version = connection.getMetaData().getDatabaseProductVersion(); return version.contains("MariaDB"); } catch (SQLException e) { - throw new RuntimeException("Get database product version failed"); + throw new RuntimeException("Get database product version failed", e); } } @@ -775,7 +775,7 @@ private boolean isTiDB() { String version = connection.getMetaData().getDatabaseProductVersion(); return version.contains("TiDB"); } catch (SQLException e) { - throw new RuntimeException("Get database product version failed"); + throw new RuntimeException("Get database product version failed", e); } }