Skip to content

test_worst_calldataload()

Documentation for tests/benchmark/test_worst_compute.py::test_worst_calldataload@v5.0.0.

Generate fixtures for these test cases for Osaka with:

fill -v tests/benchmark/test_worst_compute.py::test_worst_calldataload --fork Osaka

Test running a block with as many CALLDATALOAD as possible.

Source code in tests/benchmark/test_worst_compute.py
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
@pytest.mark.parametrize(
    "calldata",
    [
        pytest.param(b"", id="empty"),
        pytest.param(b"\x00", id="zero-loop"),
        pytest.param(b"\x00" * 31 + b"\x20", id="one-loop"),
    ],
)
def test_worst_calldataload(
    state_test: StateTestFiller,
    pre: Alloc,
    fork: Fork,
    calldata: bytes,
    gas_benchmark_value: int,
):
    """Test running a block with as many CALLDATALOAD as possible."""
    max_code_size = fork.max_code_size()

    code_prefix = Op.PUSH0 + Op.JUMPDEST
    code_suffix = Op.PUSH1(1) + Op.JUMP
    code_body_len = max_code_size - len(code_prefix) - len(code_suffix)
    code_loop_iter = Op.CALLDATALOAD
    code_body = code_loop_iter * (code_body_len // len(code_loop_iter))
    code = code_prefix + code_body + code_suffix
    assert len(code) <= max_code_size

    tx = Transaction(
        to=pre.deploy_contract(code=code),
        data=calldata,
        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) calldata
...fork_Frontier-state_test-empty
...fork_Frontier-state_test-zero-loop 00
...fork_Frontier-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Frontier-blockchain_test_from_state_test-empty
...fork_Frontier-blockchain_test_from_state_test-zero-loop 00
...fork_Frontier-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Homestead-state_test-empty
...fork_Homestead-state_test-zero-loop 00
...fork_Homestead-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Homestead-blockchain_test_from_state_test-empty
...fork_Homestead-blockchain_test_from_state_test-zero-loop 00
...fork_Homestead-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Byzantium-state_test-empty
...fork_Byzantium-state_test-zero-loop 00
...fork_Byzantium-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Byzantium-blockchain_test_from_state_test-empty
...fork_Byzantium-blockchain_test_from_state_test-zero-loop 00
...fork_Byzantium-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Constantinople-state_test-empty
...fork_Constantinople-state_test-zero-loop 00
...fork_Constantinople-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Constantinople-blockchain_test_from_state_test-empty
...fork_Constantinople-blockchain_test_from_state_test-zero-loop 00
...fork_Constantinople-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_ConstantinopleFix-state_test-empty
...fork_ConstantinopleFix-state_test-zero-loop 00
...fork_ConstantinopleFix-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_ConstantinopleFix-blockchain_test_from_state_test-empty
...fork_ConstantinopleFix-blockchain_test_from_state_test-zero-loop 00
...fork_ConstantinopleFix-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Istanbul-state_test-empty
...fork_Istanbul-state_test-zero-loop 00
...fork_Istanbul-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Istanbul-blockchain_test_from_state_test-empty
...fork_Istanbul-blockchain_test_from_state_test-zero-loop 00
...fork_Istanbul-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Berlin-state_test-empty
...fork_Berlin-state_test-zero-loop 00
...fork_Berlin-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Berlin-blockchain_test_from_state_test-empty
...fork_Berlin-blockchain_test_from_state_test-zero-loop 00
...fork_Berlin-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_London-state_test-empty
...fork_London-state_test-zero-loop 00
...fork_London-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_London-blockchain_test_from_state_test-empty
...fork_London-blockchain_test_from_state_test-zero-loop 00
...fork_London-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Paris-state_test-empty
...fork_Paris-state_test-zero-loop 00
...fork_Paris-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Paris-blockchain_test_from_state_test-empty
...fork_Paris-blockchain_test_from_state_test-zero-loop 00
...fork_Paris-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Shanghai-state_test-empty
...fork_Shanghai-state_test-zero-loop 00
...fork_Shanghai-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Shanghai-blockchain_test_from_state_test-empty
...fork_Shanghai-blockchain_test_from_state_test-zero-loop 00
...fork_Shanghai-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Cancun-state_test-empty
...fork_Cancun-state_test-zero-loop 00
...fork_Cancun-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Cancun-blockchain_test_from_state_test-empty
...fork_Cancun-blockchain_test_from_state_test-zero-loop 00
...fork_Cancun-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Prague-state_test-empty
...fork_Prague-state_test-zero-loop 00
...fork_Prague-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Prague-blockchain_test_from_state_test-empty
...fork_Prague-blockchain_test_from_state_test-zero-loop 00
...fork_Prague-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Osaka-state_test-empty
...fork_Osaka-state_test-zero-loop 00
...fork_Osaka-state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020
...fork_Osaka-blockchain_test_from_state_test-empty
...fork_Osaka-blockchain_test_from_state_test-zero-loop 00
...fork_Osaka-blockchain_test_from_state_test-one-loop 00000000000000000000000000000000 00000000000000000000000000000020