From d629e0204799f2f7109fd52aa245e852c2e4f921 Mon Sep 17 00:00:00 2001 From: Marcin Sobczak <77129288+marcindsobczak@users.noreply.github.com> Date: Mon, 7 Nov 2022 22:46:21 +0100 Subject: [PATCH] cmd/devp2p/internal/v4test: ignore FINDNODE in BondThenPingWithWrongFrom (#26085) This fixes a race in the test. Co-authored-by: Felix Lange --- cmd/devp2p/internal/v4test/discv4tests.go | 24 +++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/cmd/devp2p/internal/v4test/discv4tests.go b/cmd/devp2p/internal/v4test/discv4tests.go index cf727dcf8..7b818a52f 100644 --- a/cmd/devp2p/internal/v4test/discv4tests.go +++ b/cmd/devp2p/internal/v4test/discv4tests.go @@ -256,6 +256,7 @@ func WrongPacketType(t *utesting.T) { func BondThenPingWithWrongFrom(t *utesting.T) { te := newTestEnv(Remote, Listen1, Listen2) defer te.close() + bond(t, te) wrongEndpoint := v4wire.Endpoint{IP: net.ParseIP("192.0.2.0")} @@ -265,10 +266,25 @@ func BondThenPingWithWrongFrom(t *utesting.T) { To: te.remoteEndpoint(), Expiration: futureExpiration(), }) - if reply, _, err := te.read(te.l1); err != nil { - t.Fatal(err) - } else if err := te.checkPong(reply, pingHash); err != nil { - t.Fatal(err) + +waitForPong: + for { + reply, _, err := te.read(te.l1) + if err != nil { + t.Fatal(err) + } + switch reply.Kind() { + case v4wire.PongPacket: + if err := te.checkPong(reply, pingHash); err != nil { + t.Fatal(err) + } + break waitForPong + case v4wire.FindnodePacket: + // FINDNODE from the node is acceptable here since the endpoint + // verification was performed earlier. + default: + t.Fatalf("Expected PONG, got %v %v", reply.Name(), reply) + } } }