Skip to content

test_worst_calldatasize()

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

Generate fixtures for these test cases for Osaka with:

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

Test running a block with as many CALLDATASIZE as possible.

Source code in tests/benchmark/test_worst_compute.py
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
@pytest.mark.parametrize("calldata_length", [0, 1_000, 10_000])
def test_worst_calldatasize(
    state_test: StateTestFiller,
    pre: Alloc,
    fork: Fork,
    calldata_length: int,
    gas_benchmark_value: int,
):
    """Test running a block with as many CALLDATASIZE as possible."""
    max_code_size = fork.max_code_size()

    code_prefix = Op.JUMPDEST
    iter_loop = Op.POP(Op.CALLDATASIZE)
    code_suffix = Op.PUSH0 + Op.JUMP
    code_iter_len = (max_code_size - len(code_prefix) - len(code_suffix)) // len(iter_loop)
    code = code_prefix + iter_loop * code_iter_len + code_suffix
    assert len(code) <= max_code_size

    tx = Transaction(
        to=pre.deploy_contract(code=bytes(code)),
        gas_limit=gas_benchmark_value,
        sender=pre.fund_eoa(),
        data=b"\x00" * calldata_length,
    )

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

Parametrized Test Cases

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

Test ID (Abbreviated) calldata_length
...fork_Prague-state_test-calldata_length_0 0
...fork_Prague-state_test-calldata_length_1000 1000
...fork_Prague-state_test-calldata_length_10000 10000
...fork_Prague-blockchain_test_from_state_test-calldata_length_0 0
...fork_Prague-blockchain_test_from_state_test-calldata_length_1000 1000
...fork_Prague-blockchain_test_from_state_test-calldata_length_10000 10000
...fork_Osaka-state_test-calldata_length_0 0
...fork_Osaka-state_test-calldata_length_1000 1000
...fork_Osaka-state_test-calldata_length_10000 10000
...fork_Osaka-blockchain_test_from_state_test-calldata_length_0 0
...fork_Osaka-blockchain_test_from_state_test-calldata_length_1000 1000
...fork_Osaka-blockchain_test_from_state_test-calldata_length_10000 10000