From 0fc15708fe031e660216f44433ee5a54bd21ba2b Mon Sep 17 00:00:00 2001 From: Caleb Woodbine Date: Tue, 14 Jan 2020 21:51:27 +0000 Subject: [PATCH 1/2] Add: ConfigMap lifecycle test --- test/e2e/common/configmap.go | 63 ++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/test/e2e/common/configmap.go b/test/e2e/common/configmap.go index f6593e9c3ba..9666f1aff22 100644 --- a/test/e2e/common/configmap.go +++ b/test/e2e/common/configmap.go @@ -17,6 +17,7 @@ limitations under the License. package common import ( + "encoding/json" "fmt" v1 "k8s.io/api/core/v1" @@ -24,6 +25,7 @@ import ( "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/kubernetes/test/e2e/framework" imageutils "k8s.io/kubernetes/test/utils/image" + "k8s.io/apimachinery/pkg/types" "github.com/onsi/ginkgo" ) @@ -153,6 +155,67 @@ var _ = ginkgo.Describe("[sig-node] ConfigMap", func() { ginkgo.By(fmt.Sprintf("Verifying update of ConfigMap %v/%v", f.Namespace.Name, configMap.Name)) framework.ExpectEqual(configMapFromUpdate.Data, configMap.Data) }) + + ginkgo.It("should run through a ConfigMap lifecycle", func() { + testNamespaceName := f.Namespace.Name + testConfigMapName := "test-configmap" + string(uuid.NewUUID()) + + _, err := f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).Create(&v1.ConfigMap{ + ObjectMeta: metav1.ObjectMeta{ + Name: testConfigMapName, + Labels: map[string]string{ + "test-configmap-static": "true", + }, + }, + Data: map[string]string{ + "valueName": "value", + }, + }) + framework.ExpectNoError(err, "failed to create ConfigMap") + + 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") + + _, err = f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).Patch(testConfigMapName, types.StrategicMergePatchType, []byte(configMapPatchPayload)) + framework.ExpectNoError(err, "failed to patch ConfigMap") + + configMap, err := f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).Get(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") + + // listing in all namespaces to hit the endpoint + configMapList, err := f.ClientSet.CoreV1().ConfigMaps("").List(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") + + err = f.ClientSet.CoreV1().ConfigMaps(testNamespaceName).DeleteCollection(&metav1.DeleteOptions{}, metav1.ListOptions{ + LabelSelector: "test-configmap-static=true", + }) + framework.ExpectNoError(err, "failed to delete ConfigMap collection with LabelSelector") + }) }) func newEnvFromConfigMap(f *framework.Framework, name string) *v1.ConfigMap { From f20945aa416bc8dae263d0e31a00f54d677946f3 Mon Sep 17 00:00:00 2001 From: Caleb Woodbine Date: Wed, 15 Jan 2020 00:16:24 +0000 Subject: [PATCH 2/2] Fix: formatting --- test/e2e/common/configmap.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/e2e/common/configmap.go b/test/e2e/common/configmap.go index 9666f1aff22..1b91c869f39 100644 --- a/test/e2e/common/configmap.go +++ b/test/e2e/common/configmap.go @@ -22,10 +22,10 @@ import ( v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/types" "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/kubernetes/test/e2e/framework" imageutils "k8s.io/kubernetes/test/utils/image" - "k8s.io/apimachinery/pkg/types" "github.com/onsi/ginkgo" )