78 lines
1.8 KiB
Go
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)
|
|
}
|
|
})
|
|
}
|
|
}
|