Skip to content

Handle peer permission updates in PeerDiscoveryAgentV5 #13485

Handle peer permission updates in PeerDiscoveryAgentV5

Handle peer permission updates in PeerDiscoveryAgentV5 #13485

Workflow file for this run

name: reference-tests
on:
workflow_dispatch:
merge_group:
pull_request:
branches:
- main
- release-*
- verkle
- performance
env:
GRADLE_OPTS: "-Xmx6g -Dorg.gradle.daemon=false -Dorg.gradle.parallel=true -Dorg.gradle.caching=true"
total-runners: 4
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
referenceTestEthereum:
runs-on: besu-research-ubuntu-8 # since eest-v5.1.0 this job needs more disk space
permissions:
statuses: write
checks: write
packages: read
strategy:
fail-fast: true
matrix:
runner_index: [1,2,3,4]
steps:
- name: Checkout Repo
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ github.event.pull_request.head.sha || github.ref }}
submodules: recursive
- name: Set up Java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: semeru # IBM Semeru with OpenJ9
java-version: 21
- name: setup gradle
uses: gradle/actions/setup-gradle@39e147cb9de83bb9910b8ef8bd7fff0ee20fcd6f # v6.0.1
with:
cache-disabled: true
- name: execute generate reference tests
run: ./gradlew ethereum:referencetests:referenceTestClasses -Dorg.gradle.parallel=true -Dorg.gradle.caching=true
- name: list test files generated
run: find ethereum/referencetests/build/generated/sources/reference-test -name "*.java" | sort >> filenames.txt
- name: list test files written
run: find ethereum/referencetests/src/reference-test/java -name "*.java" | sort >> filenames.txt
- name: Split tests
run: ./.github/workflows/splitList.sh filenames.txt ${{env.total-runners}}
- name: echo test file count
run: cat group_${{matrix.runner_index}}.txt | wc
- name: convert to test suite classnames
run: cat group_${{matrix.runner_index}}.txt | sed -e 's/^.*java\///' -e 's@/@.@g' -e 's/\.java//' -e 's/^/--tests /' > testClasses.txt
- name: compose gradle args
run: tr '\n' ' ' < testClasses.txt > refTestArgs.txt
- name: refTestArgs.txt
run: cat refTestArgs.txt
- name: run reference tests
run: ./gradlew ethereum:referenceTests:referenceTests `cat refTestArgs.txt`
- name: verify test file count matches
run: |
listed=$(wc -l < filenames.txt | tr -d ' ')
actual=$({ find ethereum/referencetests/build/generated/sources/reference-test -name '*.java'; find ethereum/referencetests/src/reference-test/java -name '*.java'; } | wc -l | tr -d ' ')
echo "Test files listed: $listed, Test files on disk: $actual"
if [ "$actual" -ne "$listed" ]; then
echo "::error::Test file count mismatch: filenames.txt has $listed entries but $actual files found on disk"
exit 1
fi
- name: Upload Test Report
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
if: always() # always run even if the previous step fails
with:
name: reference-test-node-${{matrix.runner_index}}-results
path: '**/build/test-results/referenceTests/TEST-*.xml'
reftests-passed:
name: "reftests-passed"
runs-on: ubuntu-latest
needs: [ referenceTestEthereum ]
permissions:
checks: write
statuses: write
if: always()
steps:
# Fail if any `needs` job was not a success.
# Along with `if: always()`, this allows this job to act as a single required status check for the entire workflow.
- name: Fail on workflow error
run: exit 1
if: >-
${{
contains(needs.*.result, 'failure')
|| contains(needs.*.result, 'cancelled')
|| contains(needs.*.result, 'skipped')
}}