chore(test-client-clis): update Nethermind exception mappings (#3151) #4
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Hive Consume | |
| on: | |
| push: | |
| branches: | |
| - "forks/**" | |
| paths-ignore: | |
| - "**.md" | |
| - "LICENSE*" | |
| - ".gitignore" | |
| - ".vscode/**" | |
| - "whitelist.txt" | |
| - "docs/**" | |
| - "mkdocs.yml" | |
| pull_request: | |
| paths: | |
| - ".github/workflows/hive-consume.yaml" | |
| - ".github/actions/start-hive-dev/**" | |
| - ".github/actions/cache-docker-images/**" | |
| - ".github/actions/load-docker-images/**" | |
| - ".github/configs/hive/**" | |
| - "packages/testing/src/execution_testing/cli/pytest_commands/consume.py" | |
| - "packages/testing/src/execution_testing/cli/pytest_commands/build_block.py" | |
| - "packages/testing/src/execution_testing/cli/pytest_commands/pytest_ini_files/pytest-consume.ini" | |
| - "packages/testing/src/execution_testing/cli/pytest_commands/plugins/consume/**" | |
| - "packages/testing/src/execution_testing/cli/pytest_commands/plugins/pytest_hive/**" | |
| - "packages/testing/src/execution_testing/fixtures/consume.py" | |
| - "packages/testing/src/execution_testing/rpc/**" | |
| workflow_dispatch: | |
| inputs: | |
| docker_images: | |
| description: "Space-separated list of Docker images to cache" | |
| required: false | |
| default: "docker.io/ethereum/client-go:latest docker.io/alpine:latest docker.io/library/golang:1-alpine" | |
| client: | |
| description: "Hive client to test (e.g., go-ethereum, besu)" | |
| required: false | |
| default: "go-ethereum" | |
| client_file: | |
| description: "Client config file name under .github/configs/hive/ (e.g., latest.yaml, master.yaml)" | |
| required: false | |
| default: "latest.yaml" | |
| workflow_call: | |
| inputs: | |
| docker_images: | |
| description: "Space-separated list of Docker images to cache" | |
| required: false | |
| type: string | |
| default: "docker.io/ethereum/client-go:latest docker.io/alpine:latest docker.io/library/golang:1-alpine" | |
| client: | |
| description: "Hive client to test (e.g., go-ethereum, besu)" | |
| required: false | |
| type: string | |
| default: "go-ethereum" | |
| client_file: | |
| description: "Client config file name under .github/configs/hive/ (e.g., latest.yaml, master.yaml)" | |
| required: false | |
| type: string | |
| default: "latest.yaml" | |
| concurrency: | |
| group: hive-consume-${{ github.workflow }}-${{ github.ref || github.run_id }} | |
| cancel-in-progress: ${{ github.ref_name != github.event.repository.default_branch }} | |
| env: | |
| # Use direct URL instead of release spec (e.g., develop@v5.3.0) to avoid GitHub API rate limits | |
| FIXTURES_URL: https://github.com/ethereum/execution-spec-tests/releases/download/v5.3.0/fixtures_develop.tar.gz | |
| jobs: | |
| cache-docker-images: | |
| name: Cache Docker Images | |
| runs-on: [self-hosted-ghr, size-l-x64] | |
| steps: | |
| - name: Checkout execution-specs | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| - name: Cache Docker images | |
| uses: ./.github/actions/cache-docker-images | |
| with: | |
| images: ${{ inputs.docker_images || 'docker.io/ethereum/client-go:latest docker.io/alpine:latest docker.io/library/golang:1-alpine' }} | |
| test-hive: | |
| name: ${{ matrix.name }} | |
| needs: cache-docker-images | |
| runs-on: [self-hosted-ghr, size-l-x64] | |
| env: | |
| CLIENT: ${{ inputs.client || 'go-ethereum' }} | |
| CLIENT_FILE: ${{ inputs.client_file || 'latest.yaml' }} | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| include: | |
| - name: Engine | |
| mode: simulator | |
| simulator: ethereum/eels/consume-engine | |
| sim_limit: ".*test_block_at_rlp_limit_with_logs.*Osaka.*" | |
| # TODO: Enable once eels/consume-enginex simulator is added to Hive | |
| # - name: consume-enginex | |
| # mode: simulator | |
| # simulator: ethereum/eels/consume-enginex | |
| # sim_limit: ".*push0.*(Shanghai|Cancun).*" | |
| - name: RLP | |
| mode: simulator | |
| simulator: ethereum/eels/consume-rlp | |
| sim_limit: ".*test_block_at_rlp_limit_with_logs.*Osaka.*" | |
| - name: Sync | |
| mode: simulator | |
| simulator: ethereum/eels/consume-sync | |
| sim_limit: ".*test_block_at_rlp_limit_with_logs.*Osaka.*" | |
| - name: Dev Mode Consume Engine | |
| mode: dev | |
| cli_command: consume engine | |
| test_filter: "Osaka and test_block_at_rlp_limit_with_logs" | |
| # TODO: Enable once we have a release with the pre-alloc builder format cf #2140 | |
| # - name: Dev Mode Consume EngineX | |
| # mode: dev | |
| # cli_command: consume enginex | |
| # test_filter: "(fork_shanghai or fork_cancun) and push0" | |
| # NOTE: build-block uses testing_buildBlockV1 on the HTTP RPC port | |
| # (8545), which has a smaller body cap than the Engine API port | |
| # (8551); avoid filters that target near-block-size-limit tests. | |
| - name: Dev Mode Build Block | |
| mode: dev | |
| cli_command: build-block | |
| test_filter: "Osaka and test_clz_stack_underflow" | |
| # TODO: Enable once eels/build-block simulator is added to Hive | |
| # - name: Build Block | |
| # mode: simulator | |
| # simulator: ethereum/eels/build-block | |
| # sim_limit: ".*test_block_at_rlp_limit_with_logs.*Osaka.*" | |
| steps: | |
| - name: Checkout execution-specs | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| path: execution-specs | |
| - name: Checkout Hive | |
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| repository: ethereum/hive | |
| ref: master | |
| path: hive | |
| # Redirect Go's caches to a per-job temp dir so the setup-go cache | |
| # restore doesn't collide with a persistent $GOMODCACHE on | |
| # self-hosted runners (see build-benchmark-genesis/action.yaml). | |
| - name: Use ephemeral Go cache dirs | |
| shell: bash | |
| run: | | |
| echo "GOMODCACHE=${{ runner.temp }}/go/mod" >> "$GITHUB_ENV" | |
| echo "GOCACHE=${{ runner.temp }}/go/build" >> "$GITHUB_ENV" | |
| - name: Setup go env and cache | |
| uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0 | |
| with: | |
| go-version: ">=1.24" | |
| cache-dependency-path: hive/go.sum | |
| - name: Install uv and python | |
| if: matrix.mode == 'dev' | |
| uses: ./execution-specs/.github/actions/setup-uv | |
| with: | |
| cache-dependency-glob: "execution-specs/uv.lock" | |
| - name: Setup environment | |
| if: matrix.mode == 'dev' | |
| uses: ./execution-specs/.github/actions/setup-env | |
| - name: Load cached Docker images | |
| uses: ./execution-specs/.github/actions/load-docker-images | |
| - name: Build hive | |
| run: | | |
| cd hive | |
| go build . | |
| - name: Run simulator tests | |
| if: matrix.mode == 'simulator' | |
| run: | | |
| cd hive | |
| ./hive --sim '${{ matrix.simulator }}' \ | |
| --sim.parallelism=1 \ | |
| --client ${{ env.CLIENT }} \ | |
| --client-file ../execution-specs/.github/configs/hive/${{ env.CLIENT_FILE }} \ | |
| --sim.buildarg fixtures=${{ env.FIXTURES_URL }} \ | |
| --sim.limit="${{ matrix.sim_limit }}" \ | |
| --sim.loglevel=5 \ | |
| --docker.buildoutput \ | |
| --docker.output | |
| - name: Build Hive client images | |
| if: matrix.mode == 'dev' | |
| run: | | |
| cd hive | |
| ./hive \ | |
| --client ${{ env.CLIENT }} \ | |
| --client-file ../execution-specs/.github/configs/hive/${{ env.CLIENT_FILE }} \ | |
| --docker.buildoutput | |
| timeout-minutes: 10 | |
| - name: Start Hive in dev mode | |
| if: matrix.mode == 'dev' | |
| id: start-hive | |
| uses: ./execution-specs/.github/actions/start-hive-dev | |
| with: | |
| clients: ${{ env.CLIENT }} | |
| client-file: execution-specs/.github/configs/hive/${{ env.CLIENT_FILE }} | |
| hive-path: hive | |
| timeout: "30" | |
| - name: Run dev mode command | |
| if: matrix.mode == 'dev' | |
| working-directory: execution-specs | |
| env: | |
| HIVE_SIMULATOR: ${{ steps.start-hive.outputs.hive-url }} | |
| run: | | |
| uv sync --all-extras | |
| uv run ${{ matrix.cli_command }} --input ${{ env.FIXTURES_URL }} -k "${{ matrix.test_filter }}" | |
| - name: Upload Hive logs | |
| if: always() | |
| uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0 | |
| with: | |
| name: hive-logs-${{ matrix.name }} | |
| path: hive/workspace/ | |
| retention-days: 7 |