From cd1db0a8ba8f429bf69d0a79a8907c3b59a6ac50 Mon Sep 17 00:00:00 2001 From: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:23:26 -0500 Subject: [PATCH 1/8] remove mock mempool Signed-off-by: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> --- vms/avm/block/builder/builder_test.go | 79 ++++---- vms/avm/block/executor/block_test.go | 60 +++--- vms/avm/network/network_test.go | 174 +++++++++++------- vms/avm/txs/mempool/mempoolmock/mempool.go | 166 ----------------- .../block/executor/rejector_test.go | 13 +- .../block/executor/verifier_test.go | 22 ++- vms/platformvm/network/gossip_test.go | 105 +++++------ vms/platformvm/network/network_test.go | 84 ++++----- 8 files changed, 273 insertions(+), 430 deletions(-) delete mode 100644 vms/avm/txs/mempool/mempoolmock/mempool.go diff --git a/vms/avm/block/builder/builder_test.go b/vms/avm/block/builder/builder_test.go index 92a2bb196dab..61d215fb5ee0 100644 --- a/vms/avm/block/builder/builder_test.go +++ b/vms/avm/block/builder/builder_test.go @@ -33,7 +33,6 @@ import ( "github.com/ava-labs/avalanchego/vms/avm/state/statemock" "github.com/ava-labs/avalanchego/vms/avm/txs" "github.com/ava-labs/avalanchego/vms/avm/txs/mempool" - "github.com/ava-labs/avalanchego/vms/avm/txs/mempool/mempoolmock" "github.com/ava-labs/avalanchego/vms/avm/txs/txsmock" "github.com/ava-labs/avalanchego/vms/components/avax" "github.com/ava-labs/avalanchego/vms/secp256k1fx" @@ -66,8 +65,8 @@ func TestBuilderBuildBlock(t *testing.T) { manager.EXPECT().Preferred().Return(preferredID) manager.EXPECT().GetStatelessBlock(preferredID).Return(nil, errTest) - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().RequestBuildBlock() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return New( &txexecutor.Backend{ @@ -97,8 +96,8 @@ func TestBuilderBuildBlock(t *testing.T) { manager.EXPECT().GetStatelessBlock(preferredID).Return(preferredBlock, nil) manager.EXPECT().GetState(preferredID).Return(nil, false) - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().RequestBuildBlock() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return New( &txexecutor.Backend{ @@ -134,15 +133,13 @@ func TestBuilderBuildBlock(t *testing.T) { unsignedTx := txsmock.NewUnsignedTx(ctrl) unsignedTx.EXPECT().Visit(gomock.Any()).Return(errTest) // Fail semantic verification + unsignedTx.EXPECT().InputIDs().Return(nil) tx := &txs.Tx{Unsigned: unsignedTx} - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Peek().Return(tx, true) - mempool.EXPECT().Remove([]*txs.Tx{tx}) - mempool.EXPECT().MarkDropped(tx.ID(), errTest) - // Second loop iteration - mempool.EXPECT().Peek().Return(nil, false) - mempool.EXPECT().RequestBuildBlock() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + require.NoError(t, mempool.Add(tx)) + mempool.MarkDropped(tx.ID(), errTest) return New( &txexecutor.Backend{ @@ -179,15 +176,12 @@ func TestBuilderBuildBlock(t *testing.T) { unsignedTx := txsmock.NewUnsignedTx(ctrl) unsignedTx.EXPECT().Visit(gomock.Any()).Return(nil) // Pass semantic verification unsignedTx.EXPECT().Visit(gomock.Any()).Return(errTest) // Fail execution + unsignedTx.EXPECT().InputIDs().Return(nil) tx := &txs.Tx{Unsigned: unsignedTx} - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Peek().Return(tx, true) - mempool.EXPECT().Remove([]*txs.Tx{tx}) - mempool.EXPECT().MarkDropped(tx.ID(), errTest) - // Second loop iteration - mempool.EXPECT().Peek().Return(nil, false) - mempool.EXPECT().RequestBuildBlock() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + require.NoError(t, mempool.Add(tx)) return New( &txexecutor.Backend{ @@ -225,15 +219,12 @@ func TestBuilderBuildBlock(t *testing.T) { unsignedTx := txsmock.NewUnsignedTx(ctrl) unsignedTx.EXPECT().Visit(gomock.Any()).Return(nil) // Pass semantic verification unsignedTx.EXPECT().Visit(gomock.Any()).Return(nil) // Pass execution + unsignedTx.EXPECT().InputIDs().Return(nil) tx := &txs.Tx{Unsigned: unsignedTx} - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Peek().Return(tx, true) - mempool.EXPECT().Remove([]*txs.Tx{tx}) - mempool.EXPECT().MarkDropped(tx.ID(), errTest) - // Second loop iteration - mempool.EXPECT().Peek().Return(nil, false) - mempool.EXPECT().RequestBuildBlock() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + require.NoError(t, mempool.Add(tx)) return New( &txexecutor.Backend{ @@ -276,6 +267,7 @@ func TestBuilderBuildBlock(t *testing.T) { }, ) unsignedTx1.EXPECT().SetBytes(gomock.Any()).AnyTimes() + unsignedTx1.EXPECT().InputIDs().Return(nil) tx1 := &txs.Tx{Unsigned: unsignedTx1} // Set the bytes of tx1 to something other than nil // so we can check that the remainingSize is updated @@ -292,6 +284,7 @@ func TestBuilderBuildBlock(t *testing.T) { return nil }, ) + unsignedTx2.EXPECT().InputIDs().Return(nil) tx2 := &txs.Tx{Unsigned: unsignedTx2} manager := executormock.NewManager(ctrl) @@ -311,16 +304,10 @@ func TestBuilderBuildBlock(t *testing.T) { }, ) - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Peek().Return(tx1, true) - mempool.EXPECT().Remove([]*txs.Tx{tx1}) - // Second loop iteration - mempool.EXPECT().Peek().Return(tx2, true) - mempool.EXPECT().Remove([]*txs.Tx{tx2}) - mempool.EXPECT().MarkDropped(tx2.ID(), blkexecutor.ErrConflictingBlockTxs) - // Third loop iteration - mempool.EXPECT().Peek().Return(nil, false) - mempool.EXPECT().RequestBuildBlock() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + require.NoError(t, mempool.Add(tx1)) + require.NoError(t, mempool.Add(tx2)) // To marshal the tx/block codec := codecmock.NewManager(ctrl) @@ -385,14 +372,12 @@ func TestBuilderBuildBlock(t *testing.T) { }, ) unsignedTx.EXPECT().SetBytes(gomock.Any()).AnyTimes() + unsignedTx.EXPECT().InputIDs().Return(nil) tx := &txs.Tx{Unsigned: unsignedTx} - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Peek().Return(tx, true) - mempool.EXPECT().Remove([]*txs.Tx{tx}) - // Second loop iteration - mempool.EXPECT().Peek().Return(nil, false) - mempool.EXPECT().RequestBuildBlock() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + require.NoError(t, mempool.Add(tx)) // To marshal the tx/block codec := codecmock.NewManager(ctrl) @@ -459,14 +444,12 @@ func TestBuilderBuildBlock(t *testing.T) { }, ) unsignedTx.EXPECT().SetBytes(gomock.Any()).AnyTimes() + unsignedTx.EXPECT().InputIDs().Return(nil) tx := &txs.Tx{Unsigned: unsignedTx} - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Peek().Return(tx, true) - mempool.EXPECT().Remove([]*txs.Tx{tx}) - // Second loop iteration - mempool.EXPECT().Peek().Return(nil, false) - mempool.EXPECT().RequestBuildBlock() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + require.NoError(t, mempool.Add(tx)) // To marshal the tx/block codec := codecmock.NewManager(ctrl) diff --git a/vms/avm/block/executor/block_test.go b/vms/avm/block/executor/block_test.go index 5b8d17b66e7f..ed0c5e47b7ef 100644 --- a/vms/avm/block/executor/block_test.go +++ b/vms/avm/block/executor/block_test.go @@ -9,6 +9,8 @@ import ( "testing" "time" + "github.com/ava-labs/avalanchego/vms/avm/txs/mempool" + "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" @@ -27,7 +29,6 @@ import ( "github.com/ava-labs/avalanchego/vms/avm/state/statemock" "github.com/ava-labs/avalanchego/vms/avm/txs" "github.com/ava-labs/avalanchego/vms/avm/txs/executor" - "github.com/ava-labs/avalanchego/vms/avm/txs/mempool/mempoolmock" "github.com/ava-labs/avalanchego/vms/avm/txs/txsmock" ) @@ -127,8 +128,8 @@ func TestBlockVerify(t *testing.T) { } mockBlock.EXPECT().Txs().Return([]*txs.Tx{errTx}).AnyTimes() - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().MarkDropped(errTx.ID(), errTest).Times(1) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return &Block{ Block: mockBlock, manager: &manager{ @@ -285,8 +286,8 @@ func TestBlockVerify(t *testing.T) { mockParentState.EXPECT().GetLastAccepted().Return(parentID) mockParentState.EXPECT().GetTimestamp().Return(blockTimestamp) - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().MarkDropped(tx.ID(), errTest).Times(1) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return &Block{ Block: mockBlock, manager: &manager{ @@ -336,8 +337,8 @@ func TestBlockVerify(t *testing.T) { mockParentState.EXPECT().GetLastAccepted().Return(parentID) mockParentState.EXPECT().GetTimestamp().Return(blockTimestamp) - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().MarkDropped(tx.ID(), errTest).Times(1) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return &Block{ Block: mockBlock, manager: &manager{ @@ -414,8 +415,8 @@ func TestBlockVerify(t *testing.T) { mockParentState.EXPECT().GetLastAccepted().Return(parentID) mockParentState.EXPECT().GetTimestamp().Return(blockTimestamp) - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().MarkDropped(tx2.ID(), ErrConflictingBlockTxs).Times(1) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return &Block{ Block: mockBlock, manager: &manager{ @@ -509,6 +510,7 @@ func TestBlockVerify(t *testing.T) { mockUnsignedTx.EXPECT().Visit(gomock.Any()).Return(nil).Times(1) // Syntactic verification passes mockUnsignedTx.EXPECT().Visit(gomock.Any()).Return(nil).Times(1) // Semantic verification fails mockUnsignedTx.EXPECT().Visit(gomock.Any()).Return(nil).Times(1) // Execution passes + mockUnsignedTx.EXPECT().InputIDs().AnyTimes() tx := &txs.Tx{ Unsigned: mockUnsignedTx, } @@ -524,12 +526,13 @@ func TestBlockVerify(t *testing.T) { mockParentState.EXPECT().GetLastAccepted().Return(parentID) mockParentState.EXPECT().GetTimestamp().Return(blockTimestamp) - mockMempool := mempoolmock.NewMempool(ctrl) - mockMempool.EXPECT().Remove([]*txs.Tx{tx}) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + return &Block{ Block: mockBlock, manager: &manager{ - mempool: mockMempool, + mempool: mempool, metrics: metricsmock.NewMetrics(ctrl), backend: defaultTestBackend(false, nil), blkIDToState: map[ids.ID]*blockState{ @@ -597,8 +600,8 @@ func TestBlockAccept(t *testing.T) { mockBlock.EXPECT().ID().Return(ids.GenerateTestID()).AnyTimes() mockBlock.EXPECT().Txs().Return([]*txs.Tx{}).AnyTimes() - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Remove(gomock.Any()).AnyTimes() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return &Block{ Block: mockBlock, @@ -620,8 +623,8 @@ func TestBlockAccept(t *testing.T) { mockBlock.EXPECT().ID().Return(blockID).AnyTimes() mockBlock.EXPECT().Txs().Return([]*txs.Tx{}).AnyTimes() - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Remove(gomock.Any()).AnyTimes() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) mockManagerState := statemock.NewState(ctrl) mockManagerState.EXPECT().CommitBatch().Return(nil, errTest) @@ -654,8 +657,8 @@ func TestBlockAccept(t *testing.T) { mockBlock.EXPECT().ID().Return(blockID).AnyTimes() mockBlock.EXPECT().Txs().Return([]*txs.Tx{}).AnyTimes() - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Remove(gomock.Any()).AnyTimes() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) mockManagerState := statemock.NewState(ctrl) // Note the returned batch is nil but not used @@ -693,8 +696,8 @@ func TestBlockAccept(t *testing.T) { mockBlock.EXPECT().ID().Return(blockID).AnyTimes() mockBlock.EXPECT().Txs().Return([]*txs.Tx{}).AnyTimes() - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Remove(gomock.Any()).AnyTimes() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) mockManagerState := statemock.NewState(ctrl) // Note the returned batch is nil but not used @@ -738,8 +741,8 @@ func TestBlockAccept(t *testing.T) { mockBlock.EXPECT().Parent().Return(ids.GenerateTestID()).AnyTimes() mockBlock.EXPECT().Txs().Return([]*txs.Tx{}).AnyTimes() - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Remove(gomock.Any()).AnyTimes() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) mockManagerState := statemock.NewState(ctrl) // Note the returned batch is nil but not used @@ -810,6 +813,7 @@ func TestBlockReject(t *testing.T) { unsignedValidTx := txsmock.NewUnsignedTx(ctrl) unsignedValidTx.EXPECT().SetBytes(gomock.Any()) unsignedValidTx.EXPECT().Visit(gomock.Any()).Return(nil).AnyTimes() // Passes verification and execution + unsignedValidTx.EXPECT().InputIDs().Return(nil) unsignedSyntacticallyInvalidTx := txsmock.NewUnsignedTx(ctrl) unsignedSyntacticallyInvalidTx.EXPECT().SetBytes(gomock.Any()) @@ -843,9 +847,8 @@ func TestBlockReject(t *testing.T) { executionFailsTx, }) - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Add(validTx).Return(nil) // Only add the one that passes verification - mempool.EXPECT().RequestBuildBlock() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) lastAcceptedID := ids.GenerateTestID() mockState := statemock.NewState(ctrl) @@ -879,6 +882,7 @@ func TestBlockReject(t *testing.T) { unsignedTx1 := txsmock.NewUnsignedTx(ctrl) unsignedTx1.EXPECT().SetBytes(gomock.Any()) unsignedTx1.EXPECT().Visit(gomock.Any()).Return(nil).AnyTimes() // Passes verification and execution + unsignedTx1.EXPECT().InputIDs().Return(nil) unsignedTx2 := txsmock.NewUnsignedTx(ctrl) unsignedTx2.EXPECT().SetBytes(gomock.Any()) @@ -895,10 +899,8 @@ func TestBlockReject(t *testing.T) { tx2, }) - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Add(tx1).Return(nil) - mempool.EXPECT().Add(tx2).Return(nil) - mempool.EXPECT().RequestBuildBlock() + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) lastAcceptedID := ids.GenerateTestID() mockState := statemock.NewState(ctrl) diff --git a/vms/avm/network/network_test.go b/vms/avm/network/network_test.go index 1e1065b1676f..318b29674c67 100644 --- a/vms/avm/network/network_test.go +++ b/vms/avm/network/network_test.go @@ -9,6 +9,7 @@ import ( "testing" "time" + "github.com/ava-labs/avalanchego/vms/components/avax" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" @@ -22,7 +23,6 @@ import ( "github.com/ava-labs/avalanchego/vms/avm/block/executor/executormock" "github.com/ava-labs/avalanchego/vms/avm/fxs" "github.com/ava-labs/avalanchego/vms/avm/txs" - "github.com/ava-labs/avalanchego/vms/avm/txs/mempool/mempoolmock" "github.com/ava-labs/avalanchego/vms/nftfx" "github.com/ava-labs/avalanchego/vms/propertyfx" "github.com/ava-labs/avalanchego/vms/secp256k1fx" @@ -57,77 +57,134 @@ var ( func TestNetworkIssueTxFromRPC(t *testing.T) { type test struct { name string - mempoolFunc func(*gomock.Controller) xmempool.Mempool + mempool xmempool.Mempool txVerifierFunc func(*gomock.Controller) TxVerifier appSenderFunc func(*gomock.Controller) common.AppSender + tx *txs.Tx expectedErr error } tests := []test{ { name: "mempool has transaction", - mempoolFunc: func(ctrl *gomock.Controller) xmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Get(gomock.Any()).Return(nil, true) + mempool: func() xmempool.Mempool { + mempool, err := xmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + require.NoError(t, mempool.Add(&txs.Tx{Unsigned: &txs.BaseTx{}})) return mempool - }, + }(), + tx: &txs.Tx{Unsigned: &txs.BaseTx{}}, expectedErr: mempool.ErrDuplicateTx, }, { name: "transaction marked as dropped in mempool", - mempoolFunc: func(ctrl *gomock.Controller) xmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Get(gomock.Any()).Return(nil, false) - mempool.EXPECT().GetDropReason(gomock.Any()).Return(errTest) + mempool: func() xmempool.Mempool { + mempool, err := xmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + mempool.MarkDropped(ids.Empty, errTest) return mempool - }, + }(), + tx: &txs.Tx{Unsigned: &txs.BaseTx{}}, expectedErr: errTest, }, { - name: "transaction invalid", - mempoolFunc: func(ctrl *gomock.Controller) xmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Get(gomock.Any()).Return(nil, false) - mempool.EXPECT().GetDropReason(gomock.Any()).Return(nil) - mempool.EXPECT().MarkDropped(gomock.Any(), gomock.Any()) + name: "tx too big", + mempool: func() xmempool.Mempool { + mempool, err := xmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return mempool - }, + }(), txVerifierFunc: func(ctrl *gomock.Controller) TxVerifier { txVerifier := executormock.NewManager(ctrl) - txVerifier.EXPECT().VerifyTx(gomock.Any()).Return(errTest) + txVerifier.EXPECT().VerifyTx(gomock.Any()).Return(nil) return txVerifier }, - expectedErr: errTest, + tx: func() *txs.Tx { + tx := &txs.Tx{Unsigned: &txs.BaseTx{}} + bytes := make([]byte, mempool.MaxTxSize+1) + tx.SetBytes(bytes, bytes) + return tx + }(), + expectedErr: mempool.ErrTxTooLarge, }, { - name: "can't add transaction to mempool", - mempoolFunc: func(ctrl *gomock.Controller) xmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Get(gomock.Any()).Return(nil, false) - mempool.EXPECT().GetDropReason(gomock.Any()).Return(nil) - mempool.EXPECT().Add(gomock.Any()).Return(errTest) - mempool.EXPECT().MarkDropped(gomock.Any(), gomock.Any()) + name: "tx conflicts", + mempool: func() xmempool.Mempool { + mempool, err := xmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + + tx := &txs.Tx{ + Unsigned: &txs.BaseTx{ + BaseTx: avax.BaseTx{ + Ins: []*avax.TransferableInput{ + { + UTXOID: avax.UTXOID{}, + }, + }, + }, + }, + } + + require.NoError(t, mempool.Add(tx)) return mempool + }(), + txVerifierFunc: func(ctrl *gomock.Controller) TxVerifier { + txVerifier := executormock.NewManager(ctrl) + txVerifier.EXPECT().VerifyTx(gomock.Any()).Return(nil) + return txVerifier }, + tx: func() *txs.Tx { + tx := &txs.Tx{ + Unsigned: &txs.BaseTx{ + BaseTx: avax.BaseTx{ + Ins: []*avax.TransferableInput{ + { + UTXOID: avax.UTXOID{}, + }, + }, + }, + }, + TxID: ids.ID{1}, + } + return tx + }(), + expectedErr: mempool.ErrConflictsWithOtherTx, + }, + { + name: "mempool full", + mempool: func() xmempool.Mempool { + m, err := xmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + + for i := 0; i < 1024; i++ { + tx := &txs.Tx{Unsigned: &txs.BaseTx{}} + bytes := make([]byte, mempool.MaxTxSize) + tx.SetBytes(bytes, bytes) + tx.TxID = ids.GenerateTestID() + require.NoError(t, m.Add(tx)) + } + + return m + }(), txVerifierFunc: func(ctrl *gomock.Controller) TxVerifier { txVerifier := executormock.NewManager(ctrl) txVerifier.EXPECT().VerifyTx(gomock.Any()).Return(nil) return txVerifier }, - expectedErr: errTest, + tx: func() *txs.Tx { + tx := &txs.Tx{Unsigned: &txs.BaseTx{BaseTx: avax.BaseTx{}}} + tx.SetBytes([]byte{1, 2, 3}, []byte{1, 2, 3}) + return tx + }(), + expectedErr: mempool.ErrMempoolFull, }, { name: "happy path", - mempoolFunc: func(ctrl *gomock.Controller) xmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Get(gomock.Any()).Return(nil, false) - mempool.EXPECT().GetDropReason(gomock.Any()).Return(nil) - mempool.EXPECT().Add(gomock.Any()).Return(nil) - mempool.EXPECT().Len().Return(0) - mempool.EXPECT().RequestBuildBlock() - mempool.EXPECT().Get(gomock.Any()).Return(nil, true).Times(2) + mempool: func() xmempool.Mempool { + mempool, err := xmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return mempool - }, + }(), txVerifierFunc: func(ctrl *gomock.Controller) TxVerifier { txVerifier := executormock.NewManager(ctrl) txVerifier.EXPECT().VerifyTx(gomock.Any()).Return(nil) @@ -138,6 +195,7 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { appSender.EXPECT().SendAppGossip(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) return appSender }, + tx: &txs.Tx{Unsigned: &txs.BaseTx{}}, expectedErr: nil, }, } @@ -156,13 +214,6 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { ) require.NoError(err) - mempoolFunc := func(ctrl *gomock.Controller) xmempool.Mempool { - return mempoolmock.NewMempool(ctrl) - } - if tt.mempoolFunc != nil { - mempoolFunc = tt.mempoolFunc - } - txVerifierFunc := func(ctrl *gomock.Controller) TxVerifier { return executormock.NewManager(ctrl) } @@ -191,13 +242,13 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { }, parser, txVerifierFunc(ctrl), - mempoolFunc(ctrl), + tt.mempool, appSenderFunc(ctrl), prometheus.NewRegistry(), testConfig, ) require.NoError(err) - err = n.IssueTxFromRPC(&txs.Tx{}) + err = n.IssueTxFromRPC(tt.tx) require.ErrorIs(err, tt.expectedErr) require.NoError(n.txPushGossiper.Gossip(context.Background())) @@ -208,7 +259,7 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { func TestNetworkIssueTxFromRPCWithoutVerification(t *testing.T) { type test struct { name string - mempoolFunc func(*gomock.Controller) xmempool.Mempool + mempool xmempool.Mempool appSenderFunc func(*gomock.Controller) common.AppSender expectedErr error } @@ -216,24 +267,20 @@ func TestNetworkIssueTxFromRPCWithoutVerification(t *testing.T) { tests := []test{ { name: "can't add transaction to mempool", - mempoolFunc: func(ctrl *gomock.Controller) xmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Add(gomock.Any()).Return(errTest) - mempool.EXPECT().MarkDropped(gomock.Any(), gomock.Any()) + mempool: func() xmempool.Mempool { + mempool, err := xmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return mempool - }, + }(), expectedErr: errTest, }, { name: "happy path", - mempoolFunc: func(ctrl *gomock.Controller) xmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Get(gomock.Any()).Return(nil, true).Times(2) - mempool.EXPECT().Add(gomock.Any()).Return(nil) - mempool.EXPECT().Len().Return(0) - mempool.EXPECT().RequestBuildBlock() + mempool: func() xmempool.Mempool { + mempool, err := xmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return mempool - }, + }(), appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { appSender := commonmock.NewSender(ctrl) appSender.EXPECT().SendAppGossip(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) @@ -257,13 +304,6 @@ func TestNetworkIssueTxFromRPCWithoutVerification(t *testing.T) { ) require.NoError(err) - mempoolFunc := func(ctrl *gomock.Controller) xmempool.Mempool { - return mempoolmock.NewMempool(ctrl) - } - if tt.mempoolFunc != nil { - mempoolFunc = tt.mempoolFunc - } - appSenderFunc := func(ctrl *gomock.Controller) common.AppSender { return commonmock.NewSender(ctrl) } @@ -285,7 +325,7 @@ func TestNetworkIssueTxFromRPCWithoutVerification(t *testing.T) { }, parser, executormock.NewManager(ctrl), // Should never verify a tx - mempoolFunc(ctrl), + tt.mempool, appSenderFunc(ctrl), prometheus.NewRegistry(), testConfig, diff --git a/vms/avm/txs/mempool/mempoolmock/mempool.go b/vms/avm/txs/mempool/mempoolmock/mempool.go deleted file mode 100644 index 8e061855dfb8..000000000000 --- a/vms/avm/txs/mempool/mempoolmock/mempool.go +++ /dev/null @@ -1,166 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: github.com/ava-labs/avalanchego/vms/avm/txs/mempool (interfaces: Mempool) -// -// Generated by this command: -// -// mockgen -package=mempoolmock -destination=mempoolmock/mempool.go -mock_names=Mempool=Mempool . Mempool -// - -// Package mempoolmock is a generated GoMock package. -package mempoolmock - -import ( - reflect "reflect" - - ids "github.com/ava-labs/avalanchego/ids" - txs "github.com/ava-labs/avalanchego/vms/avm/txs" - gomock "go.uber.org/mock/gomock" -) - -// Mempool is a mock of Mempool interface. -type Mempool struct { - ctrl *gomock.Controller - recorder *MempoolMockRecorder - isgomock struct{} -} - -// MempoolMockRecorder is the mock recorder for Mempool. -type MempoolMockRecorder struct { - mock *Mempool -} - -// NewMempool creates a new mock instance. -func NewMempool(ctrl *gomock.Controller) *Mempool { - mock := &Mempool{ctrl: ctrl} - mock.recorder = &MempoolMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *Mempool) EXPECT() *MempoolMockRecorder { - return m.recorder -} - -// Add mocks base method. -func (m *Mempool) Add(tx *txs.Tx) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Add", tx) - ret0, _ := ret[0].(error) - return ret0 -} - -// Add indicates an expected call of Add. -func (mr *MempoolMockRecorder) Add(tx any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Add", reflect.TypeOf((*Mempool)(nil).Add), tx) -} - -// Get mocks base method. -func (m *Mempool) Get(txID ids.ID) (*txs.Tx, bool) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Get", txID) - ret0, _ := ret[0].(*txs.Tx) - ret1, _ := ret[1].(bool) - return ret0, ret1 -} - -// Get indicates an expected call of Get. -func (mr *MempoolMockRecorder) Get(txID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*Mempool)(nil).Get), txID) -} - -// GetDropReason mocks base method. -func (m *Mempool) GetDropReason(txID ids.ID) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetDropReason", txID) - ret0, _ := ret[0].(error) - return ret0 -} - -// GetDropReason indicates an expected call of GetDropReason. -func (mr *MempoolMockRecorder) GetDropReason(txID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDropReason", reflect.TypeOf((*Mempool)(nil).GetDropReason), txID) -} - -// Iterate mocks base method. -func (m *Mempool) Iterate(f func(*txs.Tx) bool) { - m.ctrl.T.Helper() - m.ctrl.Call(m, "Iterate", f) -} - -// Iterate indicates an expected call of Iterate. -func (mr *MempoolMockRecorder) Iterate(f any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Iterate", reflect.TypeOf((*Mempool)(nil).Iterate), f) -} - -// Len mocks base method. -func (m *Mempool) Len() int { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Len") - ret0, _ := ret[0].(int) - return ret0 -} - -// Len indicates an expected call of Len. -func (mr *MempoolMockRecorder) Len() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Len", reflect.TypeOf((*Mempool)(nil).Len)) -} - -// MarkDropped mocks base method. -func (m *Mempool) MarkDropped(txID ids.ID, reason error) { - m.ctrl.T.Helper() - m.ctrl.Call(m, "MarkDropped", txID, reason) -} - -// MarkDropped indicates an expected call of MarkDropped. -func (mr *MempoolMockRecorder) MarkDropped(txID, reason any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MarkDropped", reflect.TypeOf((*Mempool)(nil).MarkDropped), txID, reason) -} - -// Peek mocks base method. -func (m *Mempool) Peek() (*txs.Tx, bool) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Peek") - ret0, _ := ret[0].(*txs.Tx) - ret1, _ := ret[1].(bool) - return ret0, ret1 -} - -// Peek indicates an expected call of Peek. -func (mr *MempoolMockRecorder) Peek() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Peek", reflect.TypeOf((*Mempool)(nil).Peek)) -} - -// Remove mocks base method. -func (m *Mempool) Remove(txs ...*txs.Tx) { - m.ctrl.T.Helper() - varargs := []any{} - for _, a := range txs { - varargs = append(varargs, a) - } - m.ctrl.Call(m, "Remove", varargs...) -} - -// Remove indicates an expected call of Remove. -func (mr *MempoolMockRecorder) Remove(txs ...any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Remove", reflect.TypeOf((*Mempool)(nil).Remove), txs...) -} - -// RequestBuildBlock mocks base method. -func (m *Mempool) RequestBuildBlock() { - m.ctrl.T.Helper() - m.ctrl.Call(m, "RequestBuildBlock") -} - -// RequestBuildBlock indicates an expected call of RequestBuildBlock. -func (mr *MempoolMockRecorder) RequestBuildBlock() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RequestBuildBlock", reflect.TypeOf((*Mempool)(nil).RequestBuildBlock)) -} diff --git a/vms/platformvm/block/executor/rejector_test.go b/vms/platformvm/block/executor/rejector_test.go index 926a139399a6..a50132c09b7b 100644 --- a/vms/platformvm/block/executor/rejector_test.go +++ b/vms/platformvm/block/executor/rejector_test.go @@ -7,6 +7,8 @@ import ( "testing" "time" + "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool" + "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" @@ -17,7 +19,6 @@ import ( "github.com/ava-labs/avalanchego/vms/platformvm/block" "github.com/ava-labs/avalanchego/vms/platformvm/state" "github.com/ava-labs/avalanchego/vms/platformvm/txs" - "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool/mempoolmock" "github.com/ava-labs/avalanchego/vms/secp256k1fx" ) @@ -119,7 +120,8 @@ func TestRejectBlock(t *testing.T) { blk, err := tt.newBlockFunc() require.NoError(err) - mempool := mempoolmock.NewMempool(ctrl) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(err) state := state.NewMockState(ctrl) blkIDToState := map[ids.ID]*blockState{ blk.Parent(): nil, @@ -137,13 +139,6 @@ func TestRejectBlock(t *testing.T) { addTxsToMempool: true, } - // Set expected calls on dependencies. - for _, tx := range blk.Txs() { - mempool.EXPECT().Add(tx).Return(nil).Times(1) - } - - mempool.EXPECT().RequestBuildBlock(false).Times(1) - require.NoError(tt.rejectFunc(rejector, blk)) // Make sure block and its parent are removed from the state map. require.NotContains(rejector.blkIDToState, blk.ID()) diff --git a/vms/platformvm/block/executor/verifier_test.go b/vms/platformvm/block/executor/verifier_test.go index b278a5845a49..94ef45cce28e 100644 --- a/vms/platformvm/block/executor/verifier_test.go +++ b/vms/platformvm/block/executor/verifier_test.go @@ -44,7 +44,6 @@ import ( "github.com/ava-labs/avalanchego/vms/platformvm/txs" "github.com/ava-labs/avalanchego/vms/platformvm/txs/executor" "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool" - "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool/mempoolmock" "github.com/ava-labs/avalanchego/vms/platformvm/txs/txstest" "github.com/ava-labs/avalanchego/vms/platformvm/utxo" "github.com/ava-labs/avalanchego/vms/secp256k1fx" @@ -451,7 +450,8 @@ func TestVerifierVisitCommitBlock(t *testing.T) { // Create mocked dependencies. s := state.NewMockState(ctrl) - mempool := mempoolmock.NewMempool(ctrl) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(err) parentID := ids.GenerateTestID() parentStatelessBlk := block.NewMockBlock(ctrl) parentOnDecisionState := state.NewMockDiff(ctrl) @@ -524,7 +524,8 @@ func TestVerifierVisitAbortBlock(t *testing.T) { // Create mocked dependencies. s := state.NewMockState(ctrl) - mempool := mempoolmock.NewMempool(ctrl) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(err) parentID := ids.GenerateTestID() parentStatelessBlk := block.NewMockBlock(ctrl) parentOnDecisionState := state.NewMockDiff(ctrl) @@ -598,7 +599,8 @@ func TestVerifyUnverifiedParent(t *testing.T) { // Create mocked dependencies. s := state.NewMockState(ctrl) - mempool := mempoolmock.NewMempool(ctrl) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(err) parentID := ids.GenerateTestID() backend := &backend{ @@ -668,7 +670,8 @@ func TestBanffAbortBlockTimestampChecks(t *testing.T) { // Create mocked dependencies. s := state.NewMockState(ctrl) - mempool := mempoolmock.NewMempool(ctrl) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(err) parentID := ids.GenerateTestID() parentStatelessBlk := block.NewMockBlock(ctrl) parentHeight := uint64(1) @@ -768,7 +771,8 @@ func TestBanffCommitBlockTimestampChecks(t *testing.T) { // Create mocked dependencies. s := state.NewMockState(ctrl) - mempool := mempoolmock.NewMempool(ctrl) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(err) parentID := ids.GenerateTestID() parentStatelessBlk := block.NewMockBlock(ctrl) parentHeight := uint64(1) @@ -836,7 +840,8 @@ func TestVerifierVisitApricotStandardBlockWithProposalBlockParent(t *testing.T) // Create mocked dependencies. s := state.NewMockState(ctrl) - mempool := mempoolmock.NewMempool(ctrl) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(err) parentID := ids.GenerateTestID() parentStatelessBlk := block.NewMockBlock(ctrl) parentOnCommitState := state.NewMockDiff(ctrl) @@ -892,7 +897,8 @@ func TestVerifierVisitBanffStandardBlockWithProposalBlockParent(t *testing.T) { // Create mocked dependencies. s := state.NewMockState(ctrl) - mempool := mempoolmock.NewMempool(ctrl) + mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + require.NoError(err) parentID := ids.GenerateTestID() parentStatelessBlk := block.NewMockBlock(ctrl) parentTime := time.Now() diff --git a/vms/platformvm/network/gossip_test.go b/vms/platformvm/network/gossip_test.go index a347c6e332c3..17b41e1c633b 100644 --- a/vms/platformvm/network/gossip_test.go +++ b/vms/platformvm/network/gossip_test.go @@ -7,15 +7,13 @@ import ( "errors" "testing" - "github.com/prometheus/client_golang/prometheus" - "github.com/stretchr/testify/require" - "go.uber.org/mock/gomock" - "github.com/ava-labs/avalanchego/ids" "github.com/ava-labs/avalanchego/utils/logging" "github.com/ava-labs/avalanchego/vms/platformvm/txs" - "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool/mempoolmock" + pmempool "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool" "github.com/ava-labs/avalanchego/vms/txs/mempool" + "github.com/prometheus/client_golang/prometheus" + "github.com/stretchr/testify/require" ) var errFoo = errors.New("foo") @@ -23,20 +21,16 @@ var errFoo = errors.New("foo") // Add should error if verification errors func TestGossipMempoolAddVerificationError(t *testing.T) { require := require.New(t) - ctrl := gomock.NewController(t) txID := ids.GenerateTestID() tx := &txs.Tx{ TxID: txID, } - mempool := mempoolmock.NewMempool(ctrl) + mempool, err := pmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(err) txVerifier := testTxVerifier{err: errFoo} - mempool.EXPECT().Get(txID).Return(nil, false) - mempool.EXPECT().GetDropReason(txID).Return(nil) - mempool.EXPECT().MarkDropped(txID, errFoo) - gossipMempool, err := newGossipMempool( mempool, prometheus.NewRegistry(), @@ -53,55 +47,55 @@ func TestGossipMempoolAddVerificationError(t *testing.T) { require.False(gossipMempool.bloom.Has(tx)) } -// Add should error if adding to the mempool errors -func TestGossipMempoolAddError(t *testing.T) { - require := require.New(t) - ctrl := gomock.NewController(t) - - txID := ids.GenerateTestID() - tx := &txs.Tx{ - TxID: txID, - } - - txVerifier := testTxVerifier{} - mempool := mempoolmock.NewMempool(ctrl) - - mempool.EXPECT().Get(txID).Return(nil, false) - mempool.EXPECT().GetDropReason(txID).Return(nil) - mempool.EXPECT().Add(tx).Return(errFoo) - mempool.EXPECT().MarkDropped(txID, errFoo).AnyTimes() - - gossipMempool, err := newGossipMempool( - mempool, - prometheus.NewRegistry(), - logging.NoLog{}, - txVerifier, - testConfig.ExpectedBloomFilterElements, - testConfig.ExpectedBloomFilterFalsePositiveProbability, - testConfig.MaxBloomFilterFalsePositiveProbability, - ) - require.NoError(err) - - err = gossipMempool.Add(tx) - require.ErrorIs(err, errFoo) - require.False(gossipMempool.bloom.Has(tx)) -} +//// Add should error if adding to the mempool errors +//func TestGossipMempoolAddError(t *testing.T) { +// require := require.New(t) +// +// txID := ids.GenerateTestID() +// tx := &txs.Tx{ +// TxID: txID, +// } +// +// txVerifier := testTxVerifier{} +// mempool, err := mempool.New("", prometheus.NewRegistry(), nil) +// require.NoError(err) +// +// mempool.EXPECT().Get(txID).Return(nil, false) +// mempool.EXPECT().GetDropReason(txID).Return(nil) +// mempool.EXPECT().Add(tx).Return(errFoo) +// mempool.EXPECT().MarkDropped(txID, errFoo).AnyTimes() +// +// gossipMempool, err := newGossipMempool( +// mempool, +// prometheus.NewRegistry(), +// logging.NoLog{}, +// txVerifier, +// testConfig.ExpectedBloomFilterElements, +// testConfig.ExpectedBloomFilterFalsePositiveProbability, +// testConfig.MaxBloomFilterFalsePositiveProbability, +// ) +// require.NoError(err) +// +// err = gossipMempool.Add(tx) +// require.ErrorIs(err, errFoo) +// require.False(gossipMempool.bloom.Has(tx)) +//} // Adding a duplicate to the mempool should return an error func TestMempoolDuplicate(t *testing.T) { require := require.New(t) - ctrl := gomock.NewController(t) - testMempool := mempoolmock.NewMempool(ctrl) + testMempool, err := pmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(err) txVerifier := testTxVerifier{} txID := ids.GenerateTestID() tx := &txs.Tx{ - TxID: txID, + Unsigned: &txs.BaseTx{}, + TxID: txID, } - testMempool.EXPECT().Get(txID).Return(tx, true) - + require.NoError(testMempool.Add(tx)) gossipMempool, err := newGossipMempool( testMempool, prometheus.NewRegistry(), @@ -121,21 +115,16 @@ func TestMempoolDuplicate(t *testing.T) { // Adding a tx to the mempool should add it to the bloom filter func TestGossipAddBloomFilter(t *testing.T) { require := require.New(t) - ctrl := gomock.NewController(t) txID := ids.GenerateTestID() tx := &txs.Tx{ - TxID: txID, + Unsigned: &txs.BaseTx{}, + TxID: txID, } txVerifier := testTxVerifier{} - mempool := mempoolmock.NewMempool(ctrl) - - mempool.EXPECT().Get(txID).Return(nil, false) - mempool.EXPECT().GetDropReason(txID).Return(nil) - mempool.EXPECT().Add(tx).Return(nil) - mempool.EXPECT().Len().Return(0) - mempool.EXPECT().RequestBuildBlock(false) + mempool, err := pmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(err) gossipMempool, err := newGossipMempool( mempool, diff --git a/vms/platformvm/network/network_test.go b/vms/platformvm/network/network_test.go index d3253a39b7c9..81c9cf8adcac 100644 --- a/vms/platformvm/network/network_test.go +++ b/vms/platformvm/network/network_test.go @@ -19,7 +19,6 @@ import ( "github.com/ava-labs/avalanchego/snow/snowtest" "github.com/ava-labs/avalanchego/vms/platformvm/config" "github.com/ava-labs/avalanchego/vms/platformvm/txs" - "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool/mempoolmock" "github.com/ava-labs/avalanchego/vms/txs/mempool" pmempool "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool" @@ -59,11 +58,11 @@ func (t testTxVerifier) VerifyTx(*txs.Tx) error { } func TestNetworkIssueTxFromRPC(t *testing.T) { - tx := &txs.Tx{} + tx := &txs.Tx{Unsigned: &txs.BaseTx{}} type test struct { name string - mempoolFunc func(*gomock.Controller) pmempool.Mempool + mempool pmempool.Mempool txVerifier testTxVerifier appSenderFunc func(*gomock.Controller) common.AppSender expectedErr error @@ -72,11 +71,12 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { tests := []test{ { name: "mempool has transaction", - mempoolFunc: func(ctrl *gomock.Controller) pmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Get(gomock.Any()).Return(tx, true) + mempool: func() pmempool.Mempool { + mempool, err := pmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + require.NoError(t, mempool.Add(tx)) return mempool - }, + }(), appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { return commonmock.NewSender(ctrl) }, @@ -84,12 +84,12 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { }, { name: "transaction marked as dropped in mempool", - mempoolFunc: func(ctrl *gomock.Controller) pmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Get(gomock.Any()).Return(nil, false) - mempool.EXPECT().GetDropReason(gomock.Any()).Return(errTest) + mempool: func() pmempool.Mempool { + mempool, err := pmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + mempool.MarkDropped(ids.Empty, errTest) return mempool - }, + }(), appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { // Shouldn't gossip the tx return commonmock.NewSender(ctrl) @@ -97,14 +97,12 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { expectedErr: errTest, }, { - name: "transaction invalid", - mempoolFunc: func(ctrl *gomock.Controller) pmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Get(gomock.Any()).Return(nil, false) - mempool.EXPECT().GetDropReason(gomock.Any()).Return(nil) - mempool.EXPECT().MarkDropped(gomock.Any(), gomock.Any()) + name: "tx dropped", + mempool: func() pmempool.Mempool { + mempool, err := pmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return mempool - }, + }(), txVerifier: testTxVerifier{err: errTest}, appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { // Shouldn't gossip the tx @@ -112,34 +110,30 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { }, expectedErr: errTest, }, - { - name: "can't add transaction to mempool", - mempoolFunc: func(ctrl *gomock.Controller) pmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Get(gomock.Any()).Return(nil, false) - mempool.EXPECT().GetDropReason(gomock.Any()).Return(nil) - mempool.EXPECT().Add(gomock.Any()).Return(errTest) - mempool.EXPECT().MarkDropped(gomock.Any(), gomock.Any()) - return mempool - }, - appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { - // Shouldn't gossip the tx - return commonmock.NewSender(ctrl) - }, - expectedErr: errTest, - }, + //{ + // name: "can't add transaction to mempool", + // mempool: func() pmempool.Mempool { + // mempool, err := mempool.New("", prometheus.NewRegistry(), nil) + // require.NoError(t, err) + // mempool.EXPECT().Get(gomock.Any()).Return(nil, false) + // mempool.EXPECT().GetDropReason(gomock.Any()).Return(nil) + // mempool.EXPECT().Add(gomock.Any()).Return(errTest) + // mempool.EXPECT().MarkDropped(gomock.Any(), gomock.Any()) + // return mempool + // }(), + // appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { + // // Shouldn't gossip the tx + // return commonmock.NewSender(ctrl) + // }, + // expectedErr: errTest, + //}, { name: "happy path", - mempoolFunc: func(ctrl *gomock.Controller) pmempool.Mempool { - mempool := mempoolmock.NewMempool(ctrl) - mempool.EXPECT().Get(gomock.Any()).Return(nil, false) - mempool.EXPECT().GetDropReason(gomock.Any()).Return(nil) - mempool.EXPECT().Add(gomock.Any()).Return(nil) - mempool.EXPECT().Len().Return(0) - mempool.EXPECT().RequestBuildBlock(false) - mempool.EXPECT().Get(gomock.Any()).Return(nil, true).Times(2) + mempool: func() pmempool.Mempool { + mempool, err := pmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) return mempool - }, + }(), appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { appSender := commonmock.NewSender(ctrl) appSender.EXPECT().SendAppGossip(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) @@ -161,7 +155,7 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { snowCtx.SubnetID, snowCtx.ValidatorState, tt.txVerifier, - tt.mempoolFunc(ctrl), + tt.mempool, false, tt.appSenderFunc(ctrl), nil, From 69e92e2dd1db347fdf27651c0ef9f67140ef3be4 Mon Sep 17 00:00:00 2001 From: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:27:09 -0500 Subject: [PATCH 2/8] fix imports Signed-off-by: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> --- vms/avm/block/executor/block_test.go | 2 +- vms/avm/network/network_test.go | 2 +- vms/platformvm/block/executor/rejector_test.go | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/vms/avm/block/executor/block_test.go b/vms/avm/block/executor/block_test.go index ed0c5e47b7ef..000409f05cd5 100644 --- a/vms/avm/block/executor/block_test.go +++ b/vms/avm/block/executor/block_test.go @@ -9,7 +9,6 @@ import ( "testing" "time" - "github.com/ava-labs/avalanchego/vms/avm/txs/mempool" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" @@ -29,6 +28,7 @@ import ( "github.com/ava-labs/avalanchego/vms/avm/state/statemock" "github.com/ava-labs/avalanchego/vms/avm/txs" "github.com/ava-labs/avalanchego/vms/avm/txs/executor" + "github.com/ava-labs/avalanchego/vms/avm/txs/mempool" "github.com/ava-labs/avalanchego/vms/avm/txs/txsmock" ) diff --git a/vms/avm/network/network_test.go b/vms/avm/network/network_test.go index 318b29674c67..3ceac5521f76 100644 --- a/vms/avm/network/network_test.go +++ b/vms/avm/network/network_test.go @@ -9,7 +9,6 @@ import ( "testing" "time" - "github.com/ava-labs/avalanchego/vms/components/avax" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" @@ -23,6 +22,7 @@ import ( "github.com/ava-labs/avalanchego/vms/avm/block/executor/executormock" "github.com/ava-labs/avalanchego/vms/avm/fxs" "github.com/ava-labs/avalanchego/vms/avm/txs" + "github.com/ava-labs/avalanchego/vms/components/avax" "github.com/ava-labs/avalanchego/vms/nftfx" "github.com/ava-labs/avalanchego/vms/propertyfx" "github.com/ava-labs/avalanchego/vms/secp256k1fx" diff --git a/vms/platformvm/block/executor/rejector_test.go b/vms/platformvm/block/executor/rejector_test.go index a50132c09b7b..70696469d80f 100644 --- a/vms/platformvm/block/executor/rejector_test.go +++ b/vms/platformvm/block/executor/rejector_test.go @@ -7,7 +7,6 @@ import ( "testing" "time" - "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" "go.uber.org/mock/gomock" @@ -19,6 +18,7 @@ import ( "github.com/ava-labs/avalanchego/vms/platformvm/block" "github.com/ava-labs/avalanchego/vms/platformvm/state" "github.com/ava-labs/avalanchego/vms/platformvm/txs" + "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool" "github.com/ava-labs/avalanchego/vms/secp256k1fx" ) From a0279fa9ab9471344de59cba336606b397919343 Mon Sep 17 00:00:00 2001 From: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:39:50 -0500 Subject: [PATCH 3/8] nit Signed-off-by: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> --- vms/platformvm/network/gossip_test.go | 34 ------- vms/platformvm/network/network_test.go | 117 ++++++++++++++++++++----- 2 files changed, 96 insertions(+), 55 deletions(-) diff --git a/vms/platformvm/network/gossip_test.go b/vms/platformvm/network/gossip_test.go index 17b41e1c633b..8ee93a70236f 100644 --- a/vms/platformvm/network/gossip_test.go +++ b/vms/platformvm/network/gossip_test.go @@ -47,40 +47,6 @@ func TestGossipMempoolAddVerificationError(t *testing.T) { require.False(gossipMempool.bloom.Has(tx)) } -//// Add should error if adding to the mempool errors -//func TestGossipMempoolAddError(t *testing.T) { -// require := require.New(t) -// -// txID := ids.GenerateTestID() -// tx := &txs.Tx{ -// TxID: txID, -// } -// -// txVerifier := testTxVerifier{} -// mempool, err := mempool.New("", prometheus.NewRegistry(), nil) -// require.NoError(err) -// -// mempool.EXPECT().Get(txID).Return(nil, false) -// mempool.EXPECT().GetDropReason(txID).Return(nil) -// mempool.EXPECT().Add(tx).Return(errFoo) -// mempool.EXPECT().MarkDropped(txID, errFoo).AnyTimes() -// -// gossipMempool, err := newGossipMempool( -// mempool, -// prometheus.NewRegistry(), -// logging.NoLog{}, -// txVerifier, -// testConfig.ExpectedBloomFilterElements, -// testConfig.ExpectedBloomFilterFalsePositiveProbability, -// testConfig.MaxBloomFilterFalsePositiveProbability, -// ) -// require.NoError(err) -// -// err = gossipMempool.Add(tx) -// require.ErrorIs(err, errFoo) -// require.False(gossipMempool.bloom.Has(tx)) -//} - // Adding a duplicate to the mempool should return an error func TestMempoolDuplicate(t *testing.T) { require := require.New(t) diff --git a/vms/platformvm/network/network_test.go b/vms/platformvm/network/network_test.go index 81c9cf8adcac..b7354a3663e6 100644 --- a/vms/platformvm/network/network_test.go +++ b/vms/platformvm/network/network_test.go @@ -17,6 +17,7 @@ import ( "github.com/ava-labs/avalanchego/snow/engine/common" "github.com/ava-labs/avalanchego/snow/engine/common/commonmock" "github.com/ava-labs/avalanchego/snow/snowtest" + "github.com/ava-labs/avalanchego/vms/components/avax" "github.com/ava-labs/avalanchego/vms/platformvm/config" "github.com/ava-labs/avalanchego/vms/platformvm/txs" "github.com/ava-labs/avalanchego/vms/txs/mempool" @@ -58,13 +59,12 @@ func (t testTxVerifier) VerifyTx(*txs.Tx) error { } func TestNetworkIssueTxFromRPC(t *testing.T) { - tx := &txs.Tx{Unsigned: &txs.BaseTx{}} - type test struct { name string mempool pmempool.Mempool txVerifier testTxVerifier appSenderFunc func(*gomock.Controller) common.AppSender + tx *txs.Tx expectedErr error } @@ -74,12 +74,13 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { mempool: func() pmempool.Mempool { mempool, err := pmempool.New("", prometheus.NewRegistry(), nil) require.NoError(t, err) - require.NoError(t, mempool.Add(tx)) + require.NoError(t, mempool.Add(&txs.Tx{Unsigned: &txs.BaseTx{}})) return mempool }(), appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { return commonmock.NewSender(ctrl) }, + tx: &txs.Tx{Unsigned: &txs.BaseTx{}}, expectedErr: mempool.ErrDuplicateTx, }, { @@ -94,6 +95,7 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { // Shouldn't gossip the tx return commonmock.NewSender(ctrl) }, + tx: &txs.Tx{Unsigned: &txs.BaseTx{}}, expectedErr: errTest, }, { @@ -108,25 +110,97 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { // Shouldn't gossip the tx return commonmock.NewSender(ctrl) }, + tx: &txs.Tx{Unsigned: &txs.BaseTx{}}, expectedErr: errTest, }, - //{ - // name: "can't add transaction to mempool", - // mempool: func() pmempool.Mempool { - // mempool, err := mempool.New("", prometheus.NewRegistry(), nil) - // require.NoError(t, err) - // mempool.EXPECT().Get(gomock.Any()).Return(nil, false) - // mempool.EXPECT().GetDropReason(gomock.Any()).Return(nil) - // mempool.EXPECT().Add(gomock.Any()).Return(errTest) - // mempool.EXPECT().MarkDropped(gomock.Any(), gomock.Any()) - // return mempool - // }(), - // appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { - // // Shouldn't gossip the tx - // return commonmock.NewSender(ctrl) - // }, - // expectedErr: errTest, - //}, + { + name: "tx too big", + mempool: func() pmempool.Mempool { + mempool, err := pmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + return mempool + }(), + appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { + // Shouldn't gossip the tx + return commonmock.NewSender(ctrl) + }, + tx: func() *txs.Tx { + tx := &txs.Tx{Unsigned: &txs.BaseTx{}} + bytes := make([]byte, mempool.MaxTxSize+1) + tx.SetBytes(bytes, bytes) + return tx + }(), + expectedErr: mempool.ErrTxTooLarge, + }, + { + name: "tx conflicts", + mempool: func() pmempool.Mempool { + mempool, err := pmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + + tx := &txs.Tx{ + Unsigned: &txs.BaseTx{ + BaseTx: avax.BaseTx{ + Ins: []*avax.TransferableInput{ + { + UTXOID: avax.UTXOID{}, + }, + }, + }, + }, + } + + require.NoError(t, mempool.Add(tx)) + return mempool + }(), + appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { + // Shouldn't gossip the tx + return commonmock.NewSender(ctrl) + }, + tx: func() *txs.Tx { + tx := &txs.Tx{ + Unsigned: &txs.BaseTx{ + BaseTx: avax.BaseTx{ + Ins: []*avax.TransferableInput{ + { + UTXOID: avax.UTXOID{}, + }, + }, + }, + }, + TxID: ids.ID{1}, + } + return tx + }(), + expectedErr: mempool.ErrConflictsWithOtherTx, + }, + { + name: "mempool full", + mempool: func() pmempool.Mempool { + m, err := pmempool.New("", prometheus.NewRegistry(), nil) + require.NoError(t, err) + + for i := 0; i < 1024; i++ { + tx := &txs.Tx{Unsigned: &txs.BaseTx{}} + bytes := make([]byte, mempool.MaxTxSize) + tx.SetBytes(bytes, bytes) + tx.TxID = ids.GenerateTestID() + require.NoError(t, m.Add(tx)) + } + + return m + }(), + appSenderFunc: func(ctrl *gomock.Controller) common.AppSender { + // Shouldn't gossip the tx + return commonmock.NewSender(ctrl) + }, + tx: func() *txs.Tx { + tx := &txs.Tx{Unsigned: &txs.BaseTx{BaseTx: avax.BaseTx{}}} + tx.SetBytes([]byte{1, 2, 3}, []byte{1, 2, 3}) + return tx + }(), + expectedErr: mempool.ErrMempoolFull, + }, { name: "happy path", mempool: func() pmempool.Mempool { @@ -139,6 +213,7 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { appSender.EXPECT().SendAppGossip(gomock.Any(), gomock.Any(), gomock.Any()).Return(nil) return appSender }, + tx: &txs.Tx{Unsigned: &txs.BaseTx{}}, expectedErr: nil, }, } @@ -166,7 +241,7 @@ func TestNetworkIssueTxFromRPC(t *testing.T) { ) require.NoError(err) - err = n.IssueTxFromRPC(tx) + err = n.IssueTxFromRPC(tt.tx) require.ErrorIs(err, tt.expectedErr) require.NoError(n.txPushGossiper.Gossip(context.Background())) From 8c0061281526896e7124259af28ff875c8219d73 Mon Sep 17 00:00:00 2001 From: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:59:29 -0500 Subject: [PATCH 4/8] nit Signed-off-by: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> --- vms/avm/block/executor/block_test.go | 1 + vms/avm/network/network_test.go | 11 +---------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/vms/avm/block/executor/block_test.go b/vms/avm/block/executor/block_test.go index 000409f05cd5..7a34c7187882 100644 --- a/vms/avm/block/executor/block_test.go +++ b/vms/avm/block/executor/block_test.go @@ -887,6 +887,7 @@ func TestBlockReject(t *testing.T) { unsignedTx2 := txsmock.NewUnsignedTx(ctrl) unsignedTx2.EXPECT().SetBytes(gomock.Any()) unsignedTx2.EXPECT().Visit(gomock.Any()).Return(nil).AnyTimes() // Passes verification and execution + unsignedTx2.EXPECT().InputIDs().Return(nil) // Give each tx a unique ID tx1 := &txs.Tx{Unsigned: unsignedTx1} diff --git a/vms/avm/network/network_test.go b/vms/avm/network/network_test.go index 3ceac5521f76..1e3635d0b68f 100644 --- a/vms/avm/network/network_test.go +++ b/vms/avm/network/network_test.go @@ -265,15 +265,6 @@ func TestNetworkIssueTxFromRPCWithoutVerification(t *testing.T) { } tests := []test{ - { - name: "can't add transaction to mempool", - mempool: func() xmempool.Mempool { - mempool, err := xmempool.New("", prometheus.NewRegistry(), nil) - require.NoError(t, err) - return mempool - }(), - expectedErr: errTest, - }, { name: "happy path", mempool: func() xmempool.Mempool { @@ -331,7 +322,7 @@ func TestNetworkIssueTxFromRPCWithoutVerification(t *testing.T) { testConfig, ) require.NoError(err) - err = n.IssueTxFromRPCWithoutVerification(&txs.Tx{}) + err = n.IssueTxFromRPCWithoutVerification(&txs.Tx{Unsigned: &txs.BaseTx{}}) require.ErrorIs(err, tt.expectedErr) require.NoError(n.txPushGossiper.Gossip(context.Background())) From 1c03e2bc04b9553b091941bc8484db8f16d73d1e Mon Sep 17 00:00:00 2001 From: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> Date: Thu, 30 Jan 2025 17:05:37 -0500 Subject: [PATCH 5/8] lint Signed-off-by: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> --- vms/platformvm/network/gossip_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vms/platformvm/network/gossip_test.go b/vms/platformvm/network/gossip_test.go index 8ee93a70236f..da75966d91cf 100644 --- a/vms/platformvm/network/gossip_test.go +++ b/vms/platformvm/network/gossip_test.go @@ -10,10 +10,11 @@ import ( "github.com/ava-labs/avalanchego/ids" "github.com/ava-labs/avalanchego/utils/logging" "github.com/ava-labs/avalanchego/vms/platformvm/txs" - pmempool "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool" "github.com/ava-labs/avalanchego/vms/txs/mempool" "github.com/prometheus/client_golang/prometheus" "github.com/stretchr/testify/require" + + pmempool "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool" ) var errFoo = errors.New("foo") From 2fb656f8e1d8f2165be908dd6ee2495d746da343 Mon Sep 17 00:00:00 2001 From: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> Date: Thu, 30 Jan 2025 17:08:02 -0500 Subject: [PATCH 6/8] cleanup Signed-off-by: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> --- vms/avm/txs/mempool/mocks_generate_test.go | 6 - .../txs/mempool/mempoolmock/mempool.go | 166 ------------------ .../txs/mempool/mocks_generate_test.go | 6 - 3 files changed, 178 deletions(-) delete mode 100644 vms/avm/txs/mempool/mocks_generate_test.go delete mode 100644 vms/platformvm/txs/mempool/mempoolmock/mempool.go delete mode 100644 vms/platformvm/txs/mempool/mocks_generate_test.go diff --git a/vms/avm/txs/mempool/mocks_generate_test.go b/vms/avm/txs/mempool/mocks_generate_test.go deleted file mode 100644 index 7390f30c4b5c..000000000000 --- a/vms/avm/txs/mempool/mocks_generate_test.go +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. -// See the file LICENSE for licensing terms. - -package mempool - -//go:generate go run go.uber.org/mock/mockgen -package=${GOPACKAGE}mock -destination=${GOPACKAGE}mock/mempool.go -mock_names=Mempool=Mempool . Mempool diff --git a/vms/platformvm/txs/mempool/mempoolmock/mempool.go b/vms/platformvm/txs/mempool/mempoolmock/mempool.go deleted file mode 100644 index f88c81824b15..000000000000 --- a/vms/platformvm/txs/mempool/mempoolmock/mempool.go +++ /dev/null @@ -1,166 +0,0 @@ -// Code generated by MockGen. DO NOT EDIT. -// Source: github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool (interfaces: Mempool) -// -// Generated by this command: -// -// mockgen -package=mempoolmock -destination=mempoolmock/mempool.go -mock_names=Mempool=Mempool . Mempool -// - -// Package mempoolmock is a generated GoMock package. -package mempoolmock - -import ( - reflect "reflect" - - ids "github.com/ava-labs/avalanchego/ids" - txs "github.com/ava-labs/avalanchego/vms/platformvm/txs" - gomock "go.uber.org/mock/gomock" -) - -// Mempool is a mock of Mempool interface. -type Mempool struct { - ctrl *gomock.Controller - recorder *MempoolMockRecorder - isgomock struct{} -} - -// MempoolMockRecorder is the mock recorder for Mempool. -type MempoolMockRecorder struct { - mock *Mempool -} - -// NewMempool creates a new mock instance. -func NewMempool(ctrl *gomock.Controller) *Mempool { - mock := &Mempool{ctrl: ctrl} - mock.recorder = &MempoolMockRecorder{mock} - return mock -} - -// EXPECT returns an object that allows the caller to indicate expected use. -func (m *Mempool) EXPECT() *MempoolMockRecorder { - return m.recorder -} - -// Add mocks base method. -func (m *Mempool) Add(tx *txs.Tx) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Add", tx) - ret0, _ := ret[0].(error) - return ret0 -} - -// Add indicates an expected call of Add. -func (mr *MempoolMockRecorder) Add(tx any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Add", reflect.TypeOf((*Mempool)(nil).Add), tx) -} - -// Get mocks base method. -func (m *Mempool) Get(txID ids.ID) (*txs.Tx, bool) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Get", txID) - ret0, _ := ret[0].(*txs.Tx) - ret1, _ := ret[1].(bool) - return ret0, ret1 -} - -// Get indicates an expected call of Get. -func (mr *MempoolMockRecorder) Get(txID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Get", reflect.TypeOf((*Mempool)(nil).Get), txID) -} - -// GetDropReason mocks base method. -func (m *Mempool) GetDropReason(txID ids.ID) error { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "GetDropReason", txID) - ret0, _ := ret[0].(error) - return ret0 -} - -// GetDropReason indicates an expected call of GetDropReason. -func (mr *MempoolMockRecorder) GetDropReason(txID any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetDropReason", reflect.TypeOf((*Mempool)(nil).GetDropReason), txID) -} - -// Iterate mocks base method. -func (m *Mempool) Iterate(f func(*txs.Tx) bool) { - m.ctrl.T.Helper() - m.ctrl.Call(m, "Iterate", f) -} - -// Iterate indicates an expected call of Iterate. -func (mr *MempoolMockRecorder) Iterate(f any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Iterate", reflect.TypeOf((*Mempool)(nil).Iterate), f) -} - -// Len mocks base method. -func (m *Mempool) Len() int { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Len") - ret0, _ := ret[0].(int) - return ret0 -} - -// Len indicates an expected call of Len. -func (mr *MempoolMockRecorder) Len() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Len", reflect.TypeOf((*Mempool)(nil).Len)) -} - -// MarkDropped mocks base method. -func (m *Mempool) MarkDropped(txID ids.ID, reason error) { - m.ctrl.T.Helper() - m.ctrl.Call(m, "MarkDropped", txID, reason) -} - -// MarkDropped indicates an expected call of MarkDropped. -func (mr *MempoolMockRecorder) MarkDropped(txID, reason any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "MarkDropped", reflect.TypeOf((*Mempool)(nil).MarkDropped), txID, reason) -} - -// Peek mocks base method. -func (m *Mempool) Peek() (*txs.Tx, bool) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Peek") - ret0, _ := ret[0].(*txs.Tx) - ret1, _ := ret[1].(bool) - return ret0, ret1 -} - -// Peek indicates an expected call of Peek. -func (mr *MempoolMockRecorder) Peek() *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Peek", reflect.TypeOf((*Mempool)(nil).Peek)) -} - -// Remove mocks base method. -func (m *Mempool) Remove(txs ...*txs.Tx) { - m.ctrl.T.Helper() - varargs := []any{} - for _, a := range txs { - varargs = append(varargs, a) - } - m.ctrl.Call(m, "Remove", varargs...) -} - -// Remove indicates an expected call of Remove. -func (mr *MempoolMockRecorder) Remove(txs ...any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Remove", reflect.TypeOf((*Mempool)(nil).Remove), txs...) -} - -// RequestBuildBlock mocks base method. -func (m *Mempool) RequestBuildBlock(emptyBlockPermitted bool) { - m.ctrl.T.Helper() - m.ctrl.Call(m, "RequestBuildBlock", emptyBlockPermitted) -} - -// RequestBuildBlock indicates an expected call of RequestBuildBlock. -func (mr *MempoolMockRecorder) RequestBuildBlock(emptyBlockPermitted any) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "RequestBuildBlock", reflect.TypeOf((*Mempool)(nil).RequestBuildBlock), emptyBlockPermitted) -} diff --git a/vms/platformvm/txs/mempool/mocks_generate_test.go b/vms/platformvm/txs/mempool/mocks_generate_test.go deleted file mode 100644 index 7390f30c4b5c..000000000000 --- a/vms/platformvm/txs/mempool/mocks_generate_test.go +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. -// See the file LICENSE for licensing terms. - -package mempool - -//go:generate go run go.uber.org/mock/mockgen -package=${GOPACKAGE}mock -destination=${GOPACKAGE}mock/mempool.go -mock_names=Mempool=Mempool . Mempool From d130d8ae962cb8a0933695ae7f883e4e0283ac13 Mon Sep 17 00:00:00 2001 From: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> Date: Thu, 30 Jan 2025 17:15:09 -0500 Subject: [PATCH 7/8] nit Signed-off-by: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> --- vms/platformvm/network/gossip_test.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/vms/platformvm/network/gossip_test.go b/vms/platformvm/network/gossip_test.go index da75966d91cf..cdca67f2a2c0 100644 --- a/vms/platformvm/network/gossip_test.go +++ b/vms/platformvm/network/gossip_test.go @@ -7,12 +7,13 @@ import ( "errors" "testing" + "github.com/prometheus/client_golang/prometheus" + "github.com/stretchr/testify/require" + "github.com/ava-labs/avalanchego/ids" "github.com/ava-labs/avalanchego/utils/logging" "github.com/ava-labs/avalanchego/vms/platformvm/txs" "github.com/ava-labs/avalanchego/vms/txs/mempool" - "github.com/prometheus/client_golang/prometheus" - "github.com/stretchr/testify/require" pmempool "github.com/ava-labs/avalanchego/vms/platformvm/txs/mempool" ) From 7f2f65e986cf9d7fa294ce8c4121cbaf0089ca06 Mon Sep 17 00:00:00 2001 From: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> Date: Tue, 4 Feb 2025 15:05:00 -0500 Subject: [PATCH 8/8] remove drop Signed-off-by: Joshua Kim <20001595+joshua-kim@users.noreply.github.com> --- vms/avm/block/builder/builder_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/vms/avm/block/builder/builder_test.go b/vms/avm/block/builder/builder_test.go index 61d215fb5ee0..c714bd08721d 100644 --- a/vms/avm/block/builder/builder_test.go +++ b/vms/avm/block/builder/builder_test.go @@ -139,7 +139,6 @@ func TestBuilderBuildBlock(t *testing.T) { mempool, err := mempool.New("", prometheus.NewRegistry(), nil) require.NoError(t, err) require.NoError(t, mempool.Add(tx)) - mempool.MarkDropped(tx.ID(), errTest) return New( &txexecutor.Backend{