Skip to content

Replace lambda expression with method reference #36615

Replace lambda expression with method reference

Replace lambda expression with method reference #36615

Workflow file for this run

name: Cluster IT - 1C1D
on:
push:
branches:
- master
- "rel/*"
- "rc/*"
paths-ignore:
- "docs/**"
- "site/**"
pull_request:
branches:
- master
- "rel/*"
- "rc/*"
paths-ignore:
- "docs/**"
- "site/**"
# allow manually run the action:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3
MAVEN_ARGS: --batch-mode --no-transfer-progress
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
jobs:
# Ubuntu runs all ITs in a single job (already fast at ~49 min)
Ubuntu:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: corretto
java-version: 17
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Cache Maven packages
uses: actions/cache@v5
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2-
- name: Adjust Linux kernel somaxconn
shell: bash
run: sudo sysctl -w net.core.somaxconn=65535
- name: IT/UT Test
shell: bash
run: |
mvn clean verify \
-P with-integration-tests \
-DskipUTs \
-DintegrationTest.forkCount=2 \
-pl integration-test \
-am
- name: Upload Artifact
if: failure()
uses: actions/upload-artifact@v6
with:
name: standalone-log-Linux
path: integration-test/target/cluster-logs
retention-days: 1
# Windows is ~77% slower than Ubuntu, so split into 3 shards to parallelize
Windows:
strategy:
fail-fast: false
matrix:
shard: [0, 1, 2]
runs-on: windows-latest
steps:
- uses: actions/checkout@v5
- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: corretto
java-version: 17
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Cache Maven packages
uses: actions/cache@v5
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2-
- name: Adjust network dynamic TCP ports range
shell: pwsh
run: |
netsh int ipv4 set dynamicport tcp start=32768 num=32768
netsh int ipv4 set dynamicport udp start=32768 num=32768
netsh int ipv6 set dynamicport tcp start=32768 num=32768
netsh int ipv6 set dynamicport udp start=32768 num=32768
- name: Build IT shard list
shell: bash
# Distribute LocalStandaloneIT test classes across 3 shards using hash-mod assignment.
# The list is written to a file so failsafe.includesFile can read it without command-line length limits.
run: |
set -euo pipefail
SHARD=${{ matrix.shard }}
TOTAL=3
# Write outside the repo so Apache RAT (license check) doesn't flag the file.
# Using a single grep -rl call instead of `find | xargs grep`: on Windows Git Bash,
# ARG_MAX is small so xargs batches the file list, and any batch with no matches
# makes grep exit 1, which makes xargs exit 123 and trips `set -o pipefail`.
grep -rlE --include='*IT.java' '\bLocalStandaloneIT\b' integration-test/src/test/java \
| awk -F'/' '{print $NF}' | sed 's/\.java$//' \
| sort \
| awk -v s=$SHARD -v t=$TOTAL 'NR%t==s' \
> "$RUNNER_TEMP/it-shard.txt"
echo "Shard $SHARD/$TOTAL contains $(wc -l < "$RUNNER_TEMP/it-shard.txt") test classes"
head -5 "$RUNNER_TEMP/it-shard.txt"
- name: IT/UT Test
shell: bash
run: |
mvn clean verify \
-P with-integration-tests \
-DskipUTs \
-DintegrationTest.forkCount=2 \
-Dfailsafe.includesFile="$RUNNER_TEMP/it-shard.txt" \
-DfailIfNoTests=false \
-Dfailsafe.failIfNoSpecifiedTests=false \
-pl integration-test \
-am
- name: Upload Artifact
if: failure()
uses: actions/upload-artifact@v6
with:
name: standalone-log-Windows-shard${{ matrix.shard }}
path: integration-test/target/cluster-logs
retention-days: 1