Skip to content

EIP-8141: validation-prefix simulation admission for frame transactions (MAX_VERIFY_GAS bound) #11902

EIP-8141: validation-prefix simulation admission for frame transactions (MAX_VERIFY_GAS bound)

EIP-8141: validation-prefix simulation admission for frame transactions (MAX_VERIFY_GAS bound) #11902

name: Nethermind extra test variants
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
pull_request:
push:
branches: [master]
workflow_dispatch:
env:
DOTNET_SYSTEM_CONSOLE_ALLOW_ANSI_COLOR_REDIRECTION: 1
TERM: xterm
defaults:
run:
shell: bash
permissions:
contents: read
jobs:
build:
uses: ./.github/workflows/build-test-artifacts.yml
with:
matrix: '{"include":[{"rid":"linux-x64","os":"ubuntu-latest","variant":"release","build_args":""},{"rid":"linux-x64","os":"ubuntu-latest","variant":"checked","build_args":"-p:DefineConstants=TRACE%3BDEBUG"}]}'
tests:
name: Run ${{ matrix.project }} [${{ matrix.variant.label }}]
needs: build
runs-on: ubuntu-latest
timeout-minutes: 15
env:
DOTNET_GCConserveMemory: 9
# Only these fixture tests read the src/tests submodule at runtime.
FIXTURE_PROJECTS: '["Ethereum.Blockchain.Block.Test","Ethereum.Legacy.Blockchain.Block.Test","Ethereum.Legacy.Blockchain.Test","Ethereum.Legacy.Transition.Test","Ethereum.Legacy.VM.Test"]'
strategy:
fail-fast: false
matrix:
variant:
- label: checked
dotnet-args: -p:DefineConstants=TRACE%3BDEBUG
hw-intrinsic: ''
artifact: checked
- &no_intrinsics
label: no-intrinsics
dotnet-args: ''
hw-intrinsic: 0
artifact: release
project:
- Ethereum.Abi.Test
- Ethereum.Basic.Test
- Ethereum.Blockchain.Block.Test
- Ethereum.Difficulty.Test
- Ethereum.HexPrefix.Test
- Ethereum.KeyAddress.Test
- Ethereum.KeyStore.Test
- Ethereum.Legacy.Blockchain.Block.Test
- Ethereum.Legacy.Transition.Test
- Ethereum.Legacy.VM.Test
- Ethereum.PoW.Test
- Ethereum.Rlp.Test
- Ethereum.Transaction.Test
- Ethereum.Trie.Test
- Nethermind.Abi.Test
- Nethermind.Api.Test
- Nethermind.AuRa.Test
- Nethermind.Blockchain.Test
- Nethermind.Clique.Test
- Nethermind.Config.Test
- Nethermind.Consensus.Test
- Nethermind.Core.Test
- Nethermind.Db.Test
- Nethermind.Era1.Test
- Nethermind.Ethash.Test
- Nethermind.EthStats.Test
- Nethermind.Evm.Test
- Nethermind.Facade.Test
- Nethermind.Flashbots.Test
- Nethermind.HealthChecks.Test
- Nethermind.History.Test
- Nethermind.Hive.Test
- Nethermind.JsonRpc.Test
- Nethermind.JsonRpc.TraceStore.Test
- Nethermind.KeyStore.Test
- Nethermind.Logging.NLog.Test
- Nethermind.Merge.AuRa.Test
- Nethermind.Merge.Plugin.Test
- Nethermind.Mining.Test
- Nethermind.Monitoring.Test
- Nethermind.Network.Discovery.Test
- Nethermind.Network.Dns.Test
- Nethermind.Network.Enr.Test
- Nethermind.Network.Test
- Nethermind.Optimism.Test
- Nethermind.Runner.Test
- Nethermind.Serialization.Ssz.Test
- Nethermind.Shutter.Test
- Nethermind.Sockets.Test
- Nethermind.Specs.Test
- Nethermind.State.Test
- Nethermind.State.Test.Runner.Test
- Nethermind.Synchronization.Test
- Nethermind.Taiko.Test
- Nethermind.Trie.Test
- Nethermind.TxPool.Test
- Nethermind.Wallet.Test
- Nethermind.Xdc.Test
exclude:
- { variant: *no_intrinsics, project: Nethermind.Api.Test }
- { variant: *no_intrinsics, project: Nethermind.Config.Test }
- { variant: *no_intrinsics, project: Nethermind.EthStats.Test }
- { variant: *no_intrinsics, project: Nethermind.HealthChecks.Test }
- { variant: *no_intrinsics, project: Nethermind.Logging.NLog.Test }
- { variant: *no_intrinsics, project: Nethermind.Monitoring.Test }
- { variant: *no_intrinsics, project: Nethermind.Sockets.Test }
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
submodules: ${{ contains(fromJSON(env.FIXTURE_PROJECTS), matrix.project) && 'recursive' || 'false' }}
- name: Set up .NET
uses: actions/setup-dotnet@v5
with:
cache: true
cache-dependency-path: src/Nethermind/Nethermind.Runner/packages.lock.json
- name: Download test binaries
uses: ./.github/actions/download-test-artifacts
with:
variant: ${{ matrix.variant.artifact }}
- name: ${{ matrix.project }}
id: test
working-directory: src/Nethermind/${{ matrix.project }}
env:
DOTNET_EnableHWIntrinsic: ${{ matrix.variant.hw-intrinsic }}
run: |
dotnet restore ${{ matrix.project }}.csproj
test_args=(--no-build --no-restore)
dotnet test --project ${{ matrix.project }}.csproj -c release "${test_args[@]}"
tests-chunked:
name: Run ${{ matrix.test.project }} (${{ matrix.test.chunk }}) [${{ matrix.variant.label }}]
needs: build
runs-on: ubuntu-latest
timeout-minutes: 20
env:
DOTNET_GCConserveMemory: 9
strategy:
fail-fast: false
matrix:
variant:
- label: checked
dotnet-args: -p:DefineConstants=TRACE%3BDEBUG
hw-intrinsic: ''
artifact: checked
- label: no-intrinsics
dotnet-args: ''
hw-intrinsic: 0
artifact: release
test:
- { project: Ethereum.Legacy.Blockchain.Test, chunk: 1of8 }
- { project: Ethereum.Legacy.Blockchain.Test, chunk: 2of8 }
- { project: Ethereum.Legacy.Blockchain.Test, chunk: 3of8 }
- { project: Ethereum.Legacy.Blockchain.Test, chunk: 4of8 }
- { project: Ethereum.Legacy.Blockchain.Test, chunk: 5of8 }
- { project: Ethereum.Legacy.Blockchain.Test, chunk: 6of8 }
- { project: Ethereum.Legacy.Blockchain.Test, chunk: 7of8 }
- { project: Ethereum.Legacy.Blockchain.Test, chunk: 8of8 }
steps:
- name: Check out repository
uses: actions/checkout@v6
with:
submodules: recursive
- name: Set up .NET
uses: actions/setup-dotnet@v5
with:
cache: true
cache-dependency-path: src/Nethermind/Nethermind.Runner/packages.lock.json
- name: Download test binaries
uses: ./.github/actions/download-test-artifacts
with:
variant: ${{ matrix.variant.artifact }}
- name: ${{ matrix.test.project }} (${{ matrix.test.chunk }})
id: test
working-directory: src/Nethermind/${{ matrix.test.project }}
env:
DOTNET_EnableHWIntrinsic: ${{ matrix.variant.hw-intrinsic }}
TEST_CHUNK: ${{ matrix.test.chunk }}
TEST_SKIP_HEAVY: 1
run: |
dotnet restore ${{ matrix.test.project }}.csproj
test_args=(--no-build --no-restore)
dotnet test --project ${{ matrix.test.project }}.csproj -c release "${test_args[@]}"
# The pyspec fixtures under the build variants now run through the reusable nethtest
# workflow instead of the Ethereum.Blockchain.Pyspec.Test NUnit shards. Matches the
# NUnit TEST_SKIP_HEAVY=1 scope those variant jobs used: the heavy engine / sync /
# Amsterdam-BAL fixtures are skipped (build-config bugs live in the EVM + crypto, which
# blockTest exercises as well as engineTest), leaving block + state + tx. Sequential
# (patricia) config, coarsely chunked, once per variant. checked builds the runner with
# DEBUG defines; no-intrinsics disables hardware intrinsics at run time.
pyspec-checked:
name: EEST nethtest (checked)
uses: ./.github/workflows/run-nethtest.yml
with:
test_types: blockTest,stateTest,txTest
setup_group: sequential
variant: checked
pyspec-no-intrinsics:
name: EEST nethtest (no-intrinsics)
uses: ./.github/workflows/run-nethtest.yml
with:
test_types: blockTest,stateTest,txTest
setup_group: sequential
variant: no-intrinsics
tests-summary:
name: Tests summary
needs: [tests, tests-chunked, pyspec-checked, pyspec-no-intrinsics]
if: always()
runs-on: ubuntu-latest
steps:
- name: Check result
run: |
[[ \
"${{ needs.tests.result }}" == "success" && \
"${{ needs.tests-chunked.result }}" == "success" && \
"${{ needs.pyspec-checked.result }}" == "success" && \
"${{ needs.pyspec-no-intrinsics.result }}" == "success" \
]]