• Axel Kingsley's avatar
    Tests: Batching Benchmarks (#9927) · b2509186
    Axel Kingsley authored
    * Add Benchmark for AddSingularBatch
    
    * update compressor configs ; address PR comments
    
    * Add b.N
    
    * Export RandomSingularBatch through batch_test_util.go
    
    * measure only the final batch ; other organizational improvements
    
    * Add Benchmark for ToRawSpanBatch
    
    * update tests
    
    * minor fixup
    
    * Add Benchmark for adding *All* Span Batches
    
    * comment fixups
    
    * narrow tests to only test span batches that won't exceed RLP limit
    
    * address pr comments
    b2509186
batch_test_utils.go 1.02 KB
package derive

import (
	"math/big"
	"math/rand"

	"github.com/ethereum-optimism/optimism/op-node/rollup"
	"github.com/ethereum-optimism/optimism/op-service/testutils"
	"github.com/ethereum/go-ethereum/common/hexutil"
	"github.com/ethereum/go-ethereum/core/types"
)

func RandomSingularBatch(rng *rand.Rand, txCount int, chainID *big.Int) *SingularBatch {
	signer := types.NewLondonSigner(chainID)
	baseFee := big.NewInt(rng.Int63n(300_000_000_000))
	txsEncoded := make([]hexutil.Bytes, 0, txCount)
	// force each tx to have equal chainID
	for i := 0; i < txCount; i++ {
		tx := testutils.RandomTx(rng, baseFee, signer)
		txEncoded, err := tx.MarshalBinary()
		if err != nil {
			panic("tx Marshal binary" + err.Error())
		}
		txsEncoded = append(txsEncoded, hexutil.Bytes(txEncoded))
	}
	return &SingularBatch{
		ParentHash:   testutils.RandomHash(rng),
		EpochNum:     rollup.Epoch(1 + rng.Int63n(100_000_000)),
		EpochHash:    testutils.RandomHash(rng),
		Timestamp:    uint64(rng.Int63n(2_000_000_000)),
		Transactions: txsEncoded,
	}
}