name: Test Java Sources on: workflow_call: workflow_dispatch: env: RUSTC_WRAPPER: sccache SCCACHE_CACHE_SIZE: ${{ vars.SCCACHE_CACHE_SIZE }} SCCACHE_BUCKET: ${{ vars.SCCACHE_BUCKET }} SCCACHE_ENDPOINT: ${{ vars.SCCACHE_ENDPOINT }} SCCACHE_REGION: ${{ vars.SCCACHE_REGION }} AWS_ACCESS_KEY_ID: "${{ secrets.CI_K8S_MINIO_ACCESS_KEY_ID }}" AWS_SECRET_ACCESS_KEY: "${{ secrets.CI_K8S_MINIO_SECRET_ACCESS_KEY }}" RUST_MIN_STACK: 8388608 # sccache cannot cache rustc invocations when incremental is on. CARGO_INCREMENTAL: 0 # Cap cargo parallelism at the k8s runner core budget. Java tests drive a # Rust build via mvn → sql-to-dbsp; without this cap arm64 runners OOM from # too many parallel linkers. Override via the CI_RUNNER_CORES repo variable; # the fallback matches the current 20-core pod. CARGO_BUILD_JOBS: ${{ vars.CI_RUNNER_CORES || 20 }} # Pin Maven's local repo so it matches the cache path regardless of the # container runner's $HOME. MAVEN_OPTS: -Dmaven.repo.local=/home/ubuntu/.m2/repository jobs: java-tests: if: ${{ !contains(vars.CI_SKIP_JOBS, 'java-tests') }} name: Execute Java Tests strategy: matrix: include: - runner: [k8s-runners-amd64] - runner: [k8s-runners-arm64] runs-on: ${{ matrix.runner }} container: image: ghcr.io/feldera/feldera-dev:sha-a5ab793b8d261068867b9fdfad3f04157b2536fc steps: - name: Show Kubernetes node if: always() run: | echo "K8S node: ${K8S_NODE_NAME}" - name: Checkout repository uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - name: Cache Cargo registry uses: ./.github/actions/feldera-minio-cache with: # Crate downloads only, NOT target/: caching the multi-GB target/ # trees never paid off, and sccache already caches compiled crates. # registry/src is excluded, cargo regenerates it from registry/cache. path: | ~/.cargo/registry/cache ~/.cargo/registry/index ~/.cargo/git/db key: test-java-cargo-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/Cargo.lock') }} restore-keys: | test-java-cargo-${{ runner.os }}-${{ runner.arch }}- - name: Cache JVM build dependencies uses: ./.github/actions/feldera-minio-cache with: path: | /home/ubuntu/.gradle /home/ubuntu/.m2/repository ./sql-to-dbsp-compiler/calcite key: test-java-jvm-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('sql-to-dbsp-compiler/calcite_version.env', 'sql-to-dbsp-compiler/**/pom.xml') }} restore-keys: | test-java-jvm-${{ runner.os }}-${{ runner.arch }}- # TODO: Avoid doing this twice and ideally download & reuse the JAR from build-java.yml workflow - name: Run build.sh run: ./build.sh working-directory: ./sql-to-dbsp-compiler if: ${{ vars.CI_DRY_RUN != 'true' }} env: CALCITE_BUILD_DIR: ./calcite GRADLE_HOME: /home/ubuntu/.gradle - name: Stop gradle daemon run: gradle --stop - name: Run mvn test run: mvn test --no-transfer-progress -B -pl SQL-compiler -Dsurefire.failIfNoSpecifiedTests=false working-directory: ./sql-to-dbsp-compiler if: ${{ vars.CI_DRY_RUN != 'true' }} - name: Run one quick SLT test if: ${{ vars.CI_DRY_RUN != 'true' }} run: mvn test --no-transfer-progress -B -Dsurefire.failIfNoSpecifiedTests=false -Dtest=RotateTests#quick working-directory: ./sql-to-dbsp-compiler - name: Print sccache stats run: | sccache --show-stats if: ${{ vars.CI_DRY_RUN != 'true' }}