diff --git a/test/e2e/common/BUILD b/test/e2e/common/BUILD index 5d8f37709a0..3c642b6e247 100644 --- a/test/e2e/common/BUILD +++ b/test/e2e/common/BUILD @@ -58,7 +58,6 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", - "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/types:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/diff:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/intstr:go_default_library", @@ -67,7 +66,6 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/watch:go_default_library", - "//staging/src/k8s.io/client-go/dynamic:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//staging/src/k8s.io/client-go/tools/cache:go_default_library", "//staging/src/k8s.io/client-go/tools/watch:go_default_library", diff --git a/test/e2e/common/configmap.go b/test/e2e/common/configmap.go index 93311c5ee3d..06d8e5e9310 100644 --- a/test/e2e/common/configmap.go +++ b/test/e2e/common/configmap.go @@ -20,16 +20,11 @@ import ( "context" "encoding/json" "fmt" - "time" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/uuid" - watch "k8s.io/apimachinery/pkg/watch" - "k8s.io/client-go/dynamic" - watchtools "k8s.io/client-go/tools/watch" "k8s.io/kubernetes/test/e2e/framework" imageutils "k8s.io/kubernetes/test/utils/image" @@ -39,12 +34,6 @@ import ( var _ = ginkgo.Describe("[sig-node] ConfigMap", func() { f := framework.NewDefaultFramework("configmap") - var dc dynamic.Interface - - ginkgo.BeforeEach(func() { - dc = f.DynamicClient - }) - /* Release : v1.9 Testname: ConfigMap, from environment field @@ -172,12 +161,6 @@ var _ = ginkgo.Describe("[sig-node] ConfigMap", func() { testNamespaceName := f.Namespace.Name testConfigMapName := "test-configmap" + string(uuid.NewUUID()) - configMapResource := schema.GroupVersionResource{Group: "", Version: "v1", Resource: "configmaps"} - expectedWatchEvents := []watch.Event{ - {Type: watch.Added}, - {Type: watch.Modified}, - {Type: watch.Deleted}, - } testConfigMap := v1.ConfigMap{ ObjectMeta: metav1.ObjectMeta{ Name: testConfigMapName, @@ -190,103 +173,62 @@ var _ = ginkgo.Describe("[sig-node] ConfigMap", func() { }, } - framework.WatchEventSequenceVerifier(context.TODO(), dc, configMapResource, testNamespaceName, testConfigMapName, metav1.ListOptions{LabelSelector: "test-configmap-static=true"}, expectedWatchEvents, func(retryWatcher *watchtools.RetryWatcher) (actualWatchEvents []watch.Event) { - ginkgo.By("creating a ConfigMap") - _, err := f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).Create(context.TODO(), &testConfigMap, metav1.CreateOptions{}) - framework.ExpectNoError(err, "failed to create ConfigMap") - eventFound := false - ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) - defer cancel() - _, err = framework.WatchUntilWithoutRetry(ctx, retryWatcher, func(watchEvent watch.Event) (bool, error) { - if watchEvent.Type != watch.Added { - return false, nil - } - actualWatchEvents = append(actualWatchEvents, watchEvent) - eventFound = true - return true, nil - }) - framework.ExpectNoError(err, "Wait until condition with watch events should not return an error") - framework.ExpectEqual(eventFound, true, "failed to find ConfigMap %v event", watch.Added) + ginkgo.By("creating a ConfigMap") + _, err := f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).Create(context.TODO(), &testConfigMap, metav1.CreateOptions{}) + framework.ExpectNoError(err, "failed to create ConfigMap") - configMapPatchPayload, err := json.Marshal(v1.ConfigMap{ - ObjectMeta: metav1.ObjectMeta{ - Labels: map[string]string{ - "test-configmap": "patched", - }, + ginkgo.By("fetching the ConfigMap") + configMap, err := f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).Get(context.TODO(), testConfigMapName, metav1.GetOptions{}) + framework.ExpectNoError(err, "failed to get ConfigMap") + framework.ExpectEqual(configMap.Data["valueName"], testConfigMap.Data["valueName"]) + framework.ExpectEqual(configMap.Labels["test-configmap-static"], testConfigMap.Labels["test-configmap-static"]) + + configMapPatchPayload, err := json.Marshal(v1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Labels: map[string]string{ + "test-configmap": "patched", }, - Data: map[string]string{ - "valueName": "value1", - }, - }) - framework.ExpectNoError(err, "failed to marshal patch data") - - ginkgo.By("patching the ConfigMap") - _, err = f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).Patch(context.TODO(), testConfigMapName, types.StrategicMergePatchType, []byte(configMapPatchPayload), metav1.PatchOptions{}) - framework.ExpectNoError(err, "failed to patch ConfigMap") - ginkgo.By("waiting for the ConfigMap to be modified") - eventFound = false - ctx, cancel = context.WithTimeout(context.Background(), 30*time.Second) - defer cancel() - _, err = framework.WatchUntilWithoutRetry(ctx, retryWatcher, func(watchEvent watch.Event) (bool, error) { - if watchEvent.Type != watch.Modified { - return false, nil - } - actualWatchEvents = append(actualWatchEvents, watchEvent) - eventFound = true - return true, nil - }) - framework.ExpectNoError(err, "Wait until condition with watch events should not return an error") - framework.ExpectEqual(eventFound, true, "failed to find ConfigMap %v event", watch.Modified) - - ginkgo.By("fetching the ConfigMap") - configMap, err := f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).Get(context.TODO(), testConfigMapName, metav1.GetOptions{}) - framework.ExpectNoError(err, "failed to get ConfigMap") - framework.ExpectEqual(configMap.Data["valueName"], "value1", "failed to patch ConfigMap") - framework.ExpectEqual(configMap.Labels["test-configmap"], "patched", "failed to patch ConfigMap") - - ginkgo.By("listing all ConfigMaps in all namespaces") - configMapList, err := f.ClientSet.CoreV1().ConfigMaps("").List(context.TODO(), metav1.ListOptions{ - LabelSelector: "test-configmap-static=true", - }) - framework.ExpectNoError(err, "failed to list ConfigMaps with LabelSelector") - framework.ExpectNotEqual(len(configMapList.Items), 0, "no ConfigMaps found in ConfigMap list") - testConfigMapFound := false - for _, cm := range configMapList.Items { - if cm.ObjectMeta.Name == testConfigMapName && - cm.ObjectMeta.Namespace == testNamespaceName && - cm.ObjectMeta.Labels["test-configmap-static"] == "true" && - cm.Data["valueName"] == "value1" { - testConfigMapFound = true - break - } - } - framework.ExpectEqual(testConfigMapFound, true, "failed to find ConfigMap in list") - - ginkgo.By("deleting the ConfigMap by a collection") - err = f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).DeleteCollection(context.TODO(), metav1.DeleteOptions{}, metav1.ListOptions{ - LabelSelector: "test-configmap-static=true", - }) - framework.ExpectNoError(err, "failed to delete ConfigMap collection with LabelSelector") - ginkgo.By("waiting for the ConfigMap to be deleted") - eventFound = false - ctx, cancel = context.WithTimeout(context.Background(), 30*time.Second) - defer cancel() - _, err = framework.WatchUntilWithoutRetry(ctx, retryWatcher, func(watchEvent watch.Event) (bool, error) { - if watchEvent.Type != watch.Deleted { - return false, nil - } - actualWatchEvents = append(actualWatchEvents, watchEvent) - eventFound = true - return true, nil - }) - framework.ExpectNoError(err, "Wait until condition with watch events should not return an error") - framework.ExpectEqual(eventFound, true, "failed to find ConfigMap %v event", watch.Deleted) - - return actualWatchEvents - }, func() (err error) { - _ = f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).DeleteCollection(context.TODO(), metav1.DeleteOptions{}, metav1.ListOptions{LabelSelector: "test-configmap-static=true"}) - return err + }, + Data: map[string]string{ + "valueName": "value1", + }, }) + framework.ExpectNoError(err, "failed to marshal patch data") + + ginkgo.By("patching the ConfigMap") + _, err = f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).Patch(context.TODO(), testConfigMapName, types.StrategicMergePatchType, []byte(configMapPatchPayload), metav1.PatchOptions{}) + framework.ExpectNoError(err, "failed to patch ConfigMap") + + ginkgo.By("listing all ConfigMaps in all namespaces with a label selector") + configMapList, err := f.ClientSet.CoreV1().ConfigMaps("").List(context.TODO(), metav1.ListOptions{ + LabelSelector: "test-configmap=patched", + }) + framework.ExpectNoError(err, "failed to list ConfigMaps with LabelSelector") + testConfigMapFound := false + for _, cm := range configMapList.Items { + if cm.ObjectMeta.Name == testConfigMap.ObjectMeta.Name && + cm.ObjectMeta.Namespace == testNamespaceName && + cm.ObjectMeta.Labels["test-configmap-static"] == testConfigMap.ObjectMeta.Labels["test-configmap-static"] && + cm.ObjectMeta.Labels["test-configmap"] == "patched" && + cm.Data["valueName"] == "value1" { + testConfigMapFound = true + break + } + } + framework.ExpectEqual(testConfigMapFound, true, "failed to find ConfigMap by label selector") + + ginkgo.By("deleting the ConfigMap by collection with a label selector") + err = f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).DeleteCollection(context.TODO(), metav1.DeleteOptions{}, metav1.ListOptions{ + LabelSelector: "test-configmap-static=true", + }) + framework.ExpectNoError(err, "failed to delete ConfigMap collection with LabelSelector") + + ginkgo.By("listing all ConfigMaps in test namespace") + configMapList, err = f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).List(context.TODO(), metav1.ListOptions{ + LabelSelector: "test-configmap-static=true", + }) + framework.ExpectNoError(err, "failed to list ConfigMap by LabelSelector") + framework.ExpectEqual(len(configMapList.Items), 0, "ConfigMap is still present after being deleted by collection") }) })