cmd/devp2p: add old block announcement test to eth test suite (#22474)
Add old block announcement test to eth test suite, checks to make sure old block announcement isn't propagated
This commit is contained in:
parent
5bf6612a2e
commit
36b51b8156
|
@ -215,6 +215,10 @@ func (s *Suite) TestLargeAnnounce_66(t *utesting.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Suite) TestOldAnnounce_66(t *utesting.T) {
|
||||||
|
s.oldAnnounce(t, s.setupConnection66(t), s.setupConnection66(t))
|
||||||
|
}
|
||||||
|
|
||||||
// TestMaliciousHandshake_66 tries to send malicious data during the handshake.
|
// TestMaliciousHandshake_66 tries to send malicious data during the handshake.
|
||||||
func (s *Suite) TestMaliciousHandshake_66(t *utesting.T) {
|
func (s *Suite) TestMaliciousHandshake_66(t *utesting.T) {
|
||||||
conn := s.dial66(t)
|
conn := s.dial66(t)
|
||||||
|
|
|
@ -19,6 +19,7 @@ package ethtest
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/davecgh/go-spew/spew"
|
"github.com/davecgh/go-spew/spew"
|
||||||
|
@ -84,6 +85,8 @@ func (s *Suite) AllEthTests() []utesting.Test {
|
||||||
{Name: "Broadcast_66", Fn: s.TestBroadcast_66},
|
{Name: "Broadcast_66", Fn: s.TestBroadcast_66},
|
||||||
{Name: "TestLargeAnnounce", Fn: s.TestLargeAnnounce},
|
{Name: "TestLargeAnnounce", Fn: s.TestLargeAnnounce},
|
||||||
{Name: "TestLargeAnnounce_66", Fn: s.TestLargeAnnounce_66},
|
{Name: "TestLargeAnnounce_66", Fn: s.TestLargeAnnounce_66},
|
||||||
|
{Name: "TestOldAnnounce", Fn: s.TestOldAnnounce},
|
||||||
|
{Name: "TestOldAnnounce_66", Fn: s.TestOldAnnounce_66},
|
||||||
// malicious handshakes + status
|
// malicious handshakes + status
|
||||||
{Name: "TestMaliciousHandshake", Fn: s.TestMaliciousHandshake},
|
{Name: "TestMaliciousHandshake", Fn: s.TestMaliciousHandshake},
|
||||||
{Name: "TestMaliciousStatus", Fn: s.TestMaliciousStatus},
|
{Name: "TestMaliciousStatus", Fn: s.TestMaliciousStatus},
|
||||||
|
@ -389,6 +392,36 @@ func (s *Suite) TestLargeAnnounce(t *utesting.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Suite) TestOldAnnounce(t *utesting.T) {
|
||||||
|
s.oldAnnounce(t, s.setupConnection(t), s.setupConnection(t))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Suite) oldAnnounce(t *utesting.T, sendConn, receiveConn *Conn) {
|
||||||
|
oldBlockAnnounce := &NewBlock{
|
||||||
|
Block: s.chain.blocks[len(s.chain.blocks)/2],
|
||||||
|
TD: s.chain.blocks[len(s.chain.blocks)/2].Difficulty(),
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := sendConn.Write(oldBlockAnnounce); err != nil {
|
||||||
|
t.Fatalf("could not write to connection: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch msg := receiveConn.ReadAndServe(s.chain, timeout*2).(type) {
|
||||||
|
case *NewBlock:
|
||||||
|
t.Fatalf("unexpected: block propagated: %s", pretty.Sdump(msg))
|
||||||
|
case *NewBlockHashes:
|
||||||
|
t.Fatalf("unexpected: block announced: %s", pretty.Sdump(msg))
|
||||||
|
case *Error:
|
||||||
|
errMsg := *msg
|
||||||
|
// check to make sure error is timeout (propagation didn't come through == test successful)
|
||||||
|
if !strings.Contains(errMsg.String(), "timeout") {
|
||||||
|
t.Fatalf("unexpected error: %v", pretty.Sdump(msg))
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
t.Fatalf("unexpected: %s", pretty.Sdump(msg))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (s *Suite) testAnnounce(t *utesting.T, sendConn, receiveConn *Conn, blockAnnouncement *NewBlock) {
|
func (s *Suite) testAnnounce(t *utesting.T, sendConn, receiveConn *Conn, blockAnnouncement *NewBlock) {
|
||||||
// Announce the block.
|
// Announce the block.
|
||||||
if err := sendConn.Write(blockAnnouncement); err != nil {
|
if err := sendConn.Write(blockAnnouncement); err != nil {
|
||||||
|
|
Loading…
Reference in New Issue