Backport to branch(3) : Merge ConsensusCommitTestUtils and ConsensusCommitIntegrationTestUtils #6090
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
run-name: "${{ github.event_name == 'workflow_dispatch' && format('Dispatch : Run integration test with JDK {0} ({1})', inputs.INT_TEST_JAVA_RUNTIME_VERSION, inputs.INT_TEST_JAVA_RUNTIME_VENDOR) || '' }}" | |
on: | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
INT_TEST_JAVA_RUNTIME_VERSION: | |
description: JDK version used to run the integration test | |
type: choice | |
required: false | |
default: '8' | |
options: | |
- '8' | |
- '11' | |
- '17' | |
- '21' | |
INT_TEST_JAVA_RUNTIME_VENDOR: | |
description: Vendor of the JDK used to run the integration test | |
type: choice | |
required: false | |
default: 'temurin' | |
options: | |
- 'corretto' | |
- 'microsoft' | |
- 'oracle' | |
- 'temurin' | |
env: | |
TERM: dumb | |
JAVA_VERSION: '8' | |
JAVA_VENDOR: 'temurin' | |
INT_TEST_JAVA_RUNTIME_VERSION: "${{ github.event_name != 'workflow_dispatch' && '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION }}" | |
INT_TEST_JAVA_RUNTIME_VENDOR: "${{ github.event_name != 'workflow_dispatch' && 'temurin' || inputs.INT_TEST_JAVA_RUNTIME_VENDOR }}" | |
# Gradle will parse 'ORG_GRADLE_PROJECT_<project_property_name>' environment variables as project properties. | |
# The following variables configure the 'com.scalar.db.jdk-configuration' Gradle plugin. | |
ORG_GRADLE_PROJECT_javaVersion: '8' | |
ORG_GRADLE_PROJECT_javaVendor: 'temurin' | |
ORG_GRADLE_PROJECT_integrationTestJavaRuntimeVersion: "${{ github.event_name != 'workflow_dispatch' && '8' || inputs.INT_TEST_JAVA_RUNTIME_VERSION }}" | |
ORG_GRADLE_PROJECT_integrationTestJavaRuntimeVendor: "${{ github.event_name != 'workflow_dispatch' && 'temurin' || inputs.INT_TEST_JAVA_RUNTIME_VENDOR }}" | |
# This variable evaluates to: if {!(Temurin JDK 8) && !(Oracle JDK)} then {true} else {false} | |
# Oracle JDK that are linux compatible and publicly available through direct download exist for all LTS versions | |
SET_UP_INT_TEST_RUNTIME_NON_ORACLE_JDK: "${{ (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')) && 'true' || 'false' }}" | |
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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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 | |
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/ | |
- 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 | |
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/ | |
- 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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 | |
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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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: 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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: 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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: 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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:postgresql://localhost:5432/ -Dscalardb.jdbc.username=postgres -Dscalardb.jdbc.password=postgres ${{ 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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:postgresql://localhost:5432/ -Dscalardb.jdbc.username=postgres -Dscalardb.jdbc.password=postgres ${{ 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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:postgresql://localhost:5432/ -Dscalardb.jdbc.username=postgres -Dscalardb.jdbc.password=postgres ${{ 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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:postgresql://localhost:5432/ -Dscalardb.jdbc.username=postgres -Dscalardb.jdbc.password=postgres ${{ 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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:postgresql://localhost:5432/ -Dscalardb.jdbc.username=postgres -Dscalardb.jdbc.password=postgres ${{ 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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@v4 | |
- name: Setup Sql Server 2017 | |
uses: rails-sqlserver/setup-mssql@v1 | |
with: | |
components: sqlcmd,sqlengine | |
sa-password: "SqlServer17" | |
version: 2017 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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: Create no superuser | |
run: ./ci/no-superuser/create-no-superuser-sqlserver.sh SqlServer17 10 3 | |
shell: bash | |
timeout-minutes: 1 | |
- 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=no_superuser" "-Dscalardb.jdbc.password=no_superuser_password" ${{ 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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: Create no superuser | |
run: ./ci/no-superuser/create-no-superuser-sqlserver.sh SqlServer19 10 3 sqlserver19 | |
timeout-minutes: 1 | |
- 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=no_superuser -Dscalardb.jdbc.password=no_superuser_password ${{ 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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: Create no superuser | |
run: ./ci/no-superuser/create-no-superuser-sqlserver.sh SqlServer22 10 3 sqlserver22 | |
timeout-minutes: 1 | |
- 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=no_superuser -Dscalardb.jdbc.password=no_superuser_password ${{ 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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 ${{ 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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 ${{ 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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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-multi-storage: | |
name: Multi-storage 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: | |
- name: Run MySQL 8 | |
run: | | |
docker run -e MYSQL_ROOT_PASSWORD=mysql -p 3306:3306 -d mysql:8 --character-set-server=utf8mb4 --collation-server=utf8mb4_bin | |
- uses: actions/checkout@v4 | |
- name: Set up JDK ${{ env.JAVA_VERSION }} (${{ env.JAVA_VENDOR }}) | |
uses: actions/setup-java@v4 | |
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@v4 | |
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 |