Skip to content

Commit 3b631d2

Browse files
Implement helpers across e2e tests
1 parent 8718031 commit 3b631d2

File tree

3 files changed

+240
-479
lines changed

3 files changed

+240
-479
lines changed

test/e2e/air_gapped_test.go

Lines changed: 45 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,17 @@ import (
2727
appsv1 "k8s.io/api/apps/v1"
2828
corev1 "k8s.io/api/core/v1"
2929
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
30+
"k8s.io/utils/ptr"
3031
operatorv1 "sigs.k8s.io/cluster-api-operator/api/v1alpha1"
31-
operatorframework "sigs.k8s.io/cluster-api-operator/test/framework"
32+
. "sigs.k8s.io/cluster-api-operator/test/framework"
3233
"sigs.k8s.io/cluster-api/test/framework"
3334
"sigs.k8s.io/controller-runtime/pkg/client"
3435
"sigs.k8s.io/yaml"
3536
)
3637

3738
var _ = Describe("Install Core Provider in an air-gapped environment", func() {
3839
It("should successfully create config maps with Core Provider manifests", func() {
39-
k8sclient := bootstrapClusterProxy.GetClient()
40-
40+
bootstrapCluster := bootstrapClusterProxy.GetClient()
4141
configMaps := []corev1.ConfigMap{}
4242

4343
for _, fileName := range []string{"core-cluster-api-v1.4.2.yaml", "core-cluster-api-v1.4.3.yaml"} {
@@ -53,12 +53,12 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
5353

5454
By("Applying core provider manifests to the cluster")
5555
for _, cm := range configMaps {
56-
Expect(k8sclient.Create(ctx, &cm)).To(Succeed())
56+
Expect(bootstrapCluster.Create(ctx, &cm)).To(Succeed())
5757
}
5858
})
5959

6060
It("should successfully create a CoreProvider from a config map", func() {
61-
k8sclient := bootstrapClusterProxy.GetClient()
61+
bootstrapCluster := bootstrapClusterProxy.GetClient()
6262
coreProvider := &operatorv1.CoreProvider{
6363
ObjectMeta: metav1.ObjectMeta{
6464
Name: coreProviderName,
@@ -78,7 +78,7 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
7878
},
7979
}
8080

81-
Expect(k8sclient.Create(ctx, coreProvider)).To(Succeed())
81+
Expect(bootstrapCluster.Create(ctx, coreProvider)).To(Succeed())
8282

8383
By("Waiting for the core provider deployment to be ready")
8484
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
@@ -87,38 +87,25 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
8787
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
8888

8989
By("Waiting for core provider to be ready")
90-
operatorframework.WaitForConditional(ctx, operatorframework.ObjectConditionalInput{
91-
Reader: k8sclient,
92-
Object: coreProvider,
93-
Conditional: func() bool {
94-
for _, c := range coreProvider.Status.Conditions {
95-
if c.Type == operatorv1.ProviderInstalledCondition && c.Status == corev1.ConditionTrue {
96-
return true
97-
}
98-
}
99-
return false
100-
},
101-
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
90+
WaitFor(ctx, For(coreProvider).In(bootstrapCluster).ToSatisfy(
91+
HaveStatusCondition(&coreProvider.Status.Conditions, operatorv1.ProviderInstalledCondition),
92+
), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
10293

10394
By("Waiting for status.IntalledVersion to be set")
104-
operatorframework.WaitForConditional(ctx, operatorframework.ObjectConditionalInput{
105-
Reader: k8sclient,
106-
Object: coreProvider,
107-
Conditional: func() bool {
108-
return coreProvider.Status.InstalledVersion != nil && *coreProvider.Status.InstalledVersion == coreProvider.Spec.Version
109-
},
110-
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
95+
WaitFor(ctx, For(coreProvider).In(bootstrapCluster).ToSatisfy(func() bool {
96+
return ptr.Equal(coreProvider.Status.InstalledVersion, ptr.To(coreProvider.Spec.Version))
97+
}), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
11198
})
11299

113100
It("should successfully downgrade a CoreProvider (latest -> v1.4.2)", func() {
114-
k8sclient := bootstrapClusterProxy.GetClient()
101+
bootstrapCluster := bootstrapClusterProxy.GetClient()
115102
coreProvider := &operatorv1.CoreProvider{}
116103
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
117-
Expect(k8sclient.Get(ctx, key, coreProvider)).To(Succeed())
104+
Expect(bootstrapCluster.Get(ctx, key, coreProvider)).To(Succeed())
118105

119106
coreProvider.Spec.Version = previousCAPIVersion
120107

121-
Expect(k8sclient.Update(ctx, coreProvider)).To(Succeed())
108+
Expect(bootstrapCluster.Update(ctx, coreProvider)).To(Succeed())
122109

123110
By("Waiting for the core provider deployment to be ready")
124111
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
@@ -127,41 +114,25 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
127114
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
128115

129116
By("Waiting for core provider to be ready")
130-
operatorframework.WaitForConditional(ctx, operatorframework.ObjectConditionalInput{
131-
Reader: k8sclient,
132-
Object: coreProvider,
133-
Conditional: func() bool {
134-
for _, c := range coreProvider.Status.Conditions {
135-
if c.Type == operatorv1.ProviderInstalledCondition && c.Status == corev1.ConditionTrue {
136-
return true
137-
}
138-
}
139-
return false
140-
},
141-
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
117+
WaitFor(ctx, For(coreProvider).In(bootstrapCluster).ToSatisfy(
118+
HaveStatusCondition(&coreProvider.Status.Conditions, operatorv1.ProviderInstalledCondition),
119+
), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
142120

143121
By("Waiting for status.IntalledVersion to be set")
144-
operatorframework.WaitForConditional(ctx, operatorframework.ObjectConditionalInput{
145-
Reader: k8sclient,
146-
Object: coreProvider,
147-
Conditional: func() bool {
148-
if coreProvider.Status.InstalledVersion != nil && *coreProvider.Status.InstalledVersion == previousCAPIVersion {
149-
return true
150-
}
151-
return false
152-
},
153-
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
122+
WaitFor(ctx, For(coreProvider).In(bootstrapCluster).ToSatisfy(func() bool {
123+
return ptr.Equal(coreProvider.Status.InstalledVersion, ptr.To(previousCAPIVersion))
124+
}), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
154125
})
155126

156127
It("should successfully upgrade a CoreProvider (v1.4.2 -> latest)", func() {
157-
k8sclient := bootstrapClusterProxy.GetClient()
128+
bootstrapCluster := bootstrapClusterProxy.GetClient()
158129
coreProvider := &operatorv1.CoreProvider{}
159130
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
160-
Expect(k8sclient.Get(ctx, key, coreProvider)).To(Succeed())
131+
Expect(bootstrapCluster.Get(ctx, key, coreProvider)).To(Succeed())
161132

162133
coreProvider.Spec.Version = ""
163134

164-
Expect(k8sclient.Update(ctx, coreProvider)).To(Succeed())
135+
Expect(bootstrapCluster.Update(ctx, coreProvider)).To(Succeed())
165136

166137
By("Waiting for the core provider deployment to be ready")
167138
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
@@ -170,64 +141,39 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
170141
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
171142

172143
By("Waiting for core provider to be ready")
173-
operatorframework.WaitForConditional(ctx, operatorframework.ObjectConditionalInput{
174-
Reader: k8sclient,
175-
Object: coreProvider,
176-
Conditional: func() bool {
177-
for _, c := range coreProvider.Status.Conditions {
178-
if c.Type == operatorv1.ProviderInstalledCondition && c.Status == corev1.ConditionTrue {
179-
return true
180-
}
181-
}
182-
return false
183-
},
184-
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
144+
WaitFor(ctx, For(coreProvider).In(bootstrapCluster).ToSatisfy(
145+
HaveStatusCondition(&coreProvider.Status.Conditions, operatorv1.ProviderInstalledCondition),
146+
), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
185147

186148
By("Waiting for status.IntalledVersion to be set")
187-
operatorframework.WaitForConditional(ctx, operatorframework.ObjectConditionalInput{
188-
Reader: k8sclient,
189-
Object: coreProvider,
190-
Conditional: func() bool {
191-
return coreProvider.Status.InstalledVersion != nil && *coreProvider.Status.InstalledVersion == coreProvider.Spec.Version
192-
},
193-
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
149+
WaitFor(ctx, For(coreProvider).In(bootstrapCluster).ToSatisfy(func() bool {
150+
return ptr.Equal(coreProvider.Status.InstalledVersion, ptr.To(coreProvider.Spec.Version))
151+
}), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
194152
})
195153

196154
It("should successfully delete a CoreProvider", func() {
197-
k8sclient := bootstrapClusterProxy.GetClient()
198-
coreProvider := &operatorv1.CoreProvider{
199-
ObjectMeta: metav1.ObjectMeta{
200-
Name: coreProviderName,
201-
Namespace: operatorNamespace,
202-
},
203-
Spec: operatorv1.CoreProviderSpec{
204-
ProviderSpec: operatorv1.ProviderSpec{},
205-
},
206-
}
155+
bootstrapCluster := bootstrapClusterProxy.GetClient()
156+
coreProvider := &operatorv1.CoreProvider{ObjectMeta: metav1.ObjectMeta{
157+
Name: coreProviderName,
158+
Namespace: operatorNamespace,
159+
}}
207160

208-
Expect(k8sclient.Delete(ctx, coreProvider)).To(Succeed())
161+
Expect(bootstrapCluster.Delete(ctx, coreProvider)).To(Succeed())
209162

210163
By("Waiting for the core provider deployment to be deleted")
211-
operatorframework.WaitForDelete(ctx, operatorframework.ObjectGetterInput{
212-
Reader: k8sclient,
213-
Object: &appsv1.Deployment{
214-
ObjectMeta: metav1.ObjectMeta{
215-
Name: coreProviderDeploymentName,
216-
Namespace: operatorNamespace,
217-
},
218-
},
219-
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
164+
WaitForDelete(ctx, For(&appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{
165+
Name: coreProviderDeploymentName,
166+
Namespace: operatorNamespace,
167+
}}).In(bootstrapCluster), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
220168

221169
By("Waiting for the core provider object to be deleted")
222-
operatorframework.WaitForDelete(ctx, operatorframework.ObjectGetterInput{
223-
Reader: k8sclient,
224-
Object: coreProvider,
225-
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
170+
WaitForDelete(
171+
ctx, For(coreProvider).In(bootstrapCluster),
172+
e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
226173
})
227174

228175
It("should successfully delete config maps with Core Provider manifests", func() {
229-
k8sclient := bootstrapClusterProxy.GetClient()
230-
176+
bootstrapCluster := bootstrapClusterProxy.GetClient()
231177
configMaps := []corev1.ConfigMap{}
232178

233179
for _, fileName := range []string{"core-cluster-api-v1.4.2.yaml", "core-cluster-api-v1.4.3.yaml"} {
@@ -243,7 +189,7 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
243189

244190
By("Deleting config maps with core provider manifests")
245191
for _, cm := range configMaps {
246-
Expect(k8sclient.Delete(ctx, &cm)).To(Succeed())
192+
Expect(bootstrapCluster.Delete(ctx, &cm)).To(Succeed())
247193
}
248194
})
249195
})

0 commit comments

Comments
 (0)