mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-10-04 23:12:42 +08:00
146 lines
3.6 KiB
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)
|
|
}
|
|
}
|
|
}
|