mirror of https://github.com/k3s-io/k3s
Split TestLoopbackHostPort into 2 tests
firstly, split into two tests: TestLoopbackHostPortIPv4 and TestLoopbackHostPortIPv6. then improve error handling, going to fail with explicit error message when run host that does not support ipv6 or ipv4k3s-v1.15.3
parent
4b7c607ba4
commit
6b73b5031c
|
@ -21,7 +21,15 @@ import (
|
|||
"testing"
|
||||
)
|
||||
|
||||
func TestLoopbackHostPort(t *testing.T) {
|
||||
func TestLoopbackHostPortIPv4(t *testing.T) {
|
||||
_, ipv6only, err := isIPv6LoopbackSupported()
|
||||
if err != nil {
|
||||
t.Fatalf("fail to enumerate network interface, %s", err)
|
||||
}
|
||||
if ipv6only {
|
||||
t.Fatalf("no ipv4 loopback interface")
|
||||
}
|
||||
|
||||
host, port, err := LoopbackHostPort("1.2.3.4:443")
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
|
@ -43,8 +51,17 @@ func TestLoopbackHostPort(t *testing.T) {
|
|||
if port != "443" {
|
||||
t.Fatalf("expected 443 as port, got %q", port)
|
||||
}
|
||||
}
|
||||
func TestLoopbackHostPortIPv6(t *testing.T) {
|
||||
ipv6, _, err := isIPv6LoopbackSupported()
|
||||
if err != nil {
|
||||
t.Fatalf("fail to enumerate network interface, %s", err)
|
||||
}
|
||||
if !ipv6 {
|
||||
t.Fatalf("no ipv6 loopback interface")
|
||||
}
|
||||
|
||||
host, port, err = LoopbackHostPort("[ff06:0:0:0:0:0:0:c3]:443")
|
||||
host, port, err := LoopbackHostPort("[ff06:0:0:0:0:0:0:c3]:443")
|
||||
if err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
@ -62,8 +79,28 @@ func TestLoopbackHostPort(t *testing.T) {
|
|||
if ip := net.ParseIP(host); ip == nil || !ip.IsLoopback() || ip.To4() != nil {
|
||||
t.Fatalf("expected IPv6 host to be loopback, got %q", host)
|
||||
}
|
||||
|
||||
if port != "443" {
|
||||
t.Fatalf("expected 443 as port, got %q", port)
|
||||
}
|
||||
}
|
||||
|
||||
func isIPv6LoopbackSupported() (ipv6 bool, ipv6only bool, err error) {
|
||||
addrs, err := net.InterfaceAddrs()
|
||||
if err != nil {
|
||||
return false, false, err
|
||||
}
|
||||
ipv4 := false
|
||||
for _, address := range addrs {
|
||||
ipnet, ok := address.(*net.IPNet)
|
||||
if !ok || !ipnet.IP.IsLoopback() {
|
||||
continue
|
||||
}
|
||||
if ipnet.IP.To4() == nil {
|
||||
ipv6 = true
|
||||
continue
|
||||
}
|
||||
ipv4 = true
|
||||
}
|
||||
ipv6only = ipv6 && !ipv4
|
||||
return ipv6, ipv6only, nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue