Chore: add replicas tweak function

This commit is contained in:
Qirui 2023-03-20 11:34:52 +08:00
parent 7fc08e0ce7
commit 4418a9f590

View File

@ -80,6 +80,12 @@ func tweakPodManagementPolicy(policy apps.PodManagementPolicyType) statefulSetTw
} }
} }
func tweakReplicas(replicas int32) statefulSetTweak {
return func(ss *apps.StatefulSet) {
ss.Spec.Replicas = replicas
}
}
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{
@ -276,16 +282,7 @@ func TestValidateStatefulSet(t *testing.T) {
}, },
{ {
name: "negative_replicas", name: "negative_replicas",
set: apps.StatefulSet{ set: mkStatefulSet(&validPodTemplate, tweakReplicas(-1)),
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Replicas: -1,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.Invalid(field.NewPath("spec", "replicas"), nil, ""), field.Invalid(field.NewPath("spec", "replicas"), nil, ""),
}, },
@ -507,48 +504,24 @@ func TestValidateStatefulSet(t *testing.T) {
}, },
{ {
name: "empty pod management policy", name: "empty pod management policy",
set: apps.StatefulSet{ set: mkStatefulSet(&validPodTemplate,
ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault}, tweakPodManagementPolicy(""),
Spec: apps.StatefulSetSpec{ tweakReplicas(3),
PodManagementPolicy: "", ),
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
Replicas: 3,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.Required(field.NewPath("spec", "podManagementPolicy"), ""), field.Required(field.NewPath("spec", "podManagementPolicy"), ""),
}, },
}, },
{ {
name: "invalid pod management policy", name: "invalid pod management policy",
set: apps.StatefulSet{ set: mkStatefulSet(&validPodTemplate, tweakPodManagementPolicy("foo")),
ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: "foo",
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
Replicas: 3,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.Invalid(field.NewPath("spec", "podManagementPolicy"), nil, ""), field.Invalid(field.NewPath("spec", "podManagementPolicy"), nil, ""),
}, },
}, },
{ {
name: "set active deadline seconds", name: "set active deadline seconds",
set: apps.StatefulSet{ set: mkStatefulSet(&invalidPodTemplate2, tweakReplicas(3)),
ObjectMeta: metav1.ObjectMeta{Name: "abc-123", Namespace: metav1.NamespaceDefault},
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: invalidPodTemplate2.Template,
Replicas: 3,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.Forbidden(field.NewPath("spec", "template", "spec", "activeDeadlineSeconds"), ""), field.Forbidden(field.NewPath("spec", "template", "spec", "activeDeadlineSeconds"), ""),
}, },
@ -982,25 +955,8 @@ func TestValidateStatefulSetUpdate(t *testing.T) {
successCases := []testCase{ successCases := []testCase{
{ {
name: "update replica count", name: "update replica count",
old: apps.StatefulSet{ old: mkStatefulSet(&validPodTemplate),
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault}, update: mkStatefulSet(&validPodTemplate, tweakReplicas(3)),
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
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,
Replicas: 3,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
}, },
{ {
name: "update containers 1", name: "update containers 1",
@ -1233,25 +1189,8 @@ func TestValidateStatefulSetUpdate(t *testing.T) {
}, },
{ {
name: "update to negative replicas", name: "update to negative replicas",
old: apps.StatefulSet{ old: mkStatefulSet(&validPodTemplate),
ObjectMeta: metav1.ObjectMeta{Name: "abc", Namespace: metav1.NamespaceDefault}, update: mkStatefulSet(&validPodTemplate, tweakReplicas(-1)),
Spec: apps.StatefulSetSpec{
PodManagementPolicy: apps.OrderedReadyPodManagement,
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,
Replicas: -1,
Selector: &metav1.LabelSelector{MatchLabels: validLabels},
Template: validPodTemplate.Template,
UpdateStrategy: apps.StatefulSetUpdateStrategy{Type: apps.RollingUpdateStatefulSetStrategyType},
},
},
errs: field.ErrorList{ errs: field.ErrorList{
field.Invalid(field.NewPath("spec", "replicas"), nil, ""), field.Invalid(field.NewPath("spec", "replicas"), nil, ""),
}, },