mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-06 23:18:37 +00:00
cmd/devp2p/v5test: remove unsolicited NODES sleep
This commit is contained in:
parent
3fa594333c
commit
13d5001c60
1 changed files with 17 additions and 13 deletions
|
|
@ -345,34 +345,38 @@ The remote node should neither contact the injected node nor return it from late
|
||||||
t.Log("sending unsolicited NODES response with injected node")
|
t.Log("sending unsolicited NODES response with injected node")
|
||||||
conn.write(l1, unsolicited, nil)
|
conn.write(l1, unsolicited, nil)
|
||||||
|
|
||||||
const contactWindow = 500 * time.Millisecond
|
checkNoContact := func(phase string) {
|
||||||
buf := make([]byte, 1280)
|
buf := make([]byte, 1280)
|
||||||
if err := fakeL.SetReadDeadline(time.Now().Add(contactWindow)); err != nil {
|
if err := fakeL.SetReadDeadline(time.Now()); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
if n, from, err := fakeL.ReadFrom(buf); err == nil {
|
for {
|
||||||
t.Fatalf("remote contacted injected node after unsolicited NODES: %d bytes from %v", n, from)
|
n, from, err := fakeL.ReadFrom(buf)
|
||||||
} else if !netutil.IsTimeout(err) {
|
if err == nil {
|
||||||
t.Fatalf("waiting for unexpected contact failed: %v", err)
|
t.Fatalf("%s: remote contacted injected node: %d bytes from %v", phase, n, from)
|
||||||
|
}
|
||||||
|
if netutil.IsTimeout(err) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
t.Fatalf("%s: checking for unexpected contact failed: %v", phase, err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
checkNoContact("after unsolicited NODES")
|
||||||
|
|
||||||
dist := uint(enode.LogDist(fakeConn.localNode.ID(), s.Dest.ID()))
|
dist := uint(enode.LogDist(fakeConn.localNode.ID(), s.Dest.ID()))
|
||||||
const maxAttempts = 3
|
const maxAttempts = 3
|
||||||
const retryInterval = 200 * time.Millisecond
|
|
||||||
for attempt := 1; attempt <= maxAttempts; attempt++ {
|
for attempt := 1; attempt <= maxAttempts; attempt++ {
|
||||||
results, err := conn.findnode(l1, []uint{dist})
|
results, err := conn.findnode(l1, []uint{dist})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
checkNoContact("during FINDNODE probes")
|
||||||
for _, n := range results {
|
for _, n := range results {
|
||||||
if n.ID() == fakeConn.localNode.ID() {
|
if n.ID() == fakeConn.localNode.ID() {
|
||||||
t.Fatalf("attempt %d: FINDNODE result contains node from unsolicited NODES response", attempt)
|
t.Fatalf("attempt %d: FINDNODE result contains node from unsolicited NODES response", attempt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
t.Logf("attempt %d: injected node not returned in FINDNODE results", attempt)
|
t.Logf("attempt %d: injected node not returned in FINDNODE results", attempt)
|
||||||
if attempt < maxAttempts {
|
|
||||||
time.Sleep(retryInterval)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue