Skip to content

Commit a3de71e

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

File tree

1 file changed

+40
-25
lines changed

1 file changed

+40
-25
lines changed

Diff for: test/e2e/subscription_e2e_test.go

+40-25
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,18 @@ 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+
if err != nil {
1324+
return err
1325+
}
1326+
1327+
return checkDeploymentWithPodConfiguration(kubeClient, csv, podConfig.Env, podConfig.Volumes, podConfig.VolumeMounts, podConfig.Tolerations, podConfig.Resources)
1328+
}).Should(Succeed())
13241329
})
13251330

13261331
It("creation with nodeSelector config", func() {
@@ -2743,14 +2748,14 @@ func checkDeploymentHasPodConfigNodeSelector(t GinkgoTInterface, client operator
27432748
return nil
27442749
}
27452750

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) {
2751+
func checkDeploymentWithPodConfiguration(client operatorclient.ClientInterface, csv *operatorsv1alpha1.ClusterServiceVersion, envVar []corev1.EnvVar, volumes []corev1.Volume, volumeMounts []corev1.VolumeMount, tolerations []corev1.Toleration, resources *corev1.ResourceRequirements) error {
27472752
resolver := install.StrategyResolver{}
27482753

27492754
strategy, err := resolver.UnmarshalStrategy(csv.Spec.InstallStrategy)
2750-
require.NoError(t, err)
2755+
Expect(err).NotTo(HaveOccurred())
27512756

27522757
strategyDetailsDeployment, ok := strategy.(*operatorsv1alpha1.StrategyDetailsDeployment)
2753-
require.Truef(t, ok, "could not cast install strategy as type %T", strategyDetailsDeployment)
2758+
Expect(ok).To(BeTrue(), "could not cast install strategy as type %T", strategyDetailsDeployment)
27542759

27552760
findEnvVar := func(envVar []corev1.EnvVar, name string) (foundEnvVar *corev1.EnvVar, found bool) {
27562761
for i := range envVar {
@@ -2813,48 +2818,58 @@ func checkDeploymentWithPodConfiguration(t GinkgoTInterface, client operatorclie
28132818
return
28142819
}
28152820

2816-
check := func(container *corev1.Container) {
2821+
check := func(container *corev1.Container) error {
28172822
for _, e := range envVar {
28182823
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)
2821-
require.Equalf(t, e.Value, existing.Value, "env variable value does not match %s=%s", e.Name, e.Value)
2824+
if !found || existing == nil {
2825+
return errors.New(fmt.Sprintf("env variable name=%s not injected", e.Name))
2826+
}
2827+
Expect(e.Value).Should(Equal(existing.Value))
28222828
}
28232829

28242830
for _, v := range volumeMounts {
28252831
existing, found := findVolumeMount(container.VolumeMounts, v.Name)
2826-
require.Truef(t, found, "VolumeMount name=%s not injected", v.Name)
2827-
require.NotNil(t, existing)
2828-
require.Equalf(t, v.MountPath, existing.MountPath, "VolumeMount MountPath does not match %s=%s", v.Name, v.MountPath)
2832+
if !found || existing == nil {
2833+
return errors.New(fmt.Sprintf("VolumeMount name=%s not injected", v.Name))
2834+
}
2835+
Expect(v.MountPath).Should(Equal(existing.MountPath))
28292836
}
28302837

28312838
existing, found := findResources(&container.Resources, resources)
2832-
require.Truef(t, found, "Resources not injected. Resource=%v", resources)
2833-
require.NotNil(t, existing)
2834-
require.Equalf(t, existing, resources, "Resource=%v does not match expected Resource=%v", existing, resources)
2839+
if !found || existing == nil {
2840+
return errors.New(fmt.Sprintf("Resources not injected. Resource=%v", resources))
2841+
}
2842+
Expect(existing).Should(Equal(resources))
2843+
return nil
28352844
}
28362845

28372846
for _, deploymentSpec := range strategyDetailsDeployment.DeploymentSpecs {
28382847
deployment, err := client.KubernetesInterface().AppsV1().Deployments(csv.GetNamespace()).Get(context.Background(), deploymentSpec.Name, metav1.GetOptions{})
2839-
require.NoError(t, err)
2848+
Expect(err).NotTo(HaveOccurred())
28402849
for _, v := range volumes {
28412850
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)
2844-
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)
2851+
if !found || existing == nil {
2852+
return errors.New(fmt.Sprintf("Volume name=%s not injected", v.Name))
2853+
}
2854+
Expect(v.ConfigMap.LocalObjectReference.Name).Should(Equal(existing.ConfigMap.LocalObjectReference.Name))
28452855
}
28462856

28472857
for _, toleration := range tolerations {
28482858
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)
2851-
require.Equalf(t, *existing, toleration, "Toleration=%v does not match expected Toleration=%v", existing, toleration)
2859+
if !found || existing == nil {
2860+
return errors.New(fmt.Sprintf("Toleration not injected. Toleration=%v", toleration))
2861+
}
2862+
Expect(*existing).Should(Equal(toleration))
28522863
}
28532864

28542865
for i := range deployment.Spec.Template.Spec.Containers {
2855-
check(&deployment.Spec.Template.Spec.Containers[i])
2866+
err = check(&deployment.Spec.Template.Spec.Containers[i])
2867+
if err != nil {
2868+
return err
2869+
}
28562870
}
28572871
}
2872+
return nil
28582873
}
28592874

28602875
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)