hermez-node/txselector/txselector_test.go
txselector/txselector_test.goRaw
1package txselector
2
3/*
4 TODO update transactions generation
5func initTest(t *testing.T, testSet string, maxL1UserTxs, maxL1OperatorTxs, maxTxs uint64) *TxSelector {
6 pass := os.Getenv("POSTGRES_PASS")
7 db, err := dbUtils.InitSQLDB(5432, "localhost", "hermez", pass, "hermez")
8 require.Nil(t, err)
9 l2DB := l2db.NewL2DB(db, 10, 100, 24*time.Hour)
10
11 dir, err := ioutil.TempDir("", "tmpdb")
12 require.Nil(t, err)
13 sdb, err := statedb.NewStateDB(dir, statedb.TypeTxSelector, 0)
14 require.Nil(t, err)
15
16 txselDir, err := ioutil.TempDir("", "tmpTxSelDB")
17 require.Nil(t, err)
18 txsel, err := NewTxSelector(txselDir, sdb, l2DB, maxL1UserTxs, maxL1OperatorTxs, maxTxs)
19 require.Nil(t, err)
20
21 return txsel
22}
23func addL2Txs(t *testing.T, txsel *TxSelector, poolL2Txs []common.PoolL2Tx) {
24 for i := 0; i < len(poolL2Txs); i++ {
25 err := txsel.l2db.AddTxTest(&poolL2Txs[i])
26 require.Nil(t, err)
27 }
28}
29
30func addTokens(t *testing.T, tokens []common.Token, db *sqlx.DB) {
31 hdb := historydb.NewHistoryDB(db)
32 assert.Nil(t, hdb.Reorg(-1))
33 assert.Nil(t, hdb.AddBlock(&common.Block{
34 EthBlockNum: 1,
35 }))
36 assert.Nil(t, hdb.AddTokens(tokens))
37}
38
39func TestGetL2TxSelection(t *testing.T) {
40 txsel := initTest(t, transakcio.SetPool0, 5, 5, 10)
41 test.CleanL2DB(txsel.l2db.DB())
42
43 // generate test transactions
44 l1Txs, _, poolL2Txs, tokens := test.GenerateTestTxsFromSet(t, test.SetTest0)
45
46 // add tokens to HistoryDB to avoid breaking FK constrains
47 addTokens(t, tokens, txsel.l2db.DB())
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 // TODO once L2DB is updated to return error in case that AddTxTest
58 // fails, and the Transakcio is updated, update this test, checking that the
59 // selected PoolL2Tx are correctly sorted by Nonce
60
61
62
63 // txs, err := txsel.GetL2TxSelection(0)
64 // assert.Nil(t, err)
65 // for _, tx := range txs {
66 // fmt.Println(tx.FromIdx, tx.ToIdx, tx.AbsoluteFee)
67 // }
68 // assert.Equal(t, 3, len(txs))
69 // assert.Equal(t, uint64(6), txs[0].AbsoluteFee)
70 // assert.Equal(t, uint64(5), txs[1].AbsoluteFee)
71 // assert.Equal(t, uint64(4), txs[2].AbsoluteFee)
72}
73*/