Merge pull request #112891 from ii/create-namespace-finalizer-test

Write e2e test for replaceCoreV1NamespaceFinalize +1 Endpoints
This commit is contained in:
Kubernetes Prow Robot 2022-10-14 21:25:23 -07:00 committed by GitHub
commit 83c2585716
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -30,6 +30,7 @@ import (
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/intstr"
utilrand "k8s.io/apimachinery/pkg/util/rand"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/apimachinery/pkg/util/wait"
clientscheme "k8s.io/client-go/kubernetes/scheme"
@ -381,6 +382,69 @@ var _ = SIGDescribe("Namespaces [Serial]", func() {
framework.ExpectEqual(updatedNamespace.ObjectMeta.Labels[ns], "updated", "Failed to update namespace %q. Current Labels: %#v", ns, updatedNamespace.Labels)
framework.Logf("Namespace %q now has labels, %#v", ns, updatedNamespace.Labels)
})
ginkgo.It("should apply a finalizer to a Namespace", func() {
fakeFinalizer := v1.FinalizerName("e2e.example.com/fakeFinalizer")
var updatedNamespace *v1.Namespace
nsName := "e2e-ns-" + utilrand.String(5)
ginkgo.By(fmt.Sprintf("Creating namespace %q", nsName))
testNamespace, err := f.CreateNamespace(nsName, nil)
framework.ExpectNoError(err, "failed creating Namespace")
ns := testNamespace.ObjectMeta.Name
nsClient := f.ClientSet.CoreV1().Namespaces()
framework.Logf("Namespace %q has %#v", testNamespace.Name, testNamespace.Spec.Finalizers)
ginkgo.By(fmt.Sprintf("Adding e2e finalizer to namespace %q", ns))
err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
updateNamespace, err := nsClient.Get(context.TODO(), ns, metav1.GetOptions{})
framework.ExpectNoError(err, "Unable to get Namespace %q", ns)
updateNamespace.Spec.Finalizers = append(updateNamespace.Spec.Finalizers, fakeFinalizer)
updatedNamespace, err = nsClient.Finalize(context.TODO(), updateNamespace, metav1.UpdateOptions{})
return err
})
framework.ExpectNoError(err, "failed to add finalizer to the namespace: %q", ns)
var foundFinalizer bool
for _, item := range updatedNamespace.Spec.Finalizers {
if item == fakeFinalizer {
foundFinalizer = true
break
}
}
framework.ExpectEqual(foundFinalizer, true, "Finalizer %q was not found. Namespace %q has %#v", fakeFinalizer, updatedNamespace.Spec.Finalizers)
framework.Logf("Namespace %q has %#v", updatedNamespace.Name, updatedNamespace.Spec.Finalizers)
ginkgo.By(fmt.Sprintf("Removing e2e finalizer from namespace %q", ns))
err = retry.RetryOnConflict(retry.DefaultRetry, func() error {
updatedNamespace, err = nsClient.Get(context.TODO(), ns, metav1.GetOptions{})
framework.ExpectNoError(err, "Unable to get namespace %q", ns)
var finalizerList []v1.FinalizerName
for _, item := range updatedNamespace.Spec.Finalizers {
if item != fakeFinalizer {
finalizerList = append(finalizerList, item)
}
}
updatedNamespace.Spec.Finalizers = finalizerList
updatedNamespace, err = nsClient.Finalize(context.TODO(), updatedNamespace, metav1.UpdateOptions{})
return err
})
framework.ExpectNoError(err, "failed to remove finalizer from namespace: %q", ns)
foundFinalizer = false
for _, item := range updatedNamespace.Spec.Finalizers {
if item == fakeFinalizer {
foundFinalizer = true
break
}
}
framework.ExpectEqual(foundFinalizer, false, "Finalizer %q was found. Namespace %q has %#v", fakeFinalizer, updatedNamespace.Spec.Finalizers)
framework.Logf("Namespace %q has %#v", updatedNamespace.Name, updatedNamespace.Spec.Finalizers)
})
})
func unstructuredToNamespace(obj *unstructured.Unstructured) (*v1.Namespace, error) {