test: Add mempool comparison tests (#357)

This commit is contained in:
Eric Warehime
2024-01-12 13:01:52 -08:00
committed by GitHub
parent a135d8f89d
commit 39f91b60a2
4 changed files with 157 additions and 61 deletions
+89
View File
@@ -0,0 +1,89 @@
package base
import (
"fmt"
"math/rand"
"testing"
sdkmath "cosmossdk.io/math"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/stretchr/testify/require"
signerextraction "github.com/skip-mev/block-sdk/adapters/signer_extraction_adapter"
"github.com/skip-mev/block-sdk/testutils"
)
func TestMempoolComparison(t *testing.T) {
acct := testutils.RandomAccounts(rand.New(rand.NewSource(1)), 2)
txc := testutils.CreateTestEncodingConfig().TxConfig
ctx := testutils.CreateBaseSDKContext(t)
mp := NewMempool(
DefaultTxPriority(),
txc.TxEncoder(),
signerextraction.NewDefaultAdapter(),
1000,
)
t.Run("test same account, same nonce", func(t *testing.T) {
tx1, err := testutils.CreateTx(txc, acct[0], 0, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(1)))
require.NoError(t, err)
tx2, err := testutils.CreateTx(txc, acct[0], 0, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(2)))
require.NoError(t, err)
output, err := mp.Compare(ctx, tx1, tx2)
require.Error(t, err, fmt.Errorf("the two transactions have the same seqence number"))
require.Equal(t, 0, output)
})
t.Run("test same account, tx1 gt amount, tx1 gt nonce", func(t *testing.T) {
tx1, err := testutils.CreateTx(txc, acct[0], 1, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(2)))
require.NoError(t, err)
tx2, err := testutils.CreateTx(txc, acct[0], 0, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(1)))
require.NoError(t, err)
output, err := mp.Compare(ctx, tx1, tx2)
require.NoError(t, err)
require.Equal(t, -1, output)
})
t.Run("test same account, tx1 lt amount, tx1 gt nonce", func(t *testing.T) {
tx1, err := testutils.CreateTx(txc, acct[0], 1, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(1)))
require.NoError(t, err)
tx2, err := testutils.CreateTx(txc, acct[0], 0, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(2)))
require.NoError(t, err)
output, err := mp.Compare(ctx, tx1, tx2)
require.NoError(t, err)
require.Equal(t, -1, output)
})
t.Run("test same account, tx1 lt amount, tx1 lt nonce", func(t *testing.T) {
tx1, err := testutils.CreateTx(txc, acct[0], 0, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(1)))
require.NoError(t, err)
tx2, err := testutils.CreateTx(txc, acct[0], 1, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(2)))
require.NoError(t, err)
output, err := mp.Compare(ctx, tx1, tx2)
require.NoError(t, err)
require.Equal(t, 1, output)
})
t.Run("test diff account, tx1 lt amount, tx1 gt nonce", func(t *testing.T) {
tx1, err := testutils.CreateTx(txc, acct[0], 1, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(1)))
require.NoError(t, err)
tx2, err := testutils.CreateTx(txc, acct[1], 0, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(2)))
require.NoError(t, err)
output, err := mp.Compare(ctx, tx1, tx2)
require.NoError(t, err)
require.Equal(t, -1, output)
})
t.Run("test diff account, tx1 lt amount, tx1 gt nonce, diff denoms", func(t *testing.T) {
tx1, err := testutils.CreateTx(txc, acct[0], 1, 0, nil, sdk.NewCoin("nonstake", sdkmath.NewInt(1)))
require.NoError(t, err)
tx2, err := testutils.CreateTx(txc, acct[1], 0, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(2)))
require.NoError(t, err)
output, err := mp.Compare(ctx, tx1, tx2)
require.NoError(t, err)
require.Equal(t, 0, output)
})
t.Run("test diff account, tx1 gt amount, tx1 gt nonce, diff denoms", func(t *testing.T) {
tx1, err := testutils.CreateTx(txc, acct[0], 1, 0, nil, sdk.NewCoin("nonstake", sdkmath.NewInt(2)))
require.NoError(t, err)
tx2, err := testutils.CreateTx(txc, acct[1], 0, 0, nil, sdk.NewCoin("stake", sdkmath.NewInt(1)))
require.NoError(t, err)
output, err := mp.Compare(ctx, tx1, tx2)
require.NoError(t, err)
require.Equal(t, 0, output)
})
}
+6 -5
View File
@@ -17,6 +17,7 @@ import (
"github.com/skip-mev/block-sdk/lanes/free"
"github.com/skip-mev/block-sdk/lanes/mev"
"github.com/skip-mev/block-sdk/testutils"
"github.com/skip-mev/block-sdk/testutils/mempool"
)
func TestGetTxDistribution(t *testing.T) {
@@ -31,7 +32,7 @@ func TestGetTxDistribution(t *testing.T) {
}{
{
name: "returns correct distribution with no transactions",
mempool: testutils.CreateMempool,
mempool: mempool.CreateMempool,
expectedDistribution: map[string]uint64{
mev.LaneName: 0,
free.LaneName: 0,
@@ -63,7 +64,7 @@ func TestGetTxDistribution(t *testing.T) {
)
require.NoError(t, err)
mempool := testutils.CreateMempool()
mempool := mempool.CreateMempool()
err = mempool.Insert(ctx, tx1)
require.NoError(t, err)
err = mempool.Insert(ctx, tx2)
@@ -90,7 +91,7 @@ func TestGetTxDistribution(t *testing.T) {
)
require.NoError(t, err)
mempool := testutils.CreateMempool()
mempool := mempool.CreateMempool()
err = mempool.Insert(ctx, tx1)
require.NoError(t, err)
@@ -115,7 +116,7 @@ func TestGetTxDistribution(t *testing.T) {
)
require.NoError(t, err)
mempool := testutils.CreateMempool()
mempool := mempool.CreateMempool()
err = mempool.Insert(ctx, tx1)
require.NoError(t, err)
@@ -161,7 +162,7 @@ func TestGetTxDistribution(t *testing.T) {
)
require.NoError(t, err)
mempool := testutils.CreateMempool()
mempool := mempool.CreateMempool()
err = mempool.Insert(ctx, mevTx)
require.NoError(t, err)
err = mempool.Insert(ctx, freeTx)