Skip to content

Test Java client against the released IMDG servers #102

Test Java client against the released IMDG servers

Test Java client against the released IMDG servers #102

name: Test Java client against the released IMDG servers
on:
workflow_dispatch:
inputs:
organization_name:
description: Default is hazelcast, but if you would like to run the workflow with your forked repo, set your github username
required: true
default: hazelcast
branch_name:
description: Name of the branch to test client from
required: true
default: master
server_version:
description: Version of the server to test against
required: true
default: 5.5.0
tests_type:
description: Type of tests to run
required: true
default: 'OS'
type: choice
options:
- OS
- ENTERPRISE
jobs:
setup_test_filters_matrix:
name: Setup the test filters matrix
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-test-filters-matrix.outputs.matrix }}
steps:
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Checkout to scripts
uses: actions/checkout@v4
- name: Set test filters matrix
id: set-test-filters-matrix
run: echo "matrix=$( python get_java_client_test_filters_matrix.py --server-kind ${{ github.event.inputs.tests_type }} )" >> "$GITHUB_OUTPUT"
vector_tests:
if: ${{ github.event.inputs.tests_type == 'ENTERPRISE' }}
name: Test Java client ${{ github.event.inputs.branch_name }} branch running ${{ github.event.inputs.tests_type }} Vector tests against ENTERPRISE ${{ github.event.inputs.server_version }} server
runs-on: ubicloud-standard-8
steps:
- name: Checkout to scripts
uses: actions/checkout@v4
- name: Read Java Config
run: cat ${{ github.workspace }}/.github/java-config.env >> $GITHUB_ENV
- name: Setup Server Java
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.JAVA_DISTRIBUTION }}
- name: Set Server JDK home
run: echo "SERVER_JAVA=$JAVA_HOME" >> $GITHUB_ENV
- name: Setup JDK8
uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "8"
- name: Checkout to ${{ github.event.inputs.branch_name }}
uses: actions/checkout@v4
with:
repository: ${{ github.event.inputs.organization_name }}/hazelcast-java-client
token: ${{ secrets.GH_PAT }}
path: client
ref: ${{ github.event.inputs.branch_name }}
- name: Setup Local Maven Cache
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Check Server Version to Determine License Version
uses: madhead/semver-utils@latest
id: version
with:
version: ${{ github.event.inputs.server_version }}
compare-to: 5.3.0
- name: Set up HZ_LICENSEKEY env
run: |
echo "HZ_LICENSEKEY=${{ '>' == steps.version.outputs.comparison-result && secrets.HAZELCAST_ENTERPRISE_KEY || secrets.HAZELCAST_ENTERPRISE_KEY_V5 }}" >> $GITHUB_ENV
- name: Build modules
shell: bash -l {0}
run: |
chmod +x mvnw
JAVA_HOME=${{env.JAVA_HOME}} ./mvnw -B -V -e clean install -DskipTests -Dtest.hazelcast-server.version=${{ github.event.inputs.server_version }}
working-directory: client
- name: Run remote controller for enterprise tests
working-directory: client/hazelcast-enterprise-java-client/target/test-artifacts
run: |
${{env.SERVER_JAVA}}/bin/java -cp additional-libs/*:hazelcast-remote-controller.jar:../test-artifacts:hazelcast-enterprise.jar:hazelcast.jar:test-artifacts.jar:os-test-artifacts.jar:test-vector-artifacts.jar:test-os-vector-artifacts.jar:../test-classes/jars/testsubjects.jar:../test-classes/jars/test.jar: -Djava.security.krb5.conf=../../src/test/resources/krb5.conf -Dhazelcast.logging.details.enabled=true -Dhazelcast.hidensity.check.freememory=false --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED --add-exports jdk.management/com.ibm.lang.management.internal=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED com.hazelcast.remotecontroller.Main --use-simple-server 2> server_log.txt &
- name: Copy vector libs
run: |
cp client/hazelcast-enterprise-java-client-vector/target/test-artifacts/os-test-vector-artifacts.jar client/hazelcast-enterprise-java-client/target/test-artifacts/os-test-vector-artifacts.jar
cp client/hazelcast-enterprise-java-client-vector/target/test-artifacts/test-vector-artifacts.jar client/hazelcast-enterprise-java-client/target/test-artifacts/test-vector-artifacts.jar
- name: Run enterprise Vector tests
shell: bash -l {0}
run: |
chmod +x mvnw
JAVA_HOME=${{env.JAVA_HOME}} ./mvnw -B -V -e test -Pintegration-tests -Dtest.hazelcast-server.version=${{ github.event.inputs.server_version }}
working-directory: client/hazelcast-enterprise-java-client-vector
- name: Archive server logs
uses: actions/upload-artifact@v4
if: always()
with:
name: server-${{ github.event.inputs.server_version.server_version }}-ENTERPRISE-logs-tests-vector
path: |
client/hazelcast-enterprise-java-client/target/test-artifacts/server_log.txt
test_client:
needs: [setup_test_filters_matrix]
runs-on: ubicloud-standard-8
strategy:
fail-fast: false
matrix:
server_version:
- ${{ github.event.inputs.server_version }}
server_kind: [ ENTERPRISE ]
test_filter: ${{ fromJson(needs.setup_test_filters_matrix.outputs.matrix) }}
tests_type:
- ${{ github.event.inputs.tests_type }}
name: Test Java client ${{ github.event.inputs.branch_name }} branch (package ${{ matrix.test_filter }}) running ${{ matrix.test_type}} tests against ${{ matrix.server_kind }} ${{ matrix.server_version }} server
steps:
- name: Checkout to scripts
uses: actions/checkout@v4
- name: Read Java Config
run: cat ${{ github.workspace }}/.github/java-config.env >> $GITHUB_ENV
- name: Setup Server Java
uses: actions/setup-java@v4
with:
java-version: ${{ env.JAVA_VERSION }}
distribution: ${{ env.JAVA_DISTRIBUTION }}
- name: Set Server JDK home
run: echo "SERVER_JAVA=$JAVA_HOME" >> $GITHUB_ENV
- name: Setup JDK8
uses: actions/setup-java@v4
with:
distribution: "zulu"
java-version: "8"
- name: Checkout to ${{ github.event.inputs.branch_name }}
uses: actions/checkout@v4
with:
repository: ${{ github.event.inputs.organization_name }}/hazelcast-java-client
token: ${{ secrets.GH_PAT }}
path: client
ref: ${{ github.event.inputs.branch_name }}
- name: Setup Local Maven Cache
uses: actions/cache@v4
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Check Server Version to Determine License Version
uses: madhead/semver-utils@latest
id: version
with:
version: ${{ matrix.server_version }}
compare-to: 5.3.0
- name: Set up HZ_LICENSEKEY env
if: ${{ matrix.server_kind == 'ENTERPRISE' }}
run: |
echo "HZ_LICENSEKEY=${{ '>' == steps.version.outputs.comparison-result && secrets.HAZELCAST_ENTERPRISE_KEY || secrets.HAZELCAST_ENTERPRISE_KEY_V5 }}" >> $GITHUB_ENV
- name: Build modules
shell: bash -l {0}
run: |
chmod +x mvnw
JAVA_HOME=${{env.JAVA_HOME}} ./mvnw -B -V -e clean install -DskipTests -Dtest.hazelcast-server.version=${{ matrix.server_version }}
working-directory: client
- name: Run remote controller for non-enterprise tests
if: ${{ matrix.tests_type == 'OS' }}
working-directory: client/hazelcast-java-client/target/test-artifacts
run: |
${{env.SERVER_JAVA}}/bin/java -cp additional-libs/*:hazelcast-remote-controller.jar:hazelcast.jar:test-artifacts.jar:../test-classes/jars/testsubjects.jar:../test-classes/jars/test.jar: -Djava.security.krb5.conf=../../src/test/resources/krb5.conf -Dhazelcast.phone.home.enabled=false -Dhazelcast.logging.details.enabled=true --add-opens=java.base/java.lang=ALL-UNNAMED com.hazelcast.remotecontroller.Main --use-simple-server > server_log.txt &
- name: Run remote controller for enterprise tests
if: ${{ matrix.tests_type == 'ENTERPRISE' }}
working-directory: client/hazelcast-enterprise-java-client/target/test-artifacts
run: |
${{env.SERVER_JAVA}}/bin/java -cp additional-libs/*:hazelcast-remote-controller.jar:../test-artifacts:hazelcast-enterprise.jar:hazelcast.jar:test-artifacts.jar:os-test-artifacts.jar:test-vector-artifacts.jar:test-os-vector-artifacts.jar:../test-classes/jars/testsubjects.jar:../test-classes/jars/test.jar: -Djava.security.krb5.conf=../../src/test/resources/krb5.conf -Dhazelcast.logging.details.enabled=true -Dhazelcast.hidensity.check.freememory=false --add-exports java.base/jdk.internal.ref=ALL-UNNAMED --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED --add-exports jdk.management/com.ibm.lang.management.internal=ALL-UNNAMED --add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED --add-opens java.base/java.util.concurrent=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED com.hazelcast.remotecontroller.Main --use-simple-server 2> server_log.txt &
- name: Run non-enterprise tests
if: ${{ matrix.tests_type == 'OS' }}
shell: bash -l {0}
run: |
chmod +x mvnw
JAVA_HOME=${{env.JAVA_HOME}} ./mvnw -B -V -e test -Pintegration-tests -Dtest.hazelcast-server.version=${{ matrix.server_version }} -Dtest="${{ matrix.test_filter }}" -Dsurefire.failIfNoSpecifiedTests=false
working-directory: client/hazelcast-java-client
- name: Run enterprise tests
if: ${{ matrix.tests_type == 'ENTERPRISE' }}
shell: bash -l {0}
run: |
chmod +x mvnw
JAVA_HOME=${{env.JAVA_HOME}} ./mvnw -B -V -e test -Pintegration-tests -Dtest.hazelcast-server.version=${{ matrix.server_version }} -Dtest="${{ matrix.test_filter }}" -Dsurefire.failIfNoSpecifiedTests=false
working-directory: client/hazelcast-enterprise-java-client
- name: Extract package name
if: always()
run: echo "PACKAGE_NAME=$(echo '${{ matrix.test_filter }}' | sed -E 's/com\.hazelcast\.([^*]+)\.[*]+/\1/; s/\./-/g')" >> $GITHUB_ENV
- name: Archive server logs
uses: actions/upload-artifact@v4
if: always()
with:
name: server-${{ matrix.server_version }}-${{ matrix.server_kind }}-logs-tests-${{ env.PACKAGE_NAME }}
path: |
client/hazelcast-java-client/target/test-artifacts/server_log.txt
client/hazelcast-enterprise-java-client/target/test-artifacts/server_log.txt