arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
hermez-node/txselector/txselector_test.go
txselector/txselector_test.goRaw
 1package txselector
 2
 3import (
 4	"io/ioutil"
 5	"os"
 6	"testing"
 7	"time"
 8
 9	"github.com/hermeznetwork/hermez-node/common"
10	"github.com/hermeznetwork/hermez-node/db/l2db"
11	"github.com/hermeznetwork/hermez-node/db/statedb"
12	"github.com/hermeznetwork/hermez-node/test"
13	"github.com/stretchr/testify/assert"
14	"github.com/stretchr/testify/require"
15)
16
17func initTest(t *testing.T, testSet string) *TxSelector {
18	pass := os.Getenv("POSTGRES_PASS")
19	l2DB, err := l2db.NewL2DB(5432, "localhost", "hermez", pass, "l2", 10, 512, 24*time.Hour)
20	require.Nil(t, err)
21
22	dir, err := ioutil.TempDir("", "tmpdb")
23	require.Nil(t, err)
24	sdb, err := statedb.NewStateDB(dir, false, 0)
25	require.Nil(t, err)
26
27	txselDir, err := ioutil.TempDir("", "tmpTxSelDB")
28	require.Nil(t, err)
29	txsel, err := NewTxSelector(txselDir, sdb, l2DB, 100, 100, 1000)
30	require.Nil(t, err)
31
32	return txsel
33}
34func addL2Txs(t *testing.T, txsel *TxSelector, poolL2Txs []*common.PoolL2Tx) {
35	for i := 0; i < len(poolL2Txs); i++ {
36		err := txsel.l2db.AddTx(poolL2Txs[i])
37		require.Nil(t, err)
38	}
39}
40
41func TestGetL2TxSelection(t *testing.T) {
42	txsel := initTest(t, test.SetTest0)
43	test.CleanL2DB(txsel.l2db.DB())
44
45	// generate test transactions
46	l1Txs, _, poolL2Txs := test.GenerateTestTxsFromSet(t, test.SetTest0)
47
48	// add the first batch of transactions to the TxSelector
49	addL2Txs(t, txsel, poolL2Txs[0])
50
51	_, err := txsel.GetL2TxSelection(0)
52	assert.Nil(t, err)
53
54	_, _, _, err = txsel.GetL1L2TxSelection(0, l1Txs[0])
55	assert.Nil(t, err)
56
57	// txs, err := txsel.GetL2TxSelection(0)
58	// assert.Nil(t, err)
59	// for _, tx := range txs {
60	//         fmt.Println(tx.FromIdx, tx.ToIdx, tx.AbsoluteFee)
61	// }
62	// assert.Equal(t, 3, len(txs))
63	// assert.Equal(t, uint64(6), txs[0].AbsoluteFee)
64	// assert.Equal(t, uint64(5), txs[1].AbsoluteFee)
65	// assert.Equal(t, uint64(4), txs[2].AbsoluteFee)
66}