Skip to content

Commit c02a6c0

Browse files
authored
Merge pull request #26086 from tengqm/fix-example-tests
Fix example tests
2 parents fb8b89d + 06228c0 commit c02a6c0

File tree

3 files changed

+624
-55
lines changed

3 files changed

+624
-55
lines changed

content/en/examples/examples_test.go

Lines changed: 67 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,11 @@ func getCodecForObject(obj runtime.Object) (runtime.Codec, error) {
148148
}
149149

150150
func validateObject(obj runtime.Object) (errors field.ErrorList) {
151+
podValidationOptions := validation.PodValidationOptions{
152+
AllowMultipleHugePageResources: true,
153+
AllowDownwardAPIHugePages: true,
154+
}
155+
151156
// Enable CustomPodDNS for testing
152157
// feature.DefaultFeatureGate.Set("CustomPodDNS=true")
153158
switch t := obj.(type) {
@@ -182,7 +187,7 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
182187
opts := validation.PodValidationOptions{
183188
AllowMultipleHugePageResources: true,
184189
}
185-
errors = validation.ValidatePod(t, opts)
190+
errors = validation.ValidatePodCreate(t, opts)
186191
case *api.PodList:
187192
for i := range t.Items {
188193
errors = append(errors, validateObject(&t.Items[i])...)
@@ -191,12 +196,12 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
191196
if t.Namespace == "" {
192197
t.Namespace = api.NamespaceDefault
193198
}
194-
errors = validation.ValidatePodTemplate(t)
199+
errors = validation.ValidatePodTemplate(t, podValidationOptions)
195200
case *api.ReplicationController:
196201
if t.Namespace == "" {
197202
t.Namespace = api.NamespaceDefault
198203
}
199-
errors = validation.ValidateReplicationController(t)
204+
errors = validation.ValidateReplicationController(t, podValidationOptions)
200205
case *api.ReplicationControllerList:
201206
for i := range t.Items {
202207
errors = append(errors, validateObject(&t.Items[i])...)
@@ -215,7 +220,11 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
215220
if t.Namespace == "" {
216221
t.Namespace = api.NamespaceDefault
217222
}
218-
errors = validation.ValidateService(t, true)
223+
// handle clusterIPs, logic copied from service strategy
224+
if len(t.Spec.ClusterIP) > 0 && len(t.Spec.ClusterIPs) == 0 {
225+
t.Spec.ClusterIPs = []string{t.Spec.ClusterIP}
226+
}
227+
errors = validation.ValidateService(t)
219228
case *api.ServiceAccount:
220229
if t.Namespace == "" {
221230
t.Namespace = api.NamespaceDefault
@@ -250,12 +259,12 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
250259
if t.Namespace == "" {
251260
t.Namespace = api.NamespaceDefault
252261
}
253-
errors = apps_validation.ValidateDaemonSet(t)
262+
errors = apps_validation.ValidateDaemonSet(t, podValidationOptions)
254263
case *apps.Deployment:
255264
if t.Namespace == "" {
256265
t.Namespace = api.NamespaceDefault
257266
}
258-
errors = apps_validation.ValidateDeployment(t)
267+
errors = apps_validation.ValidateDeployment(t, podValidationOptions)
259268
case *networking.Ingress:
260269
if t.Namespace == "" {
261270
t.Namespace = api.NamespaceDefault
@@ -265,18 +274,30 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
265274
Version: legacyscheme.Scheme.PrioritizedVersionsForGroup(networking.GroupName)[0].Version,
266275
}
267276
errors = networking_validation.ValidateIngressCreate(t, gv)
277+
case *networking.IngressClass:
278+
/*
279+
if t.Namespace == "" {
280+
t.Namespace = api.NamespaceDefault
281+
}
282+
gv := schema.GroupVersion{
283+
Group: networking.GroupName,
284+
Version: legacyscheme.Scheme.PrioritizedVersionsForGroup(networking.GroupName)[0].Version,
285+
}
286+
*/
287+
errors = networking_validation.ValidateIngressClass(t)
288+
268289
case *policy.PodSecurityPolicy:
269290
errors = policy_validation.ValidatePodSecurityPolicy(t)
270291
case *apps.ReplicaSet:
271292
if t.Namespace == "" {
272293
t.Namespace = api.NamespaceDefault
273294
}
274-
errors = apps_validation.ValidateReplicaSet(t)
295+
errors = apps_validation.ValidateReplicaSet(t, podValidationOptions)
275296
case *batch.CronJob:
276297
if t.Namespace == "" {
277298
t.Namespace = api.NamespaceDefault
278299
}
279-
errors = batch_validation.ValidateCronJob(t)
300+
errors = batch_validation.ValidateCronJob(t, podValidationOptions)
280301
case *networking.NetworkPolicy:
281302
if t.Namespace == "" {
282303
t.Namespace = api.NamespaceDefault
@@ -287,6 +308,9 @@ func validateObject(obj runtime.Object) (errors field.ErrorList) {
287308
t.Namespace = api.NamespaceDefault
288309
}
289310
errors = policy_validation.ValidatePodDisruptionBudget(t)
311+
case *rbac.ClusterRole:
312+
// clusterole does not accept namespace
313+
errors = rbac_validation.ValidateClusterRole(t)
290314
case *rbac.ClusterRoleBinding:
291315
// clusterolebinding does not accept namespace
292316
errors = rbac_validation.ValidateClusterRoleBinding(t)
@@ -414,6 +438,7 @@ func TestExampleObjectSchemas(t *testing.T) {
414438
"storagelimits": {&api.LimitRange{}},
415439
},
416440
"admin/sched": {
441+
"clusterrole": {&rbac.ClusterRole{}},
417442
"my-scheduler": {&api.ServiceAccount{}, &rbac.ClusterRoleBinding{}, &rbac.ClusterRoleBinding{}, &apps.Deployment{}},
418443
"pod1": {&api.Pod{}},
419444
"pod2": {&api.Pod{}},
@@ -539,6 +564,7 @@ func TestExampleObjectSchemas(t *testing.T) {
539564
"dapi-envars-pod": {&api.Pod{}},
540565
"dapi-volume": {&api.Pod{}},
541566
"dapi-volume-resources": {&api.Pod{}},
567+
"dependent-envars": {&api.Pod{}},
542568
"envars": {&api.Pod{}},
543569
"pod-multiple-secret-env-variable": {&api.Pod{}},
544570
"pod-secret-envFrom": {&api.Pod{}},
@@ -596,29 +622,41 @@ func TestExampleObjectSchemas(t *testing.T) {
596622
"load-balancer-example": {&apps.Deployment{}},
597623
},
598624
"service/access": {
599-
"frontend": {&api.Service{}, &apps.Deployment{}},
600-
"hello-application": {&apps.Deployment{}},
601-
"hello-service": {&api.Service{}},
602-
"hello": {&apps.Deployment{}},
625+
"backend-deployment": {&apps.Deployment{}},
626+
"backend-service": {&api.Service{}},
627+
"frontend-deployment": {&apps.Deployment{}},
628+
"frontend-service": {&api.Service{}},
629+
"hello-application": {&apps.Deployment{}},
603630
},
604631
"service/networking": {
605-
"curlpod": {&apps.Deployment{}},
606-
"custom-dns": {&api.Pod{}},
607-
"dual-stack-default-svc": {&api.Service{}},
608-
"dual-stack-ipv4-svc": {&api.Service{}},
609-
"dual-stack-ipv6-lb-svc": {&api.Service{}},
610-
"dual-stack-ipv6-svc": {&api.Service{}},
611-
"hostaliases-pod": {&api.Pod{}},
612-
"ingress": {&networking.Ingress{}},
613-
"network-policy-allow-all-egress": {&networking.NetworkPolicy{}},
614-
"network-policy-allow-all-ingress": {&networking.NetworkPolicy{}},
615-
"network-policy-default-deny-egress": {&networking.NetworkPolicy{}},
616-
"network-policy-default-deny-ingress": {&networking.NetworkPolicy{}},
617-
"network-policy-default-deny-all": {&networking.NetworkPolicy{}},
618-
"nginx-policy": {&networking.NetworkPolicy{}},
619-
"nginx-secure-app": {&api.Service{}, &apps.Deployment{}},
620-
"nginx-svc": {&api.Service{}},
621-
"run-my-nginx": {&apps.Deployment{}},
632+
"curlpod": {&apps.Deployment{}},
633+
"custom-dns": {&api.Pod{}},
634+
"dual-stack-default-svc": {&api.Service{}},
635+
"dual-stack-ipfamilies-ipv6": {&api.Service{}},
636+
"dual-stack-ipv6-svc": {&api.Service{}},
637+
"dual-stack-prefer-ipv6-lb-svc": {&api.Service{}},
638+
"dual-stack-preferred-ipfamilies-svc": {&api.Service{}},
639+
"dual-stack-preferred-svc": {&api.Service{}},
640+
"external-lb": {&networking.IngressClass{}},
641+
"example-ingress": {&networking.Ingress{}},
642+
"hostaliases-pod": {&api.Pod{}},
643+
"ingress-resource-backend": {&networking.Ingress{}},
644+
"ingress-wildcard-host": {&networking.Ingress{}},
645+
"minimal-ingress": {&networking.Ingress{}},
646+
"name-virtual-host-ingress": {&networking.Ingress{}},
647+
"name-virtual-host-ingress-no-third-host": {&networking.Ingress{}},
648+
"network-policy-allow-all-egress": {&networking.NetworkPolicy{}},
649+
"network-policy-allow-all-ingress": {&networking.NetworkPolicy{}},
650+
"network-policy-default-deny-egress": {&networking.NetworkPolicy{}},
651+
"network-policy-default-deny-ingress": {&networking.NetworkPolicy{}},
652+
"network-policy-default-deny-all": {&networking.NetworkPolicy{}},
653+
"nginx-policy": {&networking.NetworkPolicy{}},
654+
"nginx-secure-app": {&api.Service{}, &apps.Deployment{}},
655+
"nginx-svc": {&api.Service{}},
656+
"run-my-nginx": {&apps.Deployment{}},
657+
"simple-fanout-example": {&networking.Ingress{}},
658+
"test-ingress": {&networking.Ingress{}},
659+
"tls-example-ingress": {&networking.Ingress{}},
622660
},
623661
"windows": {
624662
"configmap-pod": {&api.ConfigMap{}, &api.Pod{}},

go.mod

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,38 @@
11
module k8s.io/website
22

3-
go 1.14
3+
go 1.15
44

55
require (
6-
k8s.io/apimachinery v0.18.4
7-
k8s.io/kubernetes v1.18.4
6+
k8s.io/apimachinery v0.20.0
7+
k8s.io/kubernetes v1.20.0
88
)
99

1010
replace (
11-
k8s.io/api => k8s.io/api v0.18.4
12-
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.18.4
13-
k8s.io/apimachinery => k8s.io/apimachinery v0.18.4
14-
k8s.io/apiserver => k8s.io/apiserver v0.18.4
15-
k8s.io/cli-runtime => k8s.io/cli-runtime v0.18.4
16-
k8s.io/client-go => k8s.io/client-go v0.18.4
17-
k8s.io/cloud-provider => k8s.io/cloud-provider v0.18.4
18-
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.18.4
19-
k8s.io/code-generator => k8s.io/code-generator v0.18.4
20-
k8s.io/component-base => k8s.io/component-base v0.18.4
21-
k8s.io/cri-api => k8s.io/cri-api v0.18.4
22-
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.18.4
23-
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.18.4
24-
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.18.4
25-
k8s.io/kube-proxy => k8s.io/kube-proxy v0.18.4
26-
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.18.4
27-
k8s.io/kubectl => k8s.io/kubectl v0.18.4
28-
k8s.io/kubelet => k8s.io/kubelet v0.18.4
29-
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.18.4
30-
k8s.io/metrics => k8s.io/metrics v0.18.4
31-
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.18.4
32-
k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.18.4
33-
k8s.io/sample-controller => k8s.io/sample-controller v0.18.4
11+
k8s.io/api => k8s.io/api v0.20.0
12+
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.20.0
13+
k8s.io/apimachinery => k8s.io/apimachinery v0.20.0
14+
k8s.io/apiserver => k8s.io/apiserver v0.20.0
15+
k8s.io/cli-runtime => k8s.io/cli-runtime v0.20.0
16+
k8s.io/client-go => k8s.io/client-go v0.20.0
17+
k8s.io/cloud-provider => k8s.io/cloud-provider v0.20.0
18+
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.20.0
19+
k8s.io/code-generator => k8s.io/code-generator v0.20.0
20+
k8s.io/component-base => k8s.io/component-base v0.20.0
21+
k8s.io/component-helpers => k8s.io/component-helpers v0.20.0
22+
k8s.io/controller-manager => k8s.io/controller-manager v0.20.0
23+
k8s.io/cri-api => k8s.io/cri-api v0.20.0
24+
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.20.0
25+
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.20.0
26+
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.20.0
27+
k8s.io/kube-proxy => k8s.io/kube-proxy v0.20.0
28+
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.20.0
29+
k8s.io/kubectl => k8s.io/kubectl v0.20.0
30+
k8s.io/kubelet => k8s.io/kubelet v0.20.0
31+
k8s.io/kubernetes => k8s.io/kubernetes v1.20.0
32+
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.20.0
33+
k8s.io/metrics => k8s.io/metrics v0.20.0
34+
k8s.io/mount-utils => k8s.io/mount-utils v0.20.0
35+
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.20.0
36+
k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.20.0
37+
k8s.io/sample-controller => k8s.io/sample-controller v0.20.0
3438
)

0 commit comments

Comments
 (0)