Skip to content

Commit a2b9c21

Browse files
committed
Revise test case logic
Major revisions included: - Fake Job labels and selectors generation for validation. - Remove obsolete PVC validation options. - Include newly discovered manifests into the test case. - Remove tests related to PodSecurityPolicy which is gone forever.
1 parent fa637e4 commit a2b9c21

File tree

1 file changed

+36
-18
lines changed

1 file changed

+36
-18
lines changed

content/en/examples/examples_test.go

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727
"strings"
2828
"testing"
2929

30+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3031
"k8s.io/apimachinery/pkg/runtime"
3132
"k8s.io/apimachinery/pkg/runtime/schema"
3233
"k8s.io/apimachinery/pkg/types"
@@ -65,7 +66,6 @@ import (
6566
storage_validation "k8s.io/kubernetes/pkg/apis/storage/validation"
6667

6768
"k8s.io/kubernetes/pkg/capabilities"
68-
"k8s.io/kubernetes/pkg/registry/batch/job"
6969

7070
// initialize install packages
7171
_ "k8s.io/kubernetes/pkg/apis/admissionregistration/install"
@@ -195,17 +195,13 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
195195
case *api.Namespace:
196196
errors = validation.ValidateNamespace(t)
197197
case *api.PersistentVolume:
198-
opts := validation.PersistentVolumeSpecValidationOptions{
199-
AllowReadWriteOncePod: true,
200-
}
198+
opts := validation.PersistentVolumeSpecValidationOptions{}
201199
errors = validation.ValidatePersistentVolume(t, opts)
202200
case *api.PersistentVolumeClaim:
203201
if t.Namespace == "" {
204202
t.Namespace = api.NamespaceDefault
205203
}
206-
opts := validation.PersistentVolumeClaimSpecValidationOptions{
207-
AllowReadWriteOncePod: true,
208-
}
204+
opts := validation.PersistentVolumeClaimSpecValidationOptions{}
209205
errors = validation.ValidatePersistentVolumeClaim(t, opts)
210206
case *api.Pod:
211207
if t.Namespace == "" {
@@ -292,16 +288,34 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
292288
if t.Namespace == "" {
293289
t.Namespace = api.NamespaceDefault
294290
}
291+
295292
// Job needs generateSelector called before validation, and job.Validate does this.
296-
// See: https://github.com/kubernetes/kubernetes/issues/20951#issuecomment-187787040
297-
t.ObjectMeta.UID = types.UID("fakeuid")
298293
if strings.Index(t.ObjectMeta.Name, "$") > -1 {
299294
t.ObjectMeta.Name = "skip-for-good"
300295
}
301-
errors = job.Strategy.Validate(nil, t)
296+
t.ObjectMeta.UID = types.UID("fakeuid")
297+
if t.Spec.Template.ObjectMeta.Labels == nil {
298+
t.Spec.Template.ObjectMeta.Labels = make(map[string]string)
299+
}
300+
t.Spec.Template.ObjectMeta.Labels["controller-uid"] = "fakeuid"
301+
t.Spec.Template.ObjectMeta.Labels["job-name"] = t.ObjectMeta.Name
302+
if t.Spec.Selector == nil {
303+
t.Spec.Selector = &metav1.LabelSelector{
304+
MatchLabels: map[string]string{
305+
"controller-uid": "fakeuid",
306+
"job-name": t.ObjectMeta.Name,
307+
},
308+
}
309+
}
310+
opts := batch_validation.JobValidationOptions{
311+
RequirePrefixedLabels: false,
312+
}
313+
errors = batch_validation.ValidateJob(t, opts)
314+
302315
// case *flowcontrol.FlowSchema:
303316
// TODO: This is still failing
304317
// errors = flowcontrol_validation.ValidateFlowSchema(t)
318+
305319
case *networking.Ingress:
306320
if t.Namespace == "" {
307321
t.Namespace = api.NamespaceDefault
@@ -314,8 +328,6 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
314328
t.Namespace = api.NamespaceDefault
315329
}
316330
errors = networking_validation.ValidateNetworkPolicy(t, netValidationOptions)
317-
case *policy.PodSecurityPolicy:
318-
errors = policy_validation.ValidatePodSecurityPolicy(t)
319331
case *policy.PodDisruptionBudget:
320332
if t.Namespace == "" {
321333
t.Namespace = api.NamespaceDefault
@@ -509,7 +521,9 @@ func TestExampleObjectSchemas(t *testing.T) {
509521
"indexed-job-vol": {&batch.Job{}},
510522
},
511523
"application/job/rabbitmq": {
512-
"job": {&batch.Job{}},
524+
"job": {&batch.Job{}},
525+
"rabbitmq-statefulset": {&apps.StatefulSet{}},
526+
"rabbitmq-service": {&api.Service{}},
513527
},
514528
"application/job/redis": {
515529
"job": {&batch.Job{}},
@@ -671,18 +685,15 @@ func TestExampleObjectSchemas(t *testing.T) {
671685
"pv-pod": {&api.Pod{}},
672686
"pv-volume": {&api.PersistentVolume{}},
673687
"redis": {&api.Pod{}},
688+
"projected-clustertrustbundle": {&api.Pod{}},
674689
},
675690
"pods/topology-spread-constraints": {
676691
"one-constraint": {&api.Pod{}},
677692
"one-constraint-with-nodeaffinity": {&api.Pod{}},
678693
"two-constraints": {&api.Pod{}},
679694
},
680695
"policy": {
681-
"baseline-psp": {&policy.PodSecurityPolicy{}},
682-
"example-psp": {&policy.PodSecurityPolicy{}},
683-
"priority-class-resourcequota": {&api.ResourceQuota{}},
684-
"privileged-psp": {&policy.PodSecurityPolicy{}},
685-
"restricted-psp": {&policy.PodSecurityPolicy{}},
696+
"priority-class-resourcequota": {&api.ResourceQuota{}},
686697
"zookeeper-pod-disruption-budget-maxunavailable": {&policy.PodDisruptionBudget{}},
687698
"zookeeper-pod-disruption-budget-minavailable": {&policy.PodDisruptionBudget{}},
688699
},
@@ -766,6 +777,13 @@ func TestExampleObjectSchemas(t *testing.T) {
766777
"audit": {
767778
"audit-policy": true,
768779
},
780+
// PSP is dropped in v1.29, do not validate them
781+
"policy": {
782+
"baseline-psp": true,
783+
"example-psp": true,
784+
"privileged-psp": true,
785+
"restricted-psp": true,
786+
},
769787
}
770788
capabilities.SetForTests(capabilities.Capabilities{
771789
AllowPrivileged: true,

0 commit comments

Comments
 (0)