mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-05-24 16:59:26 +00:00
cmd/devp2p/v5test: test FINDNODE handshake gating
This commit is contained in:
parent
24e0739177
commit
e7e81cfce2
1 changed files with 29 additions and 0 deletions
|
|
@ -55,6 +55,7 @@ func (s *Suite) AllTests() []utesting.Test {
|
|||
{Name: "HandshakeResend", Fn: s.TestHandshakeResend},
|
||||
{Name: "TalkRequest", Fn: s.TestTalkRequest},
|
||||
{Name: "FindnodeWrongIP", Fn: s.TestFindnodeWrongIP},
|
||||
{Name: "FindnodeHandshake", Fn: s.TestFindnodeHandshake},
|
||||
{Name: "FindnodeZeroDistance", Fn: s.TestFindnodeZeroDistance},
|
||||
{Name: "FindnodeResults", Fn: s.TestFindnodeResults},
|
||||
}
|
||||
|
|
@ -257,6 +258,34 @@ The remote node should challenge the second endpoint with WHOAREYOU instead of r
|
|||
}
|
||||
}
|
||||
|
||||
func (s *Suite) TestFindnodeHandshake(t *utesting.T) {
|
||||
conn, l1 := s.listen1(t)
|
||||
defer conn.close()
|
||||
|
||||
req := &v5wire.Findnode{ReqID: conn.nextReqID(), Distances: []uint{0}}
|
||||
nonce := conn.write(l1, req, nil)
|
||||
|
||||
challenge, ok := conn.read(l1).(*v5wire.Whoareyou)
|
||||
if !ok {
|
||||
t.Fatal("expected WHOAREYOU before NODES")
|
||||
}
|
||||
if challenge.Nonce != nonce {
|
||||
t.Fatalf("wrong nonce %x in WHOAREYOU (want %x)", challenge.Nonce[:], nonce[:])
|
||||
}
|
||||
|
||||
challenge.Node = conn.remote
|
||||
conn.write(l1, req, challenge)
|
||||
|
||||
resp := conn.read(l1)
|
||||
nodes, ok := resp.(*v5wire.Nodes)
|
||||
if !ok {
|
||||
t.Fatal("expected NODES after completing handshake, got", resp)
|
||||
}
|
||||
if !bytes.Equal(nodes.ReqID, req.ReqID) {
|
||||
t.Fatalf("wrong request ID %x in NODES, want %x", nodes.ReqID, req.ReqID)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Suite) TestFindnodeZeroDistance(t *utesting.T) {
|
||||
t.Log(`This test checks that the remote node returns itself for FINDNODE with distance zero.`)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue