From caec2c7e8bc59e9b1108ea819ddf94caf93c9ed1 Mon Sep 17 00:00:00 2001 From: David Crawshaw Date: Tue, 3 Mar 2020 11:42:31 -0500 Subject: [PATCH] magicsock: test sequence of pings Signed-off-by: David Crawshaw --- wgengine/magicsock/magicsock_test.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/wgengine/magicsock/magicsock_test.go b/wgengine/magicsock/magicsock_test.go index 534385dbb..687b595b3 100644 --- a/wgengine/magicsock/magicsock_test.go +++ b/wgengine/magicsock/magicsock_test.go @@ -353,4 +353,31 @@ func TestTwoDevicePing(t *testing.T) { ping1(t) ping2(t) }) + + t.Run("ping 1.0.0.1 x50", func(t *testing.T) { + const count = 50 + + msg := func(i int) []byte { + b := tuntest.Ping(net.ParseIP("1.0.0.2"), net.ParseIP("1.0.0.1")) + b[len(b)-1] = byte(i) // set seq num + return b + } + + for i := 0; i < count; i++ { + b := msg(i) + tun1.Outbound <- b + } + + for i := 0; i < count; i++ { + b := msg(i) + select { + case msgRecv := <-tun2.Inbound: + if !bytes.Equal(b, msgRecv) { + t.Errorf("return ping %d did not transit correctly", i) + } + case <-time.After(1 * time.Second): + t.Fatalf("return ping %d did not transit", i) + } + } + }) }