Skip to content

Commit 50b3737

Browse files
committed
add wait for config injection in e2e test
Signed-off-by: akihikokuroda <[email protected]>
1 parent 20a4381 commit 50b3737

File tree

1 file changed

+30
-17
lines changed

1 file changed

+30
-17
lines changed

Diff for: test/e2e/subscription_e2e_test.go

+30-17
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package e2e
33
import (
44
"context"
55
"encoding/json"
6+
"errors"
67
"fmt"
78
"reflect"
89
"strings"
@@ -1313,14 +1314,16 @@ var _ = Describe("Subscription", func() {
13131314
require.NoError(GinkgoT(), err)
13141315
require.NotNil(GinkgoT(), subscription)
13151316

1316-
csv, err := fetchCSV(crClient, subscription.Status.CurrentCSV, generatedNamespace.GetName(), buildCSVConditionChecker(operatorsv1alpha1.CSVPhaseSucceeded))
1317-
require.NoError(GinkgoT(), err)
1318-
13191317
proxyEnv := proxyEnvVarFunc(GinkgoT(), config)
13201318
expected := podEnv
13211319
expected = append(expected, proxyEnv...)
13221320

1323-
checkDeploymentWithPodConfiguration(GinkgoT(), kubeClient, csv, podConfig.Env, podConfig.Volumes, podConfig.VolumeMounts, podConfig.Tolerations, podConfig.Resources)
1321+
Eventually(func() error {
1322+
csv, err := fetchCSV(crClient, subscription.Status.CurrentCSV, generatedNamespace.GetName(), buildCSVConditionChecker(operatorsv1alpha1.CSVPhaseSucceeded))
1323+
require.NoError(GinkgoT(), err)
1324+
1325+
return checkDeploymentWithPodConfiguration(GinkgoT(), kubeClient, csv, podConfig.Env, podConfig.Volumes, podConfig.VolumeMounts, podConfig.Tolerations, podConfig.Resources)
1326+
}).Should(Succeed())
13241327
})
13251328

13261329
It("creation with nodeSelector config", func() {
@@ -2743,7 +2746,7 @@ func checkDeploymentHasPodConfigNodeSelector(t GinkgoTInterface, client operator
27432746
return nil
27442747
}
27452748

2746-
func checkDeploymentWithPodConfiguration(t GinkgoTInterface, client operatorclient.ClientInterface, csv *operatorsv1alpha1.ClusterServiceVersion, envVar []corev1.EnvVar, volumes []corev1.Volume, volumeMounts []corev1.VolumeMount, tolerations []corev1.Toleration, resources *corev1.ResourceRequirements) {
2749+
func checkDeploymentWithPodConfiguration(t GinkgoTInterface, client operatorclient.ClientInterface, csv *operatorsv1alpha1.ClusterServiceVersion, envVar []corev1.EnvVar, volumes []corev1.Volume, volumeMounts []corev1.VolumeMount, tolerations []corev1.Toleration, resources *corev1.ResourceRequirements) error {
27472750
resolver := install.StrategyResolver{}
27482751

27492752
strategy, err := resolver.UnmarshalStrategy(csv.Spec.InstallStrategy)
@@ -2813,48 +2816,58 @@ func checkDeploymentWithPodConfiguration(t GinkgoTInterface, client operatorclie
28132816
return
28142817
}
28152818

2816-
check := func(container *corev1.Container) {
2819+
check := func(container *corev1.Container) error {
28172820
for _, e := range envVar {
28182821
existing, found := findEnvVar(container.Env, e.Name)
2819-
require.Truef(t, found, "env variable name=%s not injected", e.Name)
2820-
require.NotNil(t, existing)
2822+
if !found || existing == nil {
2823+
return errors.New(fmt.Sprintf("env variable name=%s not injected", e.Name))
2824+
}
28212825
require.Equalf(t, e.Value, existing.Value, "env variable value does not match %s=%s", e.Name, e.Value)
28222826
}
28232827

28242828
for _, v := range volumeMounts {
28252829
existing, found := findVolumeMount(container.VolumeMounts, v.Name)
2826-
require.Truef(t, found, "VolumeMount name=%s not injected", v.Name)
2827-
require.NotNil(t, existing)
2830+
if !found || existing == nil {
2831+
return errors.New(fmt.Sprintf("VolumeMount name=%s not injected", v.Name))
2832+
}
28282833
require.Equalf(t, v.MountPath, existing.MountPath, "VolumeMount MountPath does not match %s=%s", v.Name, v.MountPath)
28292834
}
28302835

28312836
existing, found := findResources(&container.Resources, resources)
2832-
require.Truef(t, found, "Resources not injected. Resource=%v", resources)
2833-
require.NotNil(t, existing)
2837+
if !found || existing == nil {
2838+
return errors.New(fmt.Sprintf("Resources not injected. Resource=%v", resources))
2839+
}
28342840
require.Equalf(t, existing, resources, "Resource=%v does not match expected Resource=%v", existing, resources)
2841+
return nil
28352842
}
28362843

28372844
for _, deploymentSpec := range strategyDetailsDeployment.DeploymentSpecs {
28382845
deployment, err := client.KubernetesInterface().AppsV1().Deployments(csv.GetNamespace()).Get(context.Background(), deploymentSpec.Name, metav1.GetOptions{})
28392846
require.NoError(t, err)
28402847
for _, v := range volumes {
28412848
existing, found := findVolume(deployment.Spec.Template.Spec.Volumes, v.Name)
2842-
require.Truef(t, found, "Volume name=%s not injected", v.Name)
2843-
require.NotNil(t, existing)
2849+
if !found || existing == nil {
2850+
return errors.New(fmt.Sprintf("Volume name=%s not injected", v.Name))
2851+
}
28442852
require.Equalf(t, v.ConfigMap.LocalObjectReference.Name, existing.ConfigMap.LocalObjectReference.Name, "volume ConfigMap Names does not match %s=%s", v.Name, v.ConfigMap.LocalObjectReference.Name)
28452853
}
28462854

28472855
for _, toleration := range tolerations {
28482856
existing, found := findTolerations(deployment.Spec.Template.Spec.Tolerations, toleration)
2849-
require.Truef(t, found, "Toleration not injected. Toleration=%v", toleration)
2850-
require.NotNil(t, existing)
2857+
if !found || existing == nil {
2858+
return errors.New(fmt.Sprintf("Toleration not injected. Toleration=%v", toleration))
2859+
}
28512860
require.Equalf(t, *existing, toleration, "Toleration=%v does not match expected Toleration=%v", existing, toleration)
28522861
}
28532862

28542863
for i := range deployment.Spec.Template.Spec.Containers {
2855-
check(&deployment.Spec.Template.Spec.Containers[i])
2864+
err = check(&deployment.Spec.Template.Spec.Containers[i])
2865+
if err != nil {
2866+
return err
2867+
}
28562868
}
28572869
}
2870+
return nil
28582871
}
28592872

28602873
func updateInternalCatalog(t GinkgoTInterface, c operatorclient.ClientInterface, crc versioned.Interface, catalogSourceName, namespace string, crds []apiextensions.CustomResourceDefinition, csvs []operatorsv1alpha1.ClusterServiceVersion, packages []registry.PackageManifest) {

0 commit comments

Comments
 (0)