Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 33 additions & 7 deletions .github/workflows/test-hive-eest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -149,12 +149,13 @@ jobs:
- name: Checkout Hive
uses: actions/checkout@v6
with:
# EXPERIMENT: pinned to erigontech/hive yperbasis/client-pool, which
# is the upstream-PR-ready (ethereum/hive#1449) warm-daemon client
# pool. Revert to ethereum/hive + steps.hive-version.outputs.ref
# once that PR lands; until then we ride this fork.
# EXPERIMENT: pinned to erigontech/hive yperbasis/client-pool — the
# upstream-PR-ready warm-daemon client pool (ethereum/hive#1449), which
# now also carries local-fixtures support for the eels
# consume-engine/consume-rlp simulators (merged via erigontech/hive#2).
# Revert to ethereum/hive + steps.hive-version.outputs.ref once upstream.
repository: erigontech/hive
ref: a3c9afd9ada800efc41c0287d66f7d083684d3cb
ref: 9afe5f15a37136fa57f2b2055d1d6c69c681aa16
path: hive

- name: Conditional Docker Login
Expand Down Expand Up @@ -240,12 +241,37 @@ jobs:
fi
fi
retry 3 go build . >> buildlogs.log
# Provide EEST fixtures locally so the eels sim build doesn't re-download
# them every run. Restore the base-branch cache warmed by
# cache-warming-eest-fixtures.yml (restore-only — never saved here); on a
# miss, fetch via the hardened tools/test-fixtures.sh. Then stage the
# tarball into the sim build context, where the (local-fixtures) eels
# Dockerfile extracts it for `consume --input /fixtures`.
- name: Restore EEST fixtures cache
id: eest-cache
uses: actions/cache/restore@v5
with:
path: |
test-fixtures-cache/eest_stable.tar.gz
test-fixtures-cache/eest_devnet.tar.gz
test-fixtures-cache/eest_benchmark.tar.gz
test-fixtures-cache/eest_zkevm.tar.gz
key: test-fixtures-eest-${{ runner.os }}-${{ hashFiles('erigon-full/test-fixtures.json') }}
restore-keys: |
test-fixtures-eest-${{ runner.os }}-

- name: Download EEST fixtures on cache miss
if: steps.eest-cache.outputs.cache-hit != 'true'
run: bash erigon-full/tools/test-fixtures.sh --download-only erigon-full/test-fixtures.json test-fixtures-cache ${{ matrix.fixtures-tarball }}

- name: Stage fixtures into hive eels sim build context
run: cp "test-fixtures-cache/${{ matrix.fixtures-tarball }}.tar.gz" "hive/simulators/ethereum/eels/${{ matrix.sim }}/fixtures.tar.gz"

# Depends on the last line of hive output that prints the number of suites, tests and failed
# Currently, we fail even if suites and tests are too few, indicating the tests did not run
# We also fail if more than half the tests fail
- name: Run hive tests and parse output
run: |
fixtures_url=$(jq -r --arg t '${{ matrix.fixtures-tarball }}' '.[$t].url' erigon-full/test-fixtures.json)
branch=$(jq -r --arg t '${{ matrix.fixtures-tarball }}' '.[$t].branch // empty' erigon-full/test-fixtures.json)
branch_arg=""
if [ -n "$branch" ]; then
Expand All @@ -261,7 +287,7 @@ jobs:
# image-build/registry/clone failure); a completed run is judged on its first result.
local attempt=1 max_attempts=3
while true; do
./hive -docker.output -docker.auth --sim ethereum/eels/"${1}" --sim.limit="${2}" --sim.parallelism=12 --client.pool.size=${{ matrix.pool-size }} --client erigon --docker.nocache=true --sim.limit.exact=false --sim.buildarg fixtures="${fixtures_url}" ${branch_arg} ${{ matrix.extra-hive-flags }} 2>&1 | tee output.log || true
./hive -docker.output -docker.auth --sim ethereum/eels/"${1}" --sim.limit="${2}" --sim.parallelism=12 --client.pool.size=${{ matrix.pool-size }} --client erigon --docker.nocache=true --sim.limit.exact=false --sim.buildarg fixtures=/fixtures ${branch_arg} ${{ matrix.extra-hive-flags }} 2>&1 | tee output.log || true
status_line=$(tail -2 output.log | head -1 | sed -r "s/\x1B\[[0-9;]*[a-zA-Z]//g")
suites=$(echo "$status_line" | sed -n 's/.*suites=\([0-9]*\).*/\1/p')
if [ -z "$suites" ]; then
Expand Down
Loading