Skip to content

test_worst_swap()

Documentation for tests/benchmark/test_worst_compute.py::test_worst_swap@v5.1.0.

Generate fixtures for these test cases for Osaka with:

fill -v tests/benchmark/test_worst_compute.py::test_worst_swap -m benchmark

Test running a block with as many SWAP as possible.

Source code in tests/benchmark/test_worst_compute.py
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
@pytest.mark.parametrize(
    "opcode",
    [
        Op.SWAP1,
        Op.SWAP2,
        Op.SWAP3,
        Op.SWAP4,
        Op.SWAP5,
        Op.SWAP6,
        Op.SWAP7,
        Op.SWAP8,
        Op.SWAP9,
        Op.SWAP10,
        Op.SWAP11,
        Op.SWAP12,
        Op.SWAP13,
        Op.SWAP14,
        Op.SWAP15,
        Op.SWAP16,
    ],
)
def test_worst_swap(
    state_test: StateTestFiller,
    pre: Alloc,
    fork: Fork,
    opcode: Opcode,
    gas_benchmark_value: int,
):
    """Test running a block with as many SWAP as possible."""
    max_code_size = fork.max_code_size()

    code_prefix = Op.JUMPDEST + Op.PUSH0 * opcode.min_stack_height
    code_suffix = Op.PUSH0 + Op.JUMP
    opcode_sequence = opcode * (max_code_size - len(code_prefix) - len(code_suffix))
    code = code_prefix + opcode_sequence + code_suffix
    assert len(code) <= max_code_size

    tx = Transaction(
        to=pre.deploy_contract(code=code),
        gas_limit=gas_benchmark_value,
        sender=pre.fund_eoa(),
    )

    state_test(
        pre=pre,
        post={},
        tx=tx,
    )

Parametrized Test Cases

The interactive table below is also available as a standalone page.

Test ID (Abbreviated) opcode
...fork_Prague-state_test-opcode_SWAP1 SWAP1
...fork_Prague-state_test-opcode_SWAP2 SWAP2
...fork_Prague-state_test-opcode_SWAP3 SWAP3
...fork_Prague-state_test-opcode_SWAP4 SWAP4
...fork_Prague-state_test-opcode_SWAP5 SWAP5
...fork_Prague-state_test-opcode_SWAP6 SWAP6
...fork_Prague-state_test-opcode_SWAP7 SWAP7
...fork_Prague-state_test-opcode_SWAP8 SWAP8
...fork_Prague-state_test-opcode_SWAP9 SWAP9
...fork_Prague-state_test-opcode_SWAP10 SWAP10
...fork_Prague-state_test-opcode_SWAP11 SWAP11
...fork_Prague-state_test-opcode_SWAP12 SWAP12
...fork_Prague-state_test-opcode_SWAP13 SWAP13
...fork_Prague-state_test-opcode_SWAP14 SWAP14
...fork_Prague-state_test-opcode_SWAP15 SWAP15
...fork_Prague-state_test-opcode_SWAP16 SWAP16
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP1 SWAP1
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP2 SWAP2
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP3 SWAP3
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP4 SWAP4
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP5 SWAP5
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP6 SWAP6
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP7 SWAP7
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP8 SWAP8
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP9 SWAP9
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP10 SWAP10
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP11 SWAP11
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP12 SWAP12
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP13 SWAP13
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP14 SWAP14
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP15 SWAP15
...fork_Prague-blockchain_test_from_state_test-opcode_SWAP16 SWAP16
...fork_Osaka-state_test-opcode_SWAP1 SWAP1
...fork_Osaka-state_test-opcode_SWAP2 SWAP2
...fork_Osaka-state_test-opcode_SWAP3 SWAP3
...fork_Osaka-state_test-opcode_SWAP4 SWAP4
...fork_Osaka-state_test-opcode_SWAP5 SWAP5
...fork_Osaka-state_test-opcode_SWAP6 SWAP6
...fork_Osaka-state_test-opcode_SWAP7 SWAP7
...fork_Osaka-state_test-opcode_SWAP8 SWAP8
...fork_Osaka-state_test-opcode_SWAP9 SWAP9
...fork_Osaka-state_test-opcode_SWAP10 SWAP10
...fork_Osaka-state_test-opcode_SWAP11 SWAP11
...fork_Osaka-state_test-opcode_SWAP12 SWAP12
...fork_Osaka-state_test-opcode_SWAP13 SWAP13
...fork_Osaka-state_test-opcode_SWAP14 SWAP14
...fork_Osaka-state_test-opcode_SWAP15 SWAP15
...fork_Osaka-state_test-opcode_SWAP16 SWAP16
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP1 SWAP1
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP2 SWAP2
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP3 SWAP3
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP4 SWAP4
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP5 SWAP5
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP6 SWAP6
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP7 SWAP7
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP8 SWAP8
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP9 SWAP9
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP10 SWAP10
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP11 SWAP11
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP12 SWAP12
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP13 SWAP13
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP14 SWAP14
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP15 SWAP15
...fork_Osaka-blockchain_test_from_state_test-opcode_SWAP16 SWAP16