mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-08 11:56:46 +01:00
Integrate TxSelector with StateDB
This commit is contained in:
@@ -2,76 +2,75 @@ package txselector
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/big"
|
||||
"io/ioutil"
|
||||
"testing"
|
||||
|
||||
"github.com/hermeznetwork/hermez-node/txselector/common"
|
||||
"github.com/hermeznetwork/hermez-node/txselector/mock"
|
||||
"github.com/hermeznetwork/hermez-node/db/l2db"
|
||||
"github.com/hermeznetwork/hermez-node/db/statedb"
|
||||
|
||||
ethCommon "github.com/ethereum/go-ethereum/common"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func initMockDB() *mock.MockDB {
|
||||
m := mock.New()
|
||||
|
||||
/*
|
||||
func initTestDB(l2 *l2db.L2DB, sdb *statedb.StateDB) *mock.MockDB {
|
||||
txs := []common.Tx{
|
||||
{
|
||||
FromEthAddr: ethCommon.HexToAddress("0x859c3d0d5aD917F146fF6654A4C676f1ddeCE26a"),
|
||||
ToEthAddr: ethCommon.HexToAddress("0x6950E814B82d276DB5Fa7f34253CfeE1387fe03E"),
|
||||
TokenID: 1,
|
||||
Nonce: 1,
|
||||
UserFeeAbsolute: 1,
|
||||
FromIdx: common.Idx(0),
|
||||
ToIdx: common.Idx(1),
|
||||
TokenID: 1,
|
||||
Nonce: 1,
|
||||
AbsoluteFee: 1,
|
||||
},
|
||||
{
|
||||
FromEthAddr: ethCommon.HexToAddress("0x859c3d0d5aD917F146fF6654A4C676f1ddeCE26a"),
|
||||
ToEthAddr: ethCommon.HexToAddress("0x6950E814B82d276DB5Fa7f34253CfeE1387fe03E"),
|
||||
TokenID: 1,
|
||||
Nonce: 2,
|
||||
UserFeeAbsolute: 3,
|
||||
FromIdx: common.Idx(0),
|
||||
ToIdx: common.Idx(1),
|
||||
TokenID: 1,
|
||||
Nonce: 2,
|
||||
AbsoluteFee: 3,
|
||||
},
|
||||
{
|
||||
FromEthAddr: ethCommon.HexToAddress("0x859c3d0d5aD917F146fF6654A4C676f1ddeCE26a"),
|
||||
ToEthAddr: ethCommon.HexToAddress("0x6950E814B82d276DB5Fa7f34253CfeE1387fe03E"),
|
||||
TokenID: 1,
|
||||
Nonce: 4,
|
||||
UserFeeAbsolute: 6,
|
||||
FromIdx: common.Idx(0),
|
||||
ToIdx: common.Idx(1),
|
||||
TokenID: 1,
|
||||
Nonce: 4,
|
||||
AbsoluteFee: 6,
|
||||
},
|
||||
{
|
||||
FromEthAddr: ethCommon.HexToAddress("0x859c3d0d5aD917F146fF6654A4C676f1ddeCE26a"),
|
||||
ToEthAddr: ethCommon.HexToAddress("0x6950E814B82d276DB5Fa7f34253CfeE1387fe03E"),
|
||||
TokenID: 1,
|
||||
Nonce: 4,
|
||||
UserFeeAbsolute: 4,
|
||||
FromIdx: common.Idx(0),
|
||||
ToIdx: common.Idx(1),
|
||||
TokenID: 1,
|
||||
Nonce: 4,
|
||||
AbsoluteFee: 4,
|
||||
},
|
||||
{
|
||||
FromEthAddr: ethCommon.HexToAddress("0x6950E814B82d276DB5Fa7f34253CfeE1387fe03E"),
|
||||
ToEthAddr: ethCommon.HexToAddress("0x859c3d0d5aD917F146fF6654A4C676f1ddeCE26a"),
|
||||
TokenID: 1,
|
||||
Nonce: 1,
|
||||
UserFeeAbsolute: 4,
|
||||
ToIdx: common.Idx(1),
|
||||
FromIdx: common.Idx(0),
|
||||
TokenID: 1,
|
||||
Nonce: 1,
|
||||
AbsoluteFee: 4,
|
||||
},
|
||||
{
|
||||
FromEthAddr: ethCommon.HexToAddress("0x6950E814B82d276DB5Fa7f34253CfeE1387fe03E"),
|
||||
ToEthAddr: ethCommon.HexToAddress("0x859c3d0d5aD917F146fF6654A4C676f1ddeCE26a"),
|
||||
TokenID: 1,
|
||||
Nonce: 2,
|
||||
UserFeeAbsolute: 3,
|
||||
ToIdx: common.Idx(1),
|
||||
FromIdx: common.Idx(0),
|
||||
TokenID: 1,
|
||||
Nonce: 2,
|
||||
AbsoluteFee: 3,
|
||||
},
|
||||
{
|
||||
FromEthAddr: ethCommon.HexToAddress("0x6950E814B82d276DB5Fa7f34253CfeE1387fe03E"),
|
||||
ToEthAddr: ethCommon.HexToAddress("0x859c3d0d5aD917F146fF6654A4C676f1ddeCE26a"),
|
||||
TokenID: 1,
|
||||
Nonce: 3,
|
||||
UserFeeAbsolute: 5,
|
||||
ToIdx: common.Idx(1),
|
||||
FromIdx: common.Idx(0),
|
||||
TokenID: 1,
|
||||
Nonce: 3,
|
||||
AbsoluteFee: 5,
|
||||
},
|
||||
{
|
||||
// this tx will not be selected, as the ToEthAddr does not have an account
|
||||
FromEthAddr: ethCommon.HexToAddress("0x6950E814B82d276DB5Fa7f34253CfeE1387fe03E"),
|
||||
ToEthAddr: ethCommon.HexToAddress("0x4a2CFDF534725D8D6e07Af97B237Fff19BDb3c93"),
|
||||
TokenID: 1,
|
||||
Nonce: 4,
|
||||
UserFeeAbsolute: 5,
|
||||
FromIdx: common.Idx(1),
|
||||
ToIdx: common.Idx(2),
|
||||
TokenID: 1,
|
||||
Nonce: 4,
|
||||
AbsoluteFee: 5,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -81,13 +80,13 @@ func initMockDB() *mock.MockDB {
|
||||
// for i := 0; i < nBatch; i++ {
|
||||
// for j := 0; j < len(txs)/nBatch; j++ {
|
||||
// store tx
|
||||
m.AddTx(uint64(nBatch), txs[i])
|
||||
l2db.AddTx(uint64(nBatch), txs[i])
|
||||
|
||||
// store account if not yet
|
||||
accountID := getAccountID(txs[i].FromEthAddr, txs[i].TokenID)
|
||||
if _, ok := m.AccountDB[accountID]; !ok {
|
||||
account := common.Account{
|
||||
EthAddr: txs[i].FromEthAddr,
|
||||
// EthAddr: txs[i].FromEthAddr,
|
||||
TokenID: txs[i].TokenID,
|
||||
Nonce: 0,
|
||||
Balance: big.NewInt(0),
|
||||
@@ -100,18 +99,27 @@ func initMockDB() *mock.MockDB {
|
||||
|
||||
return m
|
||||
}
|
||||
*/
|
||||
|
||||
func TestGetL2TxSelection(t *testing.T) {
|
||||
mockDB := initMockDB()
|
||||
txsel := NewTxSelector(mockDB, 3, 3, 3)
|
||||
|
||||
txs, err := txsel.GetL2TxSelection(0)
|
||||
dir, err := ioutil.TempDir("", "tmpdb")
|
||||
require.Nil(t, err)
|
||||
sdb, err := statedb.NewStateDB(dir, false, false, 0)
|
||||
assert.Nil(t, err)
|
||||
for _, tx := range txs {
|
||||
fmt.Println(tx.FromEthAddr.String(), tx.ToEthAddr.String(), tx.UserFeeAbsolute)
|
||||
}
|
||||
assert.Equal(t, 3, len(txs))
|
||||
assert.Equal(t, uint64(6), txs[0].UserFeeAbsolute)
|
||||
assert.Equal(t, uint64(5), txs[1].UserFeeAbsolute)
|
||||
assert.Equal(t, uint64(4), txs[2].UserFeeAbsolute)
|
||||
testL2DB := &l2db.L2DB{}
|
||||
// initTestDB(testL2DB, sdb)
|
||||
|
||||
txsel, err := NewTxSelector(sdb, testL2DB, 3, 3, 3)
|
||||
assert.Nil(t, err)
|
||||
fmt.Println(txsel)
|
||||
|
||||
// txs, err := txsel.GetL2TxSelection(0)
|
||||
// assert.Nil(t, err)
|
||||
// for _, tx := range txs {
|
||||
// fmt.Println(tx.FromIdx, tx.ToIdx, tx.AbsoluteFee)
|
||||
// }
|
||||
// assert.Equal(t, 3, len(txs))
|
||||
// assert.Equal(t, uint64(6), txs[0].AbsoluteFee)
|
||||
// assert.Equal(t, uint64(5), txs[1].AbsoluteFee)
|
||||
// assert.Equal(t, uint64(4), txs[2].AbsoluteFee)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user