From 77024470f31612d644c7f4c3845bb142f15e695d Mon Sep 17 00:00:00 2001 From: Marcin Wielgus Date: Thu, 16 Mar 2017 17:49:17 +0100 Subject: [PATCH] Fix federated config map unit tests --- .../configmap/configmap_controller.go | 33 +++++++++++-------- .../configmap/configmap_controller_test.go | 17 +++++++--- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/federation/pkg/federation-controller/configmap/configmap_controller.go b/federation/pkg/federation-controller/configmap/configmap_controller.go index a63be0a56ea..bde25a39389 100644 --- a/federation/pkg/federation-controller/configmap/configmap_controller.go +++ b/federation/pkg/federation-controller/configmap/configmap_controller.go @@ -323,13 +323,18 @@ func (configmapcontroller *ConfigMapController) reconcileConfigMap(configmap typ glog.V(8).Infof("Skipping not federated config map: %s", key) return } - baseConfigMap := baseConfigMapObj.(*apiv1.ConfigMap) + obj, err := api.Scheme.DeepCopy(baseConfigMapObj) + configMap, ok := obj.(*apiv1.ConfigMap) + if err != nil || !ok { + glog.Errorf("Error in retrieving obj from store: %v, %v", ok, err) + return + } // Check if deletion has been requested. - if baseConfigMap.DeletionTimestamp != nil { - if err := configmapcontroller.delete(baseConfigMap); err != nil { + if configMap.DeletionTimestamp != nil { + if err := configmapcontroller.delete(configMap); err != nil { glog.Errorf("Failed to delete %s: %v", configmap, err) - configmapcontroller.eventRecorder.Eventf(baseConfigMap, api.EventTypeNormal, "DeleteFailed", + configmapcontroller.eventRecorder.Eventf(configMap, api.EventTypeNormal, "DeleteFailed", "ConfigMap delete failed: %v", err) configmapcontroller.deliverConfigMap(configmap, 0, true) } @@ -337,18 +342,18 @@ func (configmapcontroller *ConfigMapController) reconcileConfigMap(configmap typ } glog.V(3).Infof("Ensuring delete object from underlying clusters finalizer for configmap: %s", - baseConfigMap.Name) + configMap.Name) // Add the required finalizers before creating a configmap in underlying clusters. - updatedConfigMapObj, err := configmapcontroller.deletionHelper.EnsureFinalizers(baseConfigMap) + updatedConfigMapObj, err := configmapcontroller.deletionHelper.EnsureFinalizers(configMap) if err != nil { glog.Errorf("Failed to ensure delete object from underlying clusters finalizer in configmap %s: %v", - baseConfigMap.Name, err) + configMap.Name, err) configmapcontroller.deliverConfigMap(configmap, 0, false) return } - baseConfigMap = updatedConfigMapObj.(*apiv1.ConfigMap) + configMap = updatedConfigMapObj.(*apiv1.ConfigMap) - glog.V(3).Infof("Syncing configmap %s in underlying clusters", baseConfigMap.Name) + glog.V(3).Infof("Syncing configmap %s in underlying clusters", configMap.Name) clusters, err := configmapcontroller.configmapFederatedInformer.GetReadyClusters() if err != nil { @@ -368,12 +373,12 @@ func (configmapcontroller *ConfigMapController) reconcileConfigMap(configmap typ // Do not modify data. desiredConfigMap := &apiv1.ConfigMap{ - ObjectMeta: util.DeepCopyRelevantObjectMeta(baseConfigMap.ObjectMeta), - Data: baseConfigMap.Data, + ObjectMeta: util.DeepCopyRelevantObjectMeta(configMap.ObjectMeta), + Data: configMap.Data, } if !found { - configmapcontroller.eventRecorder.Eventf(baseConfigMap, api.EventTypeNormal, "CreateInCluster", + configmapcontroller.eventRecorder.Eventf(configMap, api.EventTypeNormal, "CreateInCluster", "Creating configmap in cluster %s", cluster.Name) operations = append(operations, util.FederatedOperation{ @@ -386,7 +391,7 @@ func (configmapcontroller *ConfigMapController) reconcileConfigMap(configmap typ // Update existing configmap, if needed. if !util.ConfigMapEquivalent(desiredConfigMap, clusterConfigMap) { - configmapcontroller.eventRecorder.Eventf(baseConfigMap, api.EventTypeNormal, "UpdateInCluster", + configmapcontroller.eventRecorder.Eventf(configMap, api.EventTypeNormal, "UpdateInCluster", "Updating configmap in cluster %s", cluster.Name) operations = append(operations, util.FederatedOperation{ Type: util.OperationTypeUpdate, @@ -404,7 +409,7 @@ func (configmapcontroller *ConfigMapController) reconcileConfigMap(configmap typ } err = configmapcontroller.federatedUpdater.UpdateWithOnError(operations, configmapcontroller.updateTimeout, func(op util.FederatedOperation, operror error) { - configmapcontroller.eventRecorder.Eventf(baseConfigMap, api.EventTypeNormal, "UpdateInClusterFailed", + configmapcontroller.eventRecorder.Eventf(configMap, api.EventTypeNormal, "UpdateInClusterFailed", "ConfigMap update in cluster %s failed: %v", op.ClusterName, operror) }) diff --git a/federation/pkg/federation-controller/configmap/configmap_controller_test.go b/federation/pkg/federation-controller/configmap/configmap_controller_test.go index 597f8416983..97a5c4c9d51 100644 --- a/federation/pkg/federation-controller/configmap/configmap_controller_test.go +++ b/federation/pkg/federation-controller/configmap/configmap_controller_test.go @@ -143,11 +143,18 @@ func TestConfigMapController(t *testing.T) { } configmapWatch.Modify(configmap1) - updatedConfigMap = GetConfigMapFromChan(cluster1UpdateChan) - assert.NotNil(t, updatedConfigMap) - assert.Equal(t, configmap1.Name, updatedConfigMap.Name) - assert.Equal(t, configmap1.Namespace, updatedConfigMap.Namespace) - assert.True(t, util.ConfigMapEquivalent(configmap1, updatedConfigMap)) + for { + updatedConfigMap := GetConfigMapFromChan(cluster1UpdateChan) + assert.NotNil(t, updatedConfigMap) + if updatedConfigMap == nil { + break + } + assert.Equal(t, configmap1.Name, updatedConfigMap.Name) + assert.Equal(t, configmap1.Namespace, updatedConfigMap.Namespace) + if util.ConfigMapEquivalent(configmap1, updatedConfigMap) { + break + } + } // Test add cluster clusterWatch.Add(cluster2)