Skip to content

Commit 88fb682

Browse files
committed
p2p/discover: fix TestUDPv4_findnode data race with revalidation ping
1 parent 0413af4 commit 88fb682

File tree

1 file changed

+23
-11
lines changed

1 file changed

+23
-11
lines changed

p2p/discover/v4_udp_test.go

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -281,19 +281,31 @@ func TestUDPv4_findnode(t *testing.T) {
281281
// check that closest neighbors are returned.
282282
expected := test.table.findnodeByID(testTarget.ID(), bucketSize, true)
283283
test.packetIn(nil, &v4wire.Findnode{Target: testTarget, Expiration: futureExp})
284-
waitNeighbors := func(want []*enode.Node) {
285-
test.waitPacketOut(func(p *v4wire.Neighbors, to netip.AddrPort, hash []byte) {
286-
if len(p.Nodes) != len(want) {
287-
t.Errorf("wrong number of results: got %d, want %d", len(p.Nodes), len(want))
288-
return
289-
}
290-
for i, n := range p.Nodes {
291-
if n.ID.ID() != want[i].ID() {
292-
t.Errorf("result mismatch at %d:\n got: %v\n want: %v", i, n, expected.entries[i])
284+
deadline := time.Now().Add(1 * time.Minute)
285+
var waitNeighbors func([]*enode.Node)
286+
waitNeighbors = func(want []*enode.Node) {
287+
if time.Now().After(deadline) {
288+
t.Fatal("timeout waiting for neighbors response")
289+
}
290+
test.waitPacketOut(func(p v4wire.Packet, to netip.AddrPort, hash []byte) {
291+
switch p := p.(type) {
292+
case *v4wire.Ping:
293+
waitNeighbors(want)
294+
case *v4wire.Neighbors:
295+
if len(p.Nodes) != len(want) {
296+
t.Errorf("wrong number of results: got %d, want %d", len(p.Nodes), len(want))
297+
return
293298
}
294-
if !live[n.ID.ID()] {
295-
t.Errorf("result includes dead node %v", n.ID.ID())
299+
for i, n := range p.Nodes {
300+
if n.ID.ID() != want[i].ID() {
301+
t.Errorf("result mismatch at %d:\n got: %v\n want: %v", i, n, expected.entries[i])
302+
}
303+
if !live[n.ID.ID()] {
304+
t.Errorf("result includes dead node %v", n.ID.ID())
305+
}
296306
}
307+
default:
308+
t.Fatalf("unexpected packet type: %T", p)
297309
}
298310
})
299311
}

0 commit comments

Comments
 (0)