Skip to content

Commit d9e33a9

Browse files
authored
Merge pull request #207 from Danil-Grigorev/init-logs-suite
🌱 Refactor tests to be more readable and have better logging
2 parents 46be1c4 + 7132e62 commit d9e33a9

File tree

12 files changed

+7350
-749
lines changed

12 files changed

+7350
-749
lines changed

test/e2e/air_gapped_test.go

Lines changed: 58 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +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"
32+
. "sigs.k8s.io/cluster-api-operator/test/framework"
33+
"sigs.k8s.io/cluster-api/test/framework"
3134
"sigs.k8s.io/controller-runtime/pkg/client"
3235
"sigs.k8s.io/yaml"
3336
)
3437

3538
var _ = Describe("Install Core Provider in an air-gapped environment", func() {
3639
It("should successfully create config maps with Core Provider manifests", func() {
37-
k8sclient := bootstrapClusterProxy.GetClient()
38-
40+
bootstrapCluster := bootstrapClusterProxy.GetClient()
3941
configMaps := []corev1.ConfigMap{}
4042

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

5254
By("Applying core provider manifests to the cluster")
5355
for _, cm := range configMaps {
54-
Expect(k8sclient.Create(ctx, &cm)).To(Succeed())
56+
Expect(bootstrapCluster.Create(ctx, &cm)).To(Succeed())
5557
}
5658
})
5759

5860
It("should successfully create a CoreProvider from a config map", func() {
59-
k8sclient := bootstrapClusterProxy.GetClient()
61+
bootstrapCluster := bootstrapClusterProxy.GetClient()
6062
coreProvider := &operatorv1.CoreProvider{
6163
ObjectMeta: metav1.ObjectMeta{
6264
Name: coreProviderName,
@@ -76,187 +78,102 @@ var _ = Describe("Install Core Provider in an air-gapped environment", func() {
7678
},
7779
}
7880

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

8183
By("Waiting for the core provider deployment to be ready")
82-
Eventually(func() bool {
83-
isReady, err := waitForDeployment(k8sclient, ctx, coreProviderDeploymentName)
84-
if err != nil {
85-
return false
86-
}
87-
return isReady
88-
}, timeout).Should(Equal(true))
84+
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
85+
Getter: bootstrapClusterProxy.GetClient(),
86+
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: coreProviderDeploymentName, Namespace: operatorNamespace}},
87+
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
8988

9089
By("Waiting for core provider to be ready")
91-
Eventually(func() bool {
92-
coreProvider := &operatorv1.CoreProvider{}
93-
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
94-
if err := k8sclient.Get(ctx, key, coreProvider); err != nil {
95-
return false
96-
}
97-
98-
for _, c := range coreProvider.Status.Conditions {
99-
if c.Type == operatorv1.ProviderInstalledCondition && c.Status == corev1.ConditionTrue {
100-
return true
101-
}
102-
}
103-
return false
104-
}, timeout).Should(Equal(true))
90+
WaitFor(ctx, For(coreProvider).In(bootstrapCluster).ToSatisfy(
91+
HaveStatusCondition(&coreProvider.Status.Conditions, operatorv1.ProviderInstalledCondition),
92+
), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
10593

10694
By("Waiting for status.IntalledVersion to be set")
107-
Eventually(func() bool {
108-
coreProvider := &operatorv1.CoreProvider{}
109-
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
110-
if err := k8sclient.Get(ctx, key, coreProvider); err != nil {
111-
return false
112-
}
113-
114-
if coreProvider.Status.InstalledVersion != nil && *coreProvider.Status.InstalledVersion == coreProvider.Spec.Version {
115-
return true
116-
}
117-
return false
118-
}, timeout).Should(Equal(true))
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")...)
11998
})
12099

121100
It("should successfully downgrade a CoreProvider (latest -> v1.4.2)", func() {
122-
k8sclient := bootstrapClusterProxy.GetClient()
101+
bootstrapCluster := bootstrapClusterProxy.GetClient()
123102
coreProvider := &operatorv1.CoreProvider{}
124103
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
125-
Expect(k8sclient.Get(ctx, key, coreProvider)).To(Succeed())
104+
Expect(bootstrapCluster.Get(ctx, key, coreProvider)).To(Succeed())
126105

127106
coreProvider.Spec.Version = previousCAPIVersion
128107

129-
Expect(k8sclient.Update(ctx, coreProvider)).To(Succeed())
108+
Expect(bootstrapCluster.Update(ctx, coreProvider)).To(Succeed())
130109

131110
By("Waiting for the core provider deployment to be ready")
132-
Eventually(func() bool {
133-
isReady, err := waitForDeployment(k8sclient, ctx, coreProviderDeploymentName)
134-
if err != nil {
135-
return false
136-
}
137-
return isReady
138-
}, timeout).Should(Equal(true))
111+
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
112+
Getter: bootstrapClusterProxy.GetClient(),
113+
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: coreProviderDeploymentName, Namespace: operatorNamespace}},
114+
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
139115

140116
By("Waiting for core provider to be ready")
141-
Eventually(func() bool {
142-
coreProvider := &operatorv1.CoreProvider{}
143-
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
144-
if err := k8sclient.Get(ctx, key, coreProvider); err != nil {
145-
return false
146-
}
147-
148-
for _, c := range coreProvider.Status.Conditions {
149-
if c.Type == operatorv1.ProviderInstalledCondition && c.Status == corev1.ConditionTrue {
150-
return true
151-
}
152-
}
153-
return false
154-
}, timeout).Should(Equal(true))
117+
WaitFor(ctx, For(coreProvider).In(bootstrapCluster).ToSatisfy(
118+
HaveStatusCondition(&coreProvider.Status.Conditions, operatorv1.ProviderInstalledCondition),
119+
), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
155120

156121
By("Waiting for status.IntalledVersion to be set")
157-
Eventually(func() bool {
158-
coreProvider := &operatorv1.CoreProvider{}
159-
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
160-
if err := k8sclient.Get(ctx, key, coreProvider); err != nil {
161-
return false
162-
}
163-
164-
if coreProvider.Status.InstalledVersion != nil && *coreProvider.Status.InstalledVersion == previousCAPIVersion {
165-
return true
166-
}
167-
return false
168-
}, timeout).Should(Equal(true))
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")...)
169125
})
170126

171127
It("should successfully upgrade a CoreProvider (v1.4.2 -> latest)", func() {
172-
k8sclient := bootstrapClusterProxy.GetClient()
128+
bootstrapCluster := bootstrapClusterProxy.GetClient()
173129
coreProvider := &operatorv1.CoreProvider{}
174130
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
175-
Expect(k8sclient.Get(ctx, key, coreProvider)).To(Succeed())
131+
Expect(bootstrapCluster.Get(ctx, key, coreProvider)).To(Succeed())
176132

177133
coreProvider.Spec.Version = ""
178134

179-
Expect(k8sclient.Update(ctx, coreProvider)).To(Succeed())
135+
Expect(bootstrapCluster.Update(ctx, coreProvider)).To(Succeed())
180136

181137
By("Waiting for the core provider deployment to be ready")
182-
Eventually(func() bool {
183-
isReady, err := waitForDeployment(k8sclient, ctx, coreProviderDeploymentName)
184-
if err != nil {
185-
return false
186-
}
187-
return isReady
188-
}, timeout).Should(Equal(true))
138+
framework.WaitForDeploymentsAvailable(ctx, framework.WaitForDeploymentsAvailableInput{
139+
Getter: bootstrapClusterProxy.GetClient(),
140+
Deployment: &appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{Name: coreProviderDeploymentName, Namespace: operatorNamespace}},
141+
}, e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
189142

190143
By("Waiting for core provider to be ready")
191-
Eventually(func() bool {
192-
coreProvider := &operatorv1.CoreProvider{}
193-
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
194-
if err := k8sclient.Get(ctx, key, coreProvider); err != nil {
195-
return false
196-
}
197-
198-
for _, c := range coreProvider.Status.Conditions {
199-
if c.Type == operatorv1.ProviderInstalledCondition && c.Status == corev1.ConditionTrue {
200-
return true
201-
}
202-
}
203-
return false
204-
}, timeout).Should(Equal(true))
144+
WaitFor(ctx, For(coreProvider).In(bootstrapCluster).ToSatisfy(
145+
HaveStatusCondition(&coreProvider.Status.Conditions, operatorv1.ProviderInstalledCondition),
146+
), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
205147

206148
By("Waiting for status.IntalledVersion to be set")
207-
Eventually(func() bool {
208-
coreProvider := &operatorv1.CoreProvider{}
209-
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
210-
if err := k8sclient.Get(ctx, key, coreProvider); err != nil {
211-
return false
212-
}
213-
214-
if coreProvider.Status.InstalledVersion != nil && *coreProvider.Status.InstalledVersion == coreProvider.Spec.Version {
215-
return true
216-
}
217-
return false
218-
}, timeout).Should(Equal(true))
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")...)
219152
})
220153

221154
It("should successfully delete a CoreProvider", func() {
222-
k8sclient := bootstrapClusterProxy.GetClient()
223-
coreProvider := &operatorv1.CoreProvider{
224-
ObjectMeta: metav1.ObjectMeta{
225-
Name: coreProviderName,
226-
Namespace: operatorNamespace,
227-
},
228-
Spec: operatorv1.CoreProviderSpec{
229-
ProviderSpec: operatorv1.ProviderSpec{},
230-
},
231-
}
155+
bootstrapCluster := bootstrapClusterProxy.GetClient()
156+
coreProvider := &operatorv1.CoreProvider{ObjectMeta: metav1.ObjectMeta{
157+
Name: coreProviderName,
158+
Namespace: operatorNamespace,
159+
}}
232160

233-
Expect(k8sclient.Delete(ctx, coreProvider)).To(Succeed())
161+
Expect(bootstrapCluster.Delete(ctx, coreProvider)).To(Succeed())
234162

235163
By("Waiting for the core provider deployment to be deleted")
236-
Eventually(func() bool {
237-
deployment := &appsv1.Deployment{}
238-
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderDeploymentName}
239-
isReady, err := waitForObjectToBeDeleted(k8sclient, ctx, key, deployment)
240-
if err != nil {
241-
return false
242-
}
243-
return isReady
244-
}, timeout).Should(Equal(true))
164+
WaitForDelete(ctx, For(&appsv1.Deployment{ObjectMeta: metav1.ObjectMeta{
165+
Name: coreProviderDeploymentName,
166+
Namespace: operatorNamespace,
167+
}}).In(bootstrapCluster), e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
245168

246169
By("Waiting for the core provider object to be deleted")
247-
Eventually(func() bool {
248-
key := client.ObjectKey{Namespace: operatorNamespace, Name: coreProviderName}
249-
isReady, err := waitForObjectToBeDeleted(k8sclient, ctx, key, coreProvider)
250-
if err != nil {
251-
return false
252-
}
253-
return isReady
254-
}, timeout).Should(Equal(true))
170+
WaitForDelete(
171+
ctx, For(coreProvider).In(bootstrapCluster),
172+
e2eConfig.GetIntervals(bootstrapClusterProxy.GetName(), "wait-controllers")...)
255173
})
256174

257175
It("should successfully delete config maps with Core Provider manifests", func() {
258-
k8sclient := bootstrapClusterProxy.GetClient()
259-
176+
bootstrapCluster := bootstrapClusterProxy.GetClient()
260177
configMaps := []corev1.ConfigMap{}
261178

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

273190
By("Deleting config maps with core provider manifests")
274191
for _, cm := range configMaps {
275-
Expect(k8sclient.Delete(ctx, &cm)).To(Succeed())
192+
Expect(bootstrapCluster.Delete(ctx, &cm)).To(Succeed())
276193
}
277194
})
278195
})

0 commit comments

Comments
 (0)