karmada/pkg/karmadactl/cmdinit/kubernetes/services_test.go

124 lines
3.5 KiB
Go

package kubernetes
import (
"context"
"testing"
corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes/fake"
)
func TestCommandInitOption_makeEtcdService(t *testing.T) {
cmdOpt := CommandInitOption{EtcdReplicas: 1, Namespace: "karmada"}
svc := cmdOpt.makeEtcdService("foo")
if svc == nil {
t.Errorf("makeEtcdService() return nil")
}
}
func TestCommandInitOption_makeKarmadaAPIServerService(t *testing.T) {
cmdOpt := CommandInitOption{EtcdReplicas: 1, Namespace: "karmada"}
svc := cmdOpt.makeKarmadaAPIServerService()
if svc == nil {
t.Errorf("makeKarmadaAPIServerService() return nil")
}
}
func TestCommandInitOption_kubeControllerManagerService(t *testing.T) {
cmdOpt := CommandInitOption{EtcdReplicas: 1, Namespace: "karmada"}
svc := cmdOpt.kubeControllerManagerService()
if svc == nil {
t.Errorf("kubeControllerManagerService() return nil")
}
}
func TestCommandInitOption_karmadaWebhookService(t *testing.T) {
cmdOpt := CommandInitOption{EtcdReplicas: 1, Namespace: "karmada"}
svc := cmdOpt.karmadaWebhookService()
if svc == nil {
t.Errorf("karmadaWebhookService() return nil")
}
}
func TestCommandInitOption_karmadaAggregatedAPIServerService(t *testing.T) {
cmdOpt := CommandInitOption{EtcdReplicas: 1, Namespace: "karmada"}
svc := cmdOpt.karmadaAggregatedAPIServerService()
if svc == nil {
t.Errorf("karmadaAggregatedAPIServerService() return nil")
}
}
func TestCommandInitOption_isNodePortExist(t *testing.T) {
tests := []struct {
name string
option CommandInitOption
svc []*corev1.Service
exists bool
}{
{
name: "there is no svc",
option: CommandInitOption{
KubeClientSet: fake.NewSimpleClientset(),
KarmadaAPIServerNodePort: 30000,
},
exists: false,
},
{
name: "there is no node port svc",
option: CommandInitOption{
KubeClientSet: fake.NewSimpleClientset(),
KarmadaAPIServerNodePort: 30000,
},
svc: []*corev1.Service{
{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
Spec: corev1.ServiceSpec{Type: corev1.ServiceTypeClusterIP, Ports: []corev1.ServicePort{{Port: 30000}}},
},
},
exists: false,
},
{
name: "there is node port svc and it's port is same with KarmadaAPIServerNodePort",
option: CommandInitOption{
KubeClientSet: fake.NewSimpleClientset(),
KarmadaAPIServerNodePort: 30000,
},
svc: []*corev1.Service{
{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
Spec: corev1.ServiceSpec{Type: corev1.ServiceTypeNodePort, Ports: []corev1.ServicePort{{NodePort: 30000}}},
},
},
exists: true,
},
{
name: "there is node port svc and it's port is not same with KarmadaAPIServerNodePort",
option: CommandInitOption{
KubeClientSet: fake.NewSimpleClientset(),
KarmadaAPIServerNodePort: 30001,
},
svc: []*corev1.Service{
{
ObjectMeta: metav1.ObjectMeta{Name: "foo"},
Spec: corev1.ServiceSpec{Type: corev1.ServiceTypeNodePort, Ports: []corev1.ServicePort{{NodePort: 30000}}},
},
},
exists: false,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
for _, svc := range tt.svc {
_, err := tt.option.KubeClientSet.CoreV1().Services("karmada-system").Create(context.Background(), svc, metav1.CreateOptions{})
if err != nil {
t.Errorf("create failed, err: %v", err)
}
}
if got := tt.option.isNodePortExist(); got != tt.exists {
t.Errorf("CommandInitOption.isNodePortExist() = %v, want %v", got, tt.exists)
}
})
}
}