Chore: add pod management policy tweak function

This commit is contained in:
Qirui 2023-03-20 11:31:09 +08:00
parent 77c7d6efcf
commit 7fc08e0ce7

View File

@ -74,6 +74,12 @@ func tweakNamespace(ns string) statefulSetTweak {
} }
} }
func tweakPodManagementPolicy(policy apps.PodManagementPolicyType) statefulSetTweak {
return func(ss *apps.StatefulSet) {
ss.Spec.PodManagementPolicy = policy
}
}
func TestValidateStatefulSet(t *testing.T) { func TestValidateStatefulSet(t *testing.T) {
validLabels := map[string]string{"a": "b"} validLabels := map[string]string{"a": "b"}
validPodTemplate := api.PodTemplate{ validPodTemplate := api.PodTemplate{
@ -135,27 +141,11 @@ func TestValidateStatefulSet(t *testing.T) {
}, },
{ {
name: "parallel pod management", name: "parallel pod management",
set: apps.StatefulSet{ set: mkStatefulSet(&validPodTemplate, tweakPodManagementPolicy(apps.ParallelPodManagement)),
ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.ParallelPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
}, },
{ {
name: "ordered ready pod management", name: "ordered ready pod management",
set: apps.StatefulSet{ set: mkStatefulSet(&validPodTemplate, tweakPodManagementPolicy(apps.OrderedReadyPodManagement)),
ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.OnDeleteStatefulSetStrategyType},
},
},
}, },
{ {
name: "update strategy", name: "update strategy",
@ -1227,47 +1217,16 @@ func TestValidateStatefulSetUpdate(t *testing.T) {
}, },
{ {
name: "update pod management policy 1", name: "update pod management policy 1",
old: apps.StatefulSet{ old: mkStatefulSet(&validPodTemplate, tweakPodManagementPolicy("")),
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault}, update: mkStatefulSet(&validPodTemplate, tweakPodManagementPolicy(apps.OrderedReadyPodManagement)),
Spec: apps.StatefulSetSpec{
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
update: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.Forbidden(field.NewPath("spec"), ""), field.Forbidden(field.NewPath("spec"), ""),
}, },
}, },
{ {
name: "update pod management policy 2", name: "update pod management policy 2",
old: apps.StatefulSet{ old: mkStatefulSet(&validPodTemplate, tweakPodManagementPolicy(apps.ParallelPodManagement)),
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault}, update: mkStatefulSet(&validPodTemplate, tweakPodManagementPolicy(apps.OrderedReadyPodManagement)),
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.ParallelPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
update: apps.StatefulSet{
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.Forbidden(field.NewPath("spec"), ""), field.Forbidden(field.NewPath("spec"), ""),
}, },