mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
test: IngressClass exclusion test races with admission cache
The admission cache may take longer to see both ingress classes than it takes to create the ingress. We must loop until we see the appropriate error, cleaning up after ourselves as we go.
This commit is contained in:
parent
640b3c0582
commit
77973b5279
@ -19,10 +19,12 @@ package network
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"strings"
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
networkingv1beta1 "k8s.io/api/networking/v1beta1"
|
networkingv1beta1 "k8s.io/api/networking/v1beta1"
|
||||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/util/intstr"
|
"k8s.io/apimachinery/pkg/util/intstr"
|
||||||
|
"k8s.io/apimachinery/pkg/util/wait"
|
||||||
clientset "k8s.io/client-go/kubernetes"
|
clientset "k8s.io/client-go/kubernetes"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
|
|
||||||
@ -73,14 +75,19 @@ var _ = SIGDescribe("IngressClass [Feature:Ingress]", func() {
|
|||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
defer deleteIngressClass(cs, ingressClass2.Name)
|
defer deleteIngressClass(cs, ingressClass2.Name)
|
||||||
|
|
||||||
_, err = createBasicIngress(cs, f.Namespace.Name)
|
// the admission controller may take a few seconds to observe both ingress classes
|
||||||
if err == nil {
|
|
||||||
framework.Failf("Expected error creating Ingress")
|
|
||||||
}
|
|
||||||
|
|
||||||
expectedErr := "2 default IngressClasses were found, only 1 allowed"
|
expectedErr := "2 default IngressClasses were found, only 1 allowed"
|
||||||
if !strings.Contains(err.Error(), expectedErr) {
|
var lastErr error
|
||||||
framework.Failf("Expected error to contain %s, got %s", expectedErr, err.Error())
|
if err := wait.Poll(time.Second, time.Minute, func() (bool, error) {
|
||||||
|
defer cs.NetworkingV1beta1().Ingresses(f.Namespace.Name).Delete(context.TODO(), "ingress1", metav1.DeleteOptions{})
|
||||||
|
_, err := createBasicIngress(cs, f.Namespace.Name)
|
||||||
|
if err == nil {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
lastErr = err
|
||||||
|
return strings.Contains(err.Error(), expectedErr), nil
|
||||||
|
}); err != nil {
|
||||||
|
framework.Failf("Expected error to contain %s, got %s", expectedErr, lastErr.Error())
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user