tailscale/wgengine/netstack/netstack_userping_test.go
Brad Fitzpatrick 5f88b65764 wgengine/netstack: check userspace ping success on Windows
Hacky temporary workaround until we do #13654 correctly.

Updates #13654

Change-Id: I764eaedbb112fb3a34dddb89572fec1b2543fd4a
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
2024-10-03 09:07:39 -07:00

78 lines
1.8 KiB
Go

// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package netstack
import (
"net/netip"
"testing"
)
func TestWindowsPingOutputIsSuccess(t *testing.T) {
tests := []struct {
name string
ip string
out string
want bool
}{
{
name: "success",
ip: "10.0.0.1",
want: true,
out: `Pinging 10.0.0.1 with 32 bytes of data:
Reply from 10.0.0.1: bytes=32 time=7ms TTL=64
Ping statistics for 10.0.0.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 7ms, Maximum = 7ms, Average = 7ms
`,
},
{
name: "success_sub_millisecond",
ip: "10.0.0.1",
want: true,
out: `Pinging 10.0.0.1 with 32 bytes of data:
Reply from 10.0.0.1: bytes=32 time<1ms TTL=64
Ping statistics for 10.0.0.1:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 7ms, Maximum = 7ms, Average = 7ms
`,
},
{
name: "success_german",
ip: "10.0.0.1",
want: true,
out: `Ping wird ausgeführt für 10.0.0.1 mit 32 Bytes Daten:
Antwort von from 10.0.0.1: Bytes=32 Zeit=7ms TTL=64
Ping-Statistik für 10.0.0.1:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0 (0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 7ms, Maximum = 7ms, Mittelwert = 7ms
`,
},
{
name: "unreachable",
ip: "10.0.0.6",
want: false,
out: `Pinging 10.0.0.6 with 32 bytes of data:
Reply from 10.0.108.189: Destination host unreachable
Ping statistics for 10.0.0.6:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
`,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got := windowsPingOutputIsSuccess(netip.MustParseAddr(tt.ip), []byte(tt.out))
if got != tt.want {
t.Errorf("got %v; want %v", got, tt.want)
}
})
}
}