You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.3 KiB

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