package mempool import ( "context" "fmt" "math/rand" "testing" "time" "github.com/stretchr/testify/require" abciclient "github.com/tendermint/tendermint/abci/client" "github.com/tendermint/tendermint/abci/example/kvstore" "github.com/tendermint/tendermint/libs/log" ) func BenchmarkTxMempool_CheckTx(b *testing.B) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() client := abciclient.NewLocalClient(log.NewNopLogger(), kvstore.NewApplication()) if err := client.Start(ctx); err != nil { b.Fatal(err) } // setup the cache and the mempool number for hitting GetEvictableTxs during the // benchmark. 5000 is the current default mempool size in the TM config. txmp := setup(ctx, b, client, 10000) txmp.config.Size = 5000 rng := rand.New(rand.NewSource(time.Now().UnixNano())) const peerID = 1 b.ResetTimer() for n := 0; n < b.N; n++ { b.StopTimer() prefix := make([]byte, 20) _, err := rng.Read(prefix) require.NoError(b, err) priority := int64(rng.Intn(9999-1000) + 1000) tx := []byte(fmt.Sprintf("sender-%d-%d=%X=%d", n, peerID, prefix, priority)) txInfo := TxInfo{SenderID: uint16(peerID)} b.StartTimer() require.NoError(b, txmp.CheckTx(ctx, tx, nil, txInfo)) } }