karmada/pkg/util/helper/pod_test.go

168 lines
3.5 KiB
Go

package helper
import (
"reflect"
"testing"
corev1 "k8s.io/api/core/v1"
)
func TestGetPodCondition(t *testing.T) {
type args struct {
status *corev1.PodStatus
conditionType corev1.PodConditionType
}
tests := []struct {
name string
args args
wantedOrder int
wantCondition *corev1.PodCondition
}{
{
name: "empty status",
args: args{
status: nil,
conditionType: corev1.ContainersReady,
},
wantedOrder: -1,
wantCondition: nil,
},
{
name: "empty condition",
args: args{
status: &corev1.PodStatus{Conditions: nil},
conditionType: corev1.ContainersReady,
},
wantedOrder: -1,
wantCondition: nil,
},
{
name: "doesn't have objective condition",
args: args{
status: &corev1.PodStatus{
Conditions: []corev1.PodCondition{
{
Type: corev1.PodInitialized,
},
},
},
conditionType: corev1.ContainersReady,
},
wantedOrder: -1,
wantCondition: nil,
},
{
name: "have objective condition",
args: args{
status: &corev1.PodStatus{
Conditions: []corev1.PodCondition{
{
Type: corev1.PodInitialized,
},
{
Type: corev1.ContainersReady,
},
},
},
conditionType: corev1.ContainersReady,
},
wantedOrder: 1,
wantCondition: &corev1.PodCondition{
Type: corev1.ContainersReady,
},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, got1 := GetPodCondition(tt.args.status, tt.args.conditionType)
if got != tt.wantedOrder {
t.Errorf("GetPodCondition() got = %v, wantedOrder %v", got, tt.wantedOrder)
}
if !reflect.DeepEqual(got1, tt.wantCondition) {
t.Errorf("GetPodCondition() got1 = %v, wantedOrder %v", got1, tt.wantCondition)
}
})
}
}
func TestGetPodConditionFromList(t *testing.T) {
type args struct {
conditions []corev1.PodCondition
conditionType corev1.PodConditionType
}
var tests = []struct {
name string
args args
wantedOrder int
wantCondition *corev1.PodCondition
}{
{
name: "empty condition",
args: args{
conditions: nil,
conditionType: corev1.ContainersReady,
},
wantedOrder: -1,
wantCondition: nil,
},
{
name: "doesn't have objective condition",
args: args{
conditions: []corev1.PodCondition{
{
Type: corev1.PodInitialized,
},
},
conditionType: corev1.ContainersReady,
},
wantedOrder: -1,
wantCondition: nil,
},
{
name: "have objective condition",
args: args{
conditions: []corev1.PodCondition{
{
Type: corev1.PodInitialized,
},
{
Type: corev1.ContainersReady,
},
},
conditionType: corev1.ContainersReady,
},
wantedOrder: 1,
wantCondition: &corev1.PodCondition{
Type: corev1.ContainersReady,
},
},
{
name: "PodReady condition",
args: args{
conditions: []corev1.PodCondition{
{
Type: corev1.PodInitialized,
},
{
Type: corev1.PodReady,
},
},
conditionType: corev1.ContainersReady,
},
wantedOrder: -1,
wantCondition: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
got, got1 := GetPodConditionFromList(tt.args.conditions, tt.args.conditionType)
if got != tt.wantedOrder {
t.Errorf("GetPodConditionFromList() got = %v, wantedOrder %v", got, tt.wantedOrder)
}
if !reflect.DeepEqual(got1, tt.wantCondition) {
t.Errorf("GetPodConditionFromList() got1 = %v, wantedOrder %v", got1, tt.wantCondition)
}
})
}
}