add tests for valid blocks msg handling
This commit is contained in:
parent
e1be34bce1
commit
d677190f39
@ -229,10 +229,6 @@ func TestStatusMsgErrors(t *testing.T) {
|
|||||||
func TestNewBlockMsg(t *testing.T) {
|
func TestNewBlockMsg(t *testing.T) {
|
||||||
logInit()
|
logInit()
|
||||||
eth := newEth(t)
|
eth := newEth(t)
|
||||||
eth.blockPool.addBlock = func(block *types.Block, peerId string) (err error) {
|
|
||||||
fmt.Printf("Add Block: %v\n", block)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var disconnected bool
|
var disconnected bool
|
||||||
eth.blockPool.removePeer = func(peerId string) {
|
eth.blockPool.removePeer = func(peerId string) {
|
||||||
@ -295,3 +291,49 @@ func TestNewBlockMsg(t *testing.T) {
|
|||||||
eth.checkError(ErrDecode, delay)
|
eth.checkError(ErrDecode, delay)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestBlockMsg(t *testing.T) {
|
||||||
|
logInit()
|
||||||
|
eth := newEth(t)
|
||||||
|
blocks := make(chan *types.Block)
|
||||||
|
eth.blockPool.addBlock = func(block *types.Block, peerId string) (err error) {
|
||||||
|
blocks <- block
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var disconnected bool
|
||||||
|
eth.blockPool.removePeer = func(peerId string) {
|
||||||
|
fmt.Printf("peer <%s> is disconnected\n", peerId)
|
||||||
|
disconnected = true
|
||||||
|
}
|
||||||
|
|
||||||
|
go eth.run()
|
||||||
|
|
||||||
|
eth.handshake(t, true)
|
||||||
|
err := p2p.ExpectMsg(eth, TxMsg, []interface{}{})
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("transactions expected, got %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var delay = 3 * time.Second
|
||||||
|
// eth.reset()
|
||||||
|
newblock := func(i int64) *types.Block {
|
||||||
|
return types.NewBlock(common.Hash{byte(i)}, common.Address{byte(i)}, common.Hash{byte(i)}, big.NewInt(i), uint64(i), string(i))
|
||||||
|
}
|
||||||
|
go p2p.Send(eth, BlocksMsg, types.Blocks{newblock(0), newblock(1), newblock(2)})
|
||||||
|
timer := time.After(delay)
|
||||||
|
for i := int64(0); i < 3; i++ {
|
||||||
|
select {
|
||||||
|
case block := <-blocks:
|
||||||
|
if (block.ParentHash() != common.Hash{byte(i)}) {
|
||||||
|
t.Errorf("incorrect block %v, expected %v", block.ParentHash(), common.Hash{byte(i)})
|
||||||
|
}
|
||||||
|
case <-timer:
|
||||||
|
t.Errorf("no td recorded after %v", delay)
|
||||||
|
return
|
||||||
|
case err := <-eth.quit:
|
||||||
|
t.Errorf("no error expected, got %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user