Files
kubevpn/pkg/handler/sort_test.go

146 lines
3.6 KiB
Go

package handler
import (
"net"
"reflect"
"testing"
"github.com/wencaiwulue/kubevpn/v2/pkg/dns"
)
func TestSortConnect(t *testing.T) {
tests := []struct {
connects Connects
expectedOrder []string
howToGetOrder func(connects []*ConnectOptions) []string
}{
{
connects: []*ConnectOptions{
{
Namespace: "clusterA",
ExtraRouteInfo: ExtraRouteInfo{
ExtraCIDR: []string{"192.168.31.1/32"},
},
apiServerIPs: []net.IP{net.ParseIP("172.21.0.12")},
extraHost: nil,
},
{
Namespace: "clusterB",
ExtraRouteInfo: ExtraRouteInfo{
ExtraCIDR: []string{"10.16.31.9/32"},
},
apiServerIPs: []net.IP{net.ParseIP("192.168.31.1")},
extraHost: nil,
},
},
expectedOrder: []string{"clusterB", "clusterA"},
howToGetOrder: func(connects []*ConnectOptions) []string {
var order []string
for _, connect := range connects {
order = append(order, connect.Namespace)
}
return order
},
},
{
connects: []*ConnectOptions{
{
Namespace: "clusterA",
ExtraRouteInfo: ExtraRouteInfo{
ExtraCIDR: []string{"192.168.31.2/32"},
},
apiServerIPs: []net.IP{net.ParseIP("172.21.0.12")},
extraHost: []dns.Entry{{
IP: "192.168.31.1",
}},
},
{
Namespace: "clusterB",
ExtraRouteInfo: ExtraRouteInfo{
ExtraCIDR: []string{"10.16.31.9/32"},
},
apiServerIPs: []net.IP{net.ParseIP("192.168.31.1")},
extraHost: nil,
},
},
expectedOrder: []string{"clusterB", "clusterA"},
howToGetOrder: func(connects []*ConnectOptions) []string {
var order []string
for _, connect := range connects {
order = append(order, connect.Namespace)
}
return order
},
},
{
connects: []*ConnectOptions{
{
Namespace: "clusterA",
ExtraRouteInfo: ExtraRouteInfo{},
apiServerIPs: []net.IP{net.ParseIP("192.168.31.100")},
extraHost: nil,
},
{
Namespace: "clusterB",
ExtraRouteInfo: ExtraRouteInfo{
ExtraCIDR: []string{"192.168.31.2/32"},
},
apiServerIPs: []net.IP{net.ParseIP("172.21.0.12")},
extraHost: []dns.Entry{{
IP: "192.168.31.1",
}},
},
},
expectedOrder: []string{"clusterB", "clusterA"},
howToGetOrder: func(connects []*ConnectOptions) []string {
var order []string
for _, connect := range connects {
order = append(order, connect.Namespace)
}
return order
},
},
{
connects: []*ConnectOptions{
{
Namespace: "clusterA",
ExtraRouteInfo: ExtraRouteInfo{},
apiServerIPs: []net.IP{net.ParseIP("192.168.31.100")},
extraHost: nil,
},
{
Namespace: "clusterB",
ExtraRouteInfo: ExtraRouteInfo{
ExtraCIDR: []string{"192.168.31.1/32"},
},
apiServerIPs: []net.IP{net.ParseIP("172.21.0.12")},
extraHost: nil,
},
{
Namespace: "clusterC",
ExtraRouteInfo: ExtraRouteInfo{
ExtraCIDR: []string{"10.16.31.9/32"},
},
apiServerIPs: []net.IP{net.ParseIP("192.168.31.1")},
extraHost: nil,
},
},
expectedOrder: []string{"clusterC", "clusterB", "clusterA"},
howToGetOrder: func(connects []*ConnectOptions) []string {
var order []string
for _, connect := range connects {
order = append(order, connect.Namespace)
}
return order
},
},
}
for i, test := range tests {
order := test.howToGetOrder(test.connects.Sort())
equal := reflect.DeepEqual(order, test.expectedOrder)
if !equal {
t.Fatalf("Failed to sort conntions round %d, expected: %v, real: %v", i+1, test.expectedOrder, order)
}
}
}