package v1
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
"github.com/tendermint/tendermint/internal/mempool"
|
|
)
|
|
|
|
func TestTxStore_GetTxBySender(t *testing.T) {
|
|
txs := NewTxStore()
|
|
wtx := &WrappedTx{
|
|
tx: []byte("test_tx"),
|
|
sender: "foo",
|
|
priority: 1,
|
|
timestamp: time.Now(),
|
|
}
|
|
|
|
res := txs.GetTxBySender(wtx.sender)
|
|
require.Nil(t, res)
|
|
|
|
txs.SetTx(wtx)
|
|
|
|
res = txs.GetTxBySender(wtx.sender)
|
|
require.NotNil(t, res)
|
|
require.Equal(t, wtx, res)
|
|
}
|
|
|
|
func TestTxStore_GetTxByHash(t *testing.T) {
|
|
txs := NewTxStore()
|
|
wtx := &WrappedTx{
|
|
tx: []byte("test_tx"),
|
|
sender: "foo",
|
|
priority: 1,
|
|
timestamp: time.Now(),
|
|
}
|
|
|
|
key := mempool.TxKey(wtx.tx)
|
|
res := txs.GetTxByHash(key)
|
|
require.Nil(t, res)
|
|
|
|
txs.SetTx(wtx)
|
|
|
|
res = txs.GetTxByHash(key)
|
|
require.NotNil(t, res)
|
|
require.Equal(t, wtx, res)
|
|
}
|
|
|
|
func TestTxStore_SetTx(t *testing.T) {
|
|
txs := NewTxStore()
|
|
wtx := &WrappedTx{
|
|
tx: []byte("test_tx"),
|
|
priority: 1,
|
|
timestamp: time.Now(),
|
|
}
|
|
|
|
key := mempool.TxKey(wtx.tx)
|
|
txs.SetTx(wtx)
|
|
|
|
res := txs.GetTxByHash(key)
|
|
require.NotNil(t, res)
|
|
require.Equal(t, wtx, res)
|
|
|
|
wtx.sender = "foo"
|
|
txs.SetTx(wtx)
|
|
|
|
res = txs.GetTxByHash(key)
|
|
require.NotNil(t, res)
|
|
require.Equal(t, wtx, res)
|
|
}
|
|
|
|
func TestTxStore_GetOrSetPeerByTxHash(t *testing.T) {
|
|
txs := NewTxStore()
|
|
wtx := &WrappedTx{
|
|
tx: []byte("test_tx"),
|
|
priority: 1,
|
|
timestamp: time.Now(),
|
|
}
|
|
|
|
key := mempool.TxKey(wtx.tx)
|
|
txs.SetTx(wtx)
|
|
|
|
res, ok := txs.GetOrSetPeerByTxHash(mempool.TxKey([]byte("test_tx_2")), 15)
|
|
require.Nil(t, res)
|
|
require.False(t, ok)
|
|
|
|
res, ok = txs.GetOrSetPeerByTxHash(key, 15)
|
|
require.NotNil(t, res)
|
|
require.False(t, ok)
|
|
|
|
res, ok = txs.GetOrSetPeerByTxHash(key, 15)
|
|
require.NotNil(t, res)
|
|
require.True(t, ok)
|
|
|
|
require.True(t, txs.TxHasPeer(key, 15))
|
|
require.False(t, txs.TxHasPeer(key, 16))
|
|
}
|
|
|
|
func TestTxStore_RemoveTx(t *testing.T) {
|
|
txs := NewTxStore()
|
|
wtx := &WrappedTx{
|
|
tx: []byte("test_tx"),
|
|
priority: 1,
|
|
timestamp: time.Now(),
|
|
}
|
|
|
|
txs.SetTx(wtx)
|
|
|
|
key := mempool.TxKey(wtx.tx)
|
|
res := txs.GetTxByHash(key)
|
|
require.NotNil(t, res)
|
|
|
|
txs.RemoveTx(res)
|
|
|
|
res = txs.GetTxByHash(key)
|
|
require.Nil(t, res)
|
|
}
|
|
|
|
func TestTxStore_Size(t *testing.T) {
|
|
txStore := NewTxStore()
|
|
numTxs := 1000
|
|
|
|
for i := 0; i < numTxs; i++ {
|
|
txStore.SetTx(&WrappedTx{
|
|
tx: []byte(fmt.Sprintf("test_tx_%d", i)),
|
|
priority: int64(i),
|
|
timestamp: time.Now(),
|
|
})
|
|
}
|
|
|
|
require.Equal(t, numTxs, txStore.Size())
|
|
}
|