Skip to content

Commit ef19706

Browse files
author
Eric Stroczynski
authored
test/: clean up some e2e setup code (#4315)
1 parent 2a252bc commit ef19706

File tree

4 files changed

+67
-79
lines changed

4 files changed

+67
-79
lines changed

internal/testutils/utils.go

+12
Original file line numberDiff line numberDiff line change
@@ -278,3 +278,15 @@ func (tc TestContext) AllowProjectBeMultiGroup() error {
278278
}
279279
return nil
280280
}
281+
282+
// WrapWarnOutput is a one-liner to wrap an error from a command that returns (string, error) in a warning.
283+
func WrapWarnOutput(_ string, err error) {
284+
if err != nil {
285+
fmt.Fprintf(GinkgoWriter, "warning: %s", err)
286+
}
287+
}
288+
289+
// WrapWarn is a one-liner to wrap an error from a command that returns (error) in a warning.
290+
func WrapWarn(err error) {
291+
WrapWarnOutput("", err)
292+
}

test/e2e-ansible/e2e_ansible_cluster_test.go

+29-41
Original file line numberDiff line numberDiff line change
@@ -29,54 +29,42 @@ import (
2929
)
3030

3131
var _ = Describe("Running ansible projects", func() {
32-
var controllerPodName string
33-
var memcachedSampleFile string
34-
var fooSampleFile string
35-
var memfinSampleFile string
36-
var memcachedDeployment string
37-
var metricsClusterRoleBindingName string
32+
33+
var (
34+
controllerPodName, memcachedDeploymentName, metricsClusterRoleBindingName string
35+
fooSampleFile, memfinSampleFile, memcachedSampleFile string
36+
)
3837

3938
Context("built with operator-sdk", func() {
4039
BeforeEach(func() {
4140
metricsClusterRoleBindingName = fmt.Sprintf("%s-metrics-reader", tc.ProjectName)
42-
43-
By("checking samples")
44-
memcachedSampleFile = filepath.Join(tc.Dir, "config", "samples",
41+
samplesDir := filepath.Join(tc.Dir, "config", "samples")
42+
fooSampleFile = filepath.Join(samplesDir, fmt.Sprintf("%s_%s_foo.yaml", tc.Group, tc.Version))
43+
memfinSampleFile = filepath.Join(samplesDir, fmt.Sprintf("%s_%s_memfin.yaml", tc.Group, tc.Version))
44+
memcachedSampleFile = filepath.Join(samplesDir,
4545
fmt.Sprintf("%s_%s_%s.yaml", tc.Group, tc.Version, strings.ToLower(tc.Kind)))
46-
fooSampleFile = filepath.Join(tc.Dir, "config", "samples",
47-
fmt.Sprintf("%s_%s_foo.yaml", tc.Group, tc.Version))
48-
memfinSampleFile = filepath.Join(tc.Dir, "config", "samples",
49-
fmt.Sprintf("%s_%s_memfin.yaml", tc.Group, tc.Version))
5046

5147
By("deploying project on the cluster")
52-
err := tc.Make("deploy", "IMG="+tc.ImageName)
53-
Expect(err).NotTo(HaveOccurred())
48+
Expect(tc.Make("deploy", "IMG="+tc.ImageName)).To(Succeed())
5449
})
50+
5551
AfterEach(func() {
56-
By("deleting Curl Pod created")
57-
_, _ = tc.Kubectl.Delete(false, "pod", "curl")
52+
By("deleting curl pod")
53+
testutils.WrapWarnOutput(tc.Kubectl.Delete(false, "pod", "curl"))
5854

59-
By("deleting CR instances created")
60-
_, _ = tc.Kubectl.Delete(false, "-f", memcachedSampleFile)
61-
_, _ = tc.Kubectl.Delete(false, "-f", fooSampleFile)
62-
_, _ = tc.Kubectl.Delete(false, "-f", memfinSampleFile)
55+
By("deleting test CR instances")
56+
for _, sample := range []string{memcachedSampleFile, fooSampleFile, memfinSampleFile} {
57+
testutils.WrapWarnOutput(tc.Kubectl.Delete(false, "-f", sample))
58+
}
6359

6460
By("cleaning up permissions")
65-
_, _ = tc.Kubectl.Command("delete", "clusterrolebinding",
66-
metricsClusterRoleBindingName)
61+
testutils.WrapWarnOutput(tc.Kubectl.Command("delete", "clusterrolebinding", metricsClusterRoleBindingName))
6762

6863
By("undeploy project")
69-
_ = tc.Make("undeploy")
64+
testutils.WrapWarn(tc.Make("undeploy"))
7065

7166
By("ensuring that the namespace was deleted")
72-
verifyNamespaceDeleted := func() error {
73-
_, err := tc.Kubectl.Command("get", "namespace", tc.Kubectl.Namespace)
74-
if strings.Contains(err.Error(), "(NotFound): namespaces") {
75-
return err
76-
}
77-
return nil
78-
}
79-
Eventually(verifyNamespaceDeleted, 2*time.Minute, time.Second).ShouldNot(Succeed())
67+
testutils.WrapWarnOutput(tc.Kubectl.Wait(false, "namespace", "foo", "--for", "delete", "--timeout", "2m"))
8068
})
8169

8270
It("should run correctly in a cluster", func() {
@@ -165,19 +153,19 @@ var _ = Describe("Running ansible projects", func() {
165153
Eventually(verifyControllerProbe, time.Minute, time.Second).ShouldNot(ContainSubstring("Killing"))
166154

167155
By("getting memcached deploy by labels")
168-
getMencachedDeploument := func() string {
169-
memcachedDeployment, err = tc.Kubectl.Get(
156+
getMemcachedDeploymentName := func() string {
157+
memcachedDeploymentName, err = tc.Kubectl.Get(
170158
false, "deployment",
171159
"-l", "app=memcached", "-o", "jsonpath={..metadata.name}")
172160
Expect(err).NotTo(HaveOccurred())
173-
return memcachedDeployment
161+
return memcachedDeploymentName
174162
}
175-
Eventually(getMencachedDeploument, 2*time.Minute, time.Second).ShouldNot(BeEmpty())
163+
Eventually(getMemcachedDeploymentName, 2*time.Minute, time.Second).ShouldNot(BeEmpty())
176164

177165
By("checking the Memcached CR deployment status")
178166
verifyCRUp := func() string {
179167
output, err := tc.Kubectl.Command(
180-
"rollout", "status", "deployment", memcachedDeployment)
168+
"rollout", "status", "deployment", memcachedDeploymentName)
181169
Expect(err).NotTo(HaveOccurred())
182170
return output
183171
}
@@ -211,14 +199,14 @@ var _ = Describe("Running ansible projects", func() {
211199

212200
By("scaling deployment replicas to 2")
213201
_, err = tc.Kubectl.Command(
214-
"scale", "deployment", memcachedDeployment, "--replicas", "2")
202+
"scale", "deployment", memcachedDeploymentName, "--replicas", "2")
215203
Expect(err).NotTo(HaveOccurred())
216204

217205
By("verifying the deployment automatically scales back down to 1")
218206
verifyMemcachedScalesBack := func() error {
219207
replicas, err := tc.Kubectl.Get(
220208
false,
221-
"deployment", memcachedDeployment, "-o", "jsonpath={..spec.replicas}")
209+
"deployment", memcachedDeploymentName, "-o", "jsonpath={..spec.replicas}")
222210
Expect(err).NotTo(HaveOccurred())
223211
if replicas != "1" {
224212
return fmt.Errorf("memcached(CR) deployment with %s replicas", replicas)
@@ -249,7 +237,7 @@ var _ = Describe("Running ansible projects", func() {
249237
verifyMemcachedPatch := func() error {
250238
replicas, err := tc.Kubectl.Get(
251239
false,
252-
"deployment", memcachedDeployment, "-o", "jsonpath={..spec.replicas}")
240+
"deployment", memcachedDeploymentName, "-o", "jsonpath={..spec.replicas}")
253241
Expect(err).NotTo(HaveOccurred())
254242
if replicas != "2" {
255243
return fmt.Errorf("memcached(CR) deployment with %s replicas", replicas)
@@ -381,7 +369,7 @@ var _ = Describe("Running ansible projects", func() {
381369
getMemcachedDeployment := func() error {
382370
_, err := tc.Kubectl.Get(
383371
false, "deployment",
384-
memcachedDeployment)
372+
memcachedDeploymentName)
385373
return err
386374
}
387375
Eventually(getMemcachedDeployment, time.Minute*2, time.Second).ShouldNot(Succeed())

test/e2e-go/e2e_go_cluster_test.go

+11-17
Original file line numberDiff line numberDiff line change
@@ -27,40 +27,34 @@ import (
2727
. "github.com/onsi/ginkgo"
2828
. "github.com/onsi/gomega"
2929
kbtestutils "sigs.k8s.io/kubebuilder/v2/test/e2e/utils"
30+
31+
"github.com/operator-framework/operator-sdk/internal/testutils"
3032
)
3133

3234
var _ = Describe("operator-sdk", func() {
33-
var controllerPodName string
34-
var metricsClusterRoleBindingName string
35+
var controllerPodName, metricsClusterRoleBindingName string
3536

3637
Context("built with operator-sdk", func() {
38+
3739
BeforeEach(func() {
3840
metricsClusterRoleBindingName = fmt.Sprintf("%s-metrics-reader", tc.ProjectName)
39-
By("deploying project on the cluster")
40-
err := tc.Make("deploy", "IMG="+tc.ImageName)
41-
Expect(err).NotTo(HaveOccurred())
4241

42+
By("deploying project on the cluster")
43+
Expect(tc.Make("deploy", "IMG="+tc.ImageName)).To(Succeed())
4344
})
45+
4446
AfterEach(func() {
45-
By("deleting Curl Pod created")
46-
_, _ = tc.Kubectl.Delete(false, "pod", "curl")
47+
By("deleting curl pod")
48+
testutils.WrapWarnOutput(tc.Kubectl.Delete(false, "pod", "curl"))
4749

4850
By("cleaning up permissions")
49-
_, _ = tc.Kubectl.Command("delete", "clusterrolebinding",
50-
metricsClusterRoleBindingName)
51+
testutils.WrapWarnOutput(tc.Kubectl.Command("delete", "clusterrolebinding", metricsClusterRoleBindingName))
5152

5253
By("cleaning up created API objects during test process")
5354
tc.CleanupManifests(filepath.Join("config", "default"))
5455

5556
By("ensuring that the namespace was deleted")
56-
verifyNamespaceDeleted := func() error {
57-
_, err := tc.Kubectl.Command("get", "namespace", tc.Kubectl.Namespace)
58-
if strings.Contains(err.Error(), "(NotFound): namespaces") {
59-
return err
60-
}
61-
return nil
62-
}
63-
Eventually(verifyNamespaceDeleted, 2*time.Minute, time.Second).ShouldNot(Succeed())
57+
testutils.WrapWarnOutput(tc.Kubectl.Wait(false, "namespace", "foo", "--for", "delete", "--timeout", "2m"))
6458
})
6559

6660
It("should run correctly in a cluster", func() {

test/e2e-helm/e2e_helm_cluster_test.go

+15-21
Original file line numberDiff line numberDiff line change
@@ -29,42 +29,36 @@ import (
2929
)
3030

3131
var _ = Describe("Running Helm projects", func() {
32-
var controllerPodName string
33-
var metricsClusterRoleBindingName string
32+
var (
33+
controllerPodName, metricsClusterRoleBindingName string
34+
memcachedSampleFile string
35+
)
3436

3537
Context("built with operator-sdk", func() {
3638
BeforeEach(func() {
3739
metricsClusterRoleBindingName = fmt.Sprintf("%s-metrics-reader", tc.ProjectName)
40+
memcachedSampleFile = filepath.Join(tc.Dir, "config", "samples",
41+
fmt.Sprintf("%s_%s_%s.yaml", tc.Group, tc.Version, strings.ToLower(tc.Kind)))
3842

3943
By("deploying project on the cluster")
40-
err := tc.Make("deploy", "IMG="+tc.ImageName)
41-
Expect(err).NotTo(HaveOccurred())
44+
Expect(tc.Make("deploy", "IMG="+tc.ImageName)).To(Succeed())
4245
})
46+
4347
AfterEach(func() {
44-
By("deleting Curl Pod created")
45-
_, _ = tc.Kubectl.Delete(true, "pod", "curl")
48+
By("deleting curl pod")
49+
testutils.WrapWarnOutput(tc.Kubectl.Delete(false, "pod", "curl"))
4650

47-
By("deleting CR instances created")
48-
sampleFile := filepath.Join("config", "samples",
49-
fmt.Sprintf("%s_%s_%s.yaml", tc.Group, tc.Version, strings.ToLower(tc.Kind)))
50-
_, _ = tc.Kubectl.Delete(false, "-f", sampleFile)
51+
By("deleting test CR instances")
52+
testutils.WrapWarnOutput(tc.Kubectl.Delete(false, "-f", memcachedSampleFile))
5153

5254
By("cleaning up permissions")
53-
_, _ = tc.Kubectl.Command("delete", "clusterrolebinding",
54-
metricsClusterRoleBindingName)
55+
testutils.WrapWarnOutput(tc.Kubectl.Command("delete", "clusterrolebinding", metricsClusterRoleBindingName))
5556

5657
By("undeploy project")
57-
_ = tc.Make("undeploy")
58+
testutils.WrapWarn(tc.Make("undeploy"))
5859

5960
By("ensuring that the namespace was deleted")
60-
verifyNamespaceDeleted := func() error {
61-
_, err := tc.Kubectl.Command("get", "namespace", tc.Kubectl.Namespace)
62-
if strings.Contains(err.Error(), "(NotFound): namespaces") {
63-
return err
64-
}
65-
return nil
66-
}
67-
Eventually(verifyNamespaceDeleted, 2*time.Minute, time.Second).ShouldNot(Succeed())
61+
testutils.WrapWarnOutput(tc.Kubectl.Wait(false, "namespace", "foo", "--for", "delete", "--timeout", "2m"))
6862
})
6963

7064
It("should run correctly in a cluster", func() {

0 commit comments

Comments
 (0)