arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
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	defer assert.Nil(t, os.RemoveAll(dir))
14	sdb, err := statedb.NewStateDB(dir, statedb.TypeTxSelector, 0)
15	require.Nil(t, err)
16
17	txselDir, err := ioutil.TempDir("", "tmpTxSelDB")
18	require.Nil(t, err)
19	defer assert.Nil(t, os.RemoveAll(dir))
20	txsel, err := NewTxSelector(txselDir, sdb, l2DB, maxL1UserTxs, maxL1OperatorTxs, maxTxs)
21	require.Nil(t, err)
22
23	return txsel
24}
25func addL2Txs(t *testing.T, txsel *TxSelector, poolL2Txs []common.PoolL2Tx) {
26	for i := 0; i < len(poolL2Txs); i++ {
27		err := txsel.l2db.AddTxTest(&poolL2Txs[i])
28		require.Nil(t, err)
29	}
30}
31
32func addTokens(t *testing.T, tokens []common.Token, db *sqlx.DB) {
33	hdb := historydb.NewHistoryDB(db)
34	assert.Nil(t, hdb.Reorg(-1))
35	assert.Nil(t, hdb.AddBlock(&common.Block{
36		EthBlockNum: 1,
37	}))
38	assert.Nil(t, hdb.AddTokens(tokens))
39}
40
41func TestGetL2TxSelection(t *testing.T) {
42	txsel := initTest(t, til.SetPool0, 5, 5, 10)
43	test.CleanL2DB(txsel.l2db.DB())
44
45	   	// generate test transactions
46	   	l1Txs, _, poolL2Txs, tokens := test.GenerateTestTxsFromSet(t, test.SetTest0)
47
48	   	// add tokens to HistoryDB to avoid breaking FK constrains
49	   	addTokens(t, tokens, txsel.l2db.DB())
50	   	// add the first batch of transactions to the TxSelector
51	   	addL2Txs(t, txsel, poolL2Txs[0])
52
53	   	_, err := txsel.GetL2TxSelection(0)
54	   	assert.Nil(t, err)
55
56	   	_, _, _, err = txsel.GetL1L2TxSelection(0, l1Txs[0])
57	   	assert.Nil(t, err)
58
59		// TODO once L2DB is updated to return error in case that AddTxTest
60		// fails, and the Til is updated, update this test, checking that the
61		// selected PoolL2Tx are correctly sorted by Nonce
62
63
64
65	   	// txs, err := txsel.GetL2TxSelection(0)
66	   	// assert.Nil(t, err)
67	   	// for _, tx := range txs {
68	   	//         fmt.Println(tx.FromIdx, tx.ToIdx, tx.AbsoluteFee)
69	   	// }
70	   	// assert.Equal(t, 3, len(txs))
71	   	// assert.Equal(t, uint64(6), txs[0].AbsoluteFee)
72	   	// assert.Equal(t, uint64(5), txs[1].AbsoluteFee)
73	   	// assert.Equal(t, uint64(4), txs[2].AbsoluteFee)
74}
75*/