diff options
author | Zsolt Felfoldi <zsfelfoldi@gmail.com> | 2017-01-06 10:44:58 +0800 |
---|---|---|
committer | Zsolt Felfoldi <zsfelfoldi@gmail.com> | 2017-01-06 11:34:35 +0800 |
commit | 66979aa468b6329aabf49542bd3db14e59010c20 (patch) | |
tree | 80480c1abc825fffd7315e7e8e375f84d9faddce | |
parent | 93f9c023ccda2256079484d6c2a3159818ba6691 (diff) | |
download | go-tangerine-66979aa468b6329aabf49542bd3db14e59010c20.tar go-tangerine-66979aa468b6329aabf49542bd3db14e59010c20.tar.gz go-tangerine-66979aa468b6329aabf49542bd3db14e59010c20.tar.bz2 go-tangerine-66979aa468b6329aabf49542bd3db14e59010c20.tar.lz go-tangerine-66979aa468b6329aabf49542bd3db14e59010c20.tar.xz go-tangerine-66979aa468b6329aabf49542bd3db14e59010c20.tar.zst go-tangerine-66979aa468b6329aabf49542bd3db14e59010c20.zip |
light: fixed data race in TestTxPool
-rw-r--r-- | light/txpool_test.go | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/light/txpool_test.go b/light/txpool_test.go index 759b6b8ab..f3eb7980d 100644 --- a/light/txpool_test.go +++ b/light/txpool_test.go @@ -32,20 +32,22 @@ import ( ) type testTxRelay struct { - send, nhMined, nhRollback, discard int + send, discard, mined chan int } func (self *testTxRelay) Send(txs types.Transactions) { - self.send = len(txs) + self.send <- len(txs) } func (self *testTxRelay) NewHead(head common.Hash, mined []common.Hash, rollback []common.Hash) { - self.nhMined = len(mined) - self.nhRollback = len(rollback) + m := len(mined) + if m != 0 { + self.mined <- m + } } func (self *testTxRelay) Discard(hashes []common.Hash) { - self.discard = len(hashes) + self.discard <- len(hashes) } const poolTestTxs = 1000 @@ -94,7 +96,11 @@ func TestTxPool(t *testing.T) { } odr := &testOdr{sdb: sdb, ldb: ldb} - relay := &testTxRelay{} + relay := &testTxRelay{ + send: make(chan int, 1), + discard: make(chan int, 1), + mined: make(chan int, 1), + } lightchain, _ := NewLightChain(odr, testChainConfig(), pow, evmux) lightchain.SetValidator(bproc{}) txPermanent = 50 @@ -106,36 +112,33 @@ func TestTxPool(t *testing.T) { s := sentTx(i - 1) e := sentTx(i) for i := s; i < e; i++ { - relay.send = 0 pool.Add(ctx, testTx[i]) - got := relay.send + got := <-relay.send exp := 1 if got != exp { t.Errorf("relay.Send expected len = %d, got %d", exp, got) } } - relay.nhMined = 0 - relay.nhRollback = 0 - relay.discard = 0 if _, err := lightchain.InsertHeaderChain([]*types.Header{block.Header()}, 1); err != nil { panic(err) } - time.Sleep(time.Millisecond * 30) - got := relay.nhMined + got := <-relay.mined exp := minedTx(i) - minedTx(i-1) if got != exp { t.Errorf("relay.NewHead expected len(mined) = %d, got %d", exp, got) } - got = relay.discard exp = 0 if i > int(txPermanent)+1 { exp = minedTx(i-int(txPermanent)-1) - minedTx(i-int(txPermanent)-2) } - if got != exp { - t.Errorf("relay.Discard expected len = %d, got %d", exp, got) + if exp != 0 { + got = <-relay.discard + if got != exp { + t.Errorf("relay.Discard expected len = %d, got %d", exp, got) + } } } } |