aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgary rong <garyrong0905@gmail.com>2019-07-22 20:45:40 +0800
committerPéter Szilágyi <peterke@gmail.com>2019-07-22 20:45:40 +0800
commitb80c840af33aae1ff99ce9879fecc6161a0c1620 (patch)
treed7cf356018f011c60f264d76ba2c7722c56feb67
parenta32a2b933ad6793a2fe4172cd46c5c5906da259a (diff)
downloadgo-tangerine-b80c840af33aae1ff99ce9879fecc6161a0c1620.tar
go-tangerine-b80c840af33aae1ff99ce9879fecc6161a0c1620.tar.gz
go-tangerine-b80c840af33aae1ff99ce9879fecc6161a0c1620.tar.bz2
go-tangerine-b80c840af33aae1ff99ce9879fecc6161a0c1620.tar.lz
go-tangerine-b80c840af33aae1ff99ce9879fecc6161a0c1620.tar.xz
go-tangerine-b80c840af33aae1ff99ce9879fecc6161a0c1620.tar.zst
go-tangerine-b80c840af33aae1ff99ce9879fecc6161a0c1620.zip
core, les: fix les unit tests (#19823)
-rw-r--r--core/tx_pool.go4
-rw-r--r--core/tx_pool_test.go18
-rw-r--r--les/handler.go11
-rw-r--r--les/handler_test.go1
-rwxr-xr-xles/transactions.rlp0
5 files changed, 22 insertions, 12 deletions
diff --git a/core/tx_pool.go b/core/tx_pool.go
index c41d3fbd4..0c422dd99 100644
--- a/core/tx_pool.go
+++ b/core/tx_pool.go
@@ -745,13 +745,13 @@ func (pool *TxPool) AddRemotes(txs []*types.Transaction) []error {
}
// This is like AddRemotes, but waits for pool reorganization. Tests use this method.
-func (pool *TxPool) addRemotesSync(txs []*types.Transaction) []error {
+func (pool *TxPool) AddRemotesSync(txs []*types.Transaction) []error {
return pool.addTxs(txs, false, true)
}
// This is like AddRemotes with a single transaction, but waits for pool reorganization. Tests use this method.
func (pool *TxPool) addRemoteSync(tx *types.Transaction) error {
- errs := pool.addRemotesSync([]*types.Transaction{tx})
+ errs := pool.AddRemotesSync([]*types.Transaction{tx})
return errs[0]
}
diff --git a/core/tx_pool_test.go b/core/tx_pool_test.go
index 7df1a2c6f..388668ed8 100644
--- a/core/tx_pool_test.go
+++ b/core/tx_pool_test.go
@@ -200,7 +200,7 @@ func TestStateChangeDuringTransactionPoolReset(t *testing.T) {
t.Fatalf("Invalid nonce, want 0, got %d", nonce)
}
- pool.addRemotesSync([]*types.Transaction{tx0, tx1})
+ pool.AddRemotesSync([]*types.Transaction{tx0, tx1})
nonce = pool.Nonce(address)
if nonce != 2 {
@@ -587,7 +587,7 @@ func TestTransactionPostponing(t *testing.T) {
txs = append(txs, tx)
}
}
- for i, err := range pool.addRemotesSync(txs) {
+ for i, err := range pool.AddRemotesSync(txs) {
if err != nil {
t.Fatalf("tx %d: failed to add transactions: %v", i, err)
}
@@ -683,7 +683,7 @@ func TestTransactionGapFilling(t *testing.T) {
defer sub.Unsubscribe()
// Create a pending and a queued transaction with a nonce-gap in between
- pool.addRemotesSync([]*types.Transaction{
+ pool.AddRemotesSync([]*types.Transaction{
transaction(0, 100000, key),
transaction(2, 100000, key),
})
@@ -800,7 +800,7 @@ func testTransactionQueueGlobalLimiting(t *testing.T, nolocals bool) {
nonces[addr]++
}
// Import the batch and verify that limits have been enforced
- pool.addRemotesSync(txs)
+ pool.AddRemotesSync(txs)
queued := 0
for addr, list := range pool.queue {
@@ -988,7 +988,7 @@ func TestTransactionPendingGlobalLimiting(t *testing.T) {
}
}
// Import the batch and verify that limits have been enforced
- pool.addRemotesSync(txs)
+ pool.AddRemotesSync(txs)
pending := 0
for _, list := range pool.pending {
@@ -1068,7 +1068,7 @@ func TestTransactionPendingMinimumAllowance(t *testing.T) {
}
}
// Import the batch and verify that limits have been enforced
- pool.addRemotesSync(txs)
+ pool.AddRemotesSync(txs)
for addr, list := range pool.pending {
if list.Len() != int(config.AccountSlots) {
@@ -1124,7 +1124,7 @@ func TestTransactionPoolRepricing(t *testing.T) {
ltx := pricedTransaction(0, 100000, big.NewInt(1), keys[3])
// Import the batch and that both pending and queued transactions match up
- pool.addRemotesSync(txs)
+ pool.AddRemotesSync(txs)
pool.AddLocal(ltx)
pending, queued := pool.Stats()
@@ -1404,7 +1404,7 @@ func TestTransactionPoolStableUnderpricing(t *testing.T) {
for i := uint64(0); i < config.GlobalSlots; i++ {
txs = append(txs, pricedTransaction(i, 100000, big.NewInt(1), keys[0]))
}
- pool.addRemotesSync(txs)
+ pool.AddRemotesSync(txs)
pending, queued := pool.Stats()
if pending != int(config.GlobalSlots) {
@@ -1658,7 +1658,7 @@ func TestTransactionStatusCheck(t *testing.T) {
txs = append(txs, pricedTransaction(2, 100000, big.NewInt(1), keys[2])) // Queued only
// Import the transaction and ensure they are correctly added
- pool.addRemotesSync(txs)
+ pool.AddRemotesSync(txs)
pending, queued := pool.Stats()
if pending != 2 {
diff --git a/les/handler.go b/les/handler.go
index 743776bd0..53e2911e4 100644
--- a/les/handler.go
+++ b/les/handler.go
@@ -85,6 +85,7 @@ type BlockChain interface {
type txPool interface {
AddRemotes(txs []*types.Transaction) []error
+ AddRemotesSync(txs []*types.Transaction) []error
Status(hashes []common.Hash) []core.TxStatus
}
@@ -125,6 +126,9 @@ type ProtocolManager struct {
// Callbacks
synced func() bool
+
+ // Testing fields
+ addTxsSync bool
}
// NewProtocolManager returns a new ethereum sub protocol manager. The Ethereum sub protocol manages peers capable
@@ -1044,7 +1048,12 @@ func (pm *ProtocolManager) handleMsg(p *peer) error {
hash := tx.Hash()
stats[i] = pm.txStatus(hash)
if stats[i].Status == core.TxStatusUnknown {
- if errs := pm.txpool.AddRemotes([]*types.Transaction{tx}); errs[0] != nil {
+ addFn := pm.txpool.AddRemotes
+ // Add txs synchronously for testing purpose
+ if pm.addTxsSync {
+ addFn = pm.txpool.AddRemotesSync
+ }
+ if errs := addFn([]*types.Transaction{tx}); errs[0] != nil {
stats[i].Error = errs[0].Error()
continue
}
diff --git a/les/handler_test.go b/les/handler_test.go
index 4e16a8979..dae583f6d 100644
--- a/les/handler_test.go
+++ b/les/handler_test.go
@@ -496,6 +496,7 @@ func TestGetBloombitsProofs(t *testing.T) {
func TestTransactionStatusLes2(t *testing.T) {
server, tearDown := newServerEnv(t, 0, 2, nil)
defer tearDown()
+ server.pm.addTxsSync = true
chain := server.pm.blockchain.(*core.BlockChain)
config := core.DefaultTxPoolConfig
diff --git a/les/transactions.rlp b/les/transactions.rlp
new file mode 100755
index 000000000..e69de29bb
--- /dev/null
+++ b/les/transactions.rlp