EIP-8141: validation-prefix simulation admission for frame transactions (MAX_VERIFY_GAS bound) #11902
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: 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" \ | |
| ]] |