|
|
- 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())
- }
|