Skip to content

Commit e0962a4

Browse files
committed
test: refactor e2e test suite
1 parent 7878669 commit e0962a4

File tree

4 files changed

+132
-110
lines changed

4 files changed

+132
-110
lines changed

tests/e2e/cloud_test.go

Lines changed: 60 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"time"
1313

1414
"github.com/stretchr/testify/assert"
15+
"github.com/stretchr/testify/require"
1516
corev1 "k8s.io/api/core/v1"
1617
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1718
"k8s.io/apimachinery/pkg/util/wait"
@@ -25,12 +26,10 @@ import (
2526
func TestNodeSetCorrectNodeLabelsAndIPAddresses(t *testing.T) {
2627
t.Parallel()
2728

28-
ctx := context.Background()
29-
30-
node, err := testCluster.k8sClient.CoreV1().Nodes().Get(ctx, testCluster.ControlNodeName(), metav1.GetOptions{})
29+
node, err := testCluster.k8sClient.CoreV1().Nodes().Get(t.Context(), testCluster.ControlNodeName(), metav1.GetOptions{})
3130
assert.NoError(t, err)
3231

33-
server, _, err := testCluster.hcloud.Server.Get(ctx, testCluster.ControlNodeName())
32+
server, _, err := testCluster.hcloud.Server.Get(t.Context(), testCluster.ControlNodeName())
3433
if err != nil {
3534
return
3635
}
@@ -77,52 +76,58 @@ func TestServiceLoadBalancersMinimalSetup(t *testing.T) {
7776
t: t,
7877
podName: "loadbalancer-minimal",
7978
}
79+
t.Cleanup(func() {
80+
lbTest.TearDown()
81+
})
8082

81-
pod := lbTest.DeployTestPod()
83+
pod, err := lbTest.DeployTestPod()
84+
require.NoError(t, err)
8285

8386
lbSvc := lbTest.ServiceDefinition(pod, map[string]string{
8487
string(annotation.LBLocation): "nbg1",
8588
})
8689

87-
lbSvc, err := lbTest.CreateService(lbSvc)
88-
if assert.NoError(t, err, "deploying test svc") {
89-
WaitForHTTPAvailable(t, lbSvc.Status.LoadBalancer.Ingress[0].IP, false)
90-
}
90+
lbSvc, err = lbTest.CreateService(lbSvc)
91+
require.NoError(t, err)
9192

92-
lbTest.TearDown()
93+
err = lbTest.WaitForHTTPAvailable(lbSvc.Status.LoadBalancer.Ingress[0].IP, false)
94+
require.NoError(t, err)
9395
}
9496

9597
func TestServiceLoadBalancersHTTPS(t *testing.T) {
9698
t.Parallel()
9799

98-
cert := testCluster.CreateTLSCertificate(t, "loadbalancer-https")
99100
lbTest := lbTestHelper{
100101
t: t,
101102
podName: "loadbalancer-https",
102103
port: 443,
103104
}
105+
t.Cleanup(func() {
106+
lbTest.TearDown()
107+
})
108+
109+
cert, err := testCluster.CreateTLSCertificate(t, "loadbalancer-https")
110+
require.NoError(t, err)
104111

105-
pod := lbTest.DeployTestPod()
112+
pod, err := lbTest.DeployTestPod()
113+
require.NoError(t, err)
106114

107115
lbSvc := lbTest.ServiceDefinition(pod, map[string]string{
108116
string(annotation.LBLocation): "nbg1",
109117
string(annotation.LBSvcHTTPCertificates): cert.Name,
110118
string(annotation.LBSvcProtocol): "https",
111119
})
112120

113-
lbSvc, err := lbTest.CreateService(lbSvc)
114-
if assert.NoError(t, err, "deploying test svc") {
115-
WaitForHTTPAvailable(t, lbSvc.Status.LoadBalancer.Ingress[0].IP, true)
116-
}
121+
lbSvc, err = lbTest.CreateService(lbSvc)
122+
require.NoError(t, err)
117123

118-
lbTest.TearDown()
124+
err = lbTest.WaitForHTTPAvailable(lbSvc.Status.LoadBalancer.Ingress[0].IP, false)
125+
require.NoError(t, err)
119126
}
120127

121128
func TestServiceLoadBalancersHTTPSWithManagedCertificate(t *testing.T) {
122129
t.Parallel()
123130

124-
ctx := context.Background()
125-
126131
if testCluster.certDomain == "" {
127132
t.Skip("Skipping because CERT_DOMAIN is not set")
128133
}
@@ -133,8 +138,12 @@ func TestServiceLoadBalancersHTTPSWithManagedCertificate(t *testing.T) {
133138
podName: "loadbalancer-https",
134139
port: 443,
135140
}
141+
t.Cleanup(func() {
142+
lbTest.TearDown()
143+
})
136144

137-
pod := lbTest.DeployTestPod()
145+
pod, err := lbTest.DeployTestPod()
146+
require.NoError(t, err)
138147

139148
lbSvc := lbTest.ServiceDefinition(pod, map[string]string{
140149
string(annotation.LBLocation): "nbg1",
@@ -144,62 +153,62 @@ func TestServiceLoadBalancersHTTPSWithManagedCertificate(t *testing.T) {
144153
string(annotation.LBSvcHTTPManagedCertificateUseACMEStaging): "true",
145154
})
146155

147-
lbSvc, err := lbTest.CreateService(lbSvc)
148-
if assert.NoError(t, err, "deploying test svc") {
149-
certs, err := testCluster.hcloud.Certificate.AllWithOpts(ctx, hcloud.CertificateListOpts{
150-
ListOpts: hcloud.ListOpts{
151-
LabelSelector: fmt.Sprintf("%s=%s", hcops.LabelServiceUID, lbSvc.ObjectMeta.UID),
152-
},
153-
})
154-
assert.NoError(t, err)
155-
if assert.Len(t, certs, 1) {
156-
testCluster.certificates.Add(certs[0].ID)
157-
}
158-
}
156+
lbSvc, err = lbTest.CreateService(lbSvc)
157+
require.NoError(t, err)
159158

160-
lbTest.TearDown()
159+
certs, err := testCluster.hcloud.Certificate.AllWithOpts(t.Context(), hcloud.CertificateListOpts{
160+
ListOpts: hcloud.ListOpts{
161+
LabelSelector: fmt.Sprintf("%s=%s", hcops.LabelServiceUID, lbSvc.ObjectMeta.UID),
162+
},
163+
})
164+
assert.NoError(t, err)
165+
if assert.Len(t, certs, 1) {
166+
testCluster.certificates.Add(certs[0].ID)
167+
}
161168
}
162169

163170
func TestServiceLoadBalancersWithPrivateNetwork(t *testing.T) {
164171
t.Parallel()
165172

166173
lbTest := lbTestHelper{t: t, podName: "loadbalancer-private-network"}
174+
t.Cleanup(func() {
175+
lbTest.TearDown()
176+
})
167177

168-
pod := lbTest.DeployTestPod()
178+
pod, err := lbTest.DeployTestPod()
179+
require.NoError(t, err)
169180

170181
ipRange := &net.IPNet{
171182
IP: net.IPv4(10, 0, 0, 0),
172183
Mask: net.CIDRMask(24, 32),
173184
}
174185

175-
lbSvcDefinition := lbTest.ServiceDefinition(pod, map[string]string{
186+
lbSvc := lbTest.ServiceDefinition(pod, map[string]string{
176187
string(annotation.LBLocation): "nbg1",
177188
string(annotation.LBUsePrivateIP): "true",
178189
string(annotation.PrivateSubnetIPRange): ipRange.String(),
179190
})
180191

181-
lbSvc, err := lbTest.CreateService(lbSvcDefinition)
182-
if assert.NoError(t, err, "deploying test svc") {
183-
WaitForHTTPAvailable(t, lbSvc.Status.LoadBalancer.Ingress[0].IP, false)
192+
lbSvc, err = lbTest.CreateService(lbSvc)
193+
require.NoError(t, err)
184194

185-
anyInIPRange := slices.ContainsFunc(lbSvc.Status.LoadBalancer.Ingress, func(ingress corev1.LoadBalancerIngress) bool {
186-
ip := net.ParseIP(ingress.IP)
187-
if ip == nil {
188-
return false
189-
}
190-
return ipRange.Contains(ip)
191-
})
192-
193-
assert.True(t, anyInIPRange)
194-
}
195+
err = lbTest.WaitForHTTPAvailable(lbSvc.Status.LoadBalancer.Ingress[0].IP, false)
196+
require.NoError(t, err)
195197

196-
lbTest.TearDown()
198+
anyInIPRange := slices.ContainsFunc(lbSvc.Status.LoadBalancer.Ingress, func(ingress corev1.LoadBalancerIngress) bool {
199+
ip := net.ParseIP(ingress.IP)
200+
if ip == nil {
201+
return false
202+
}
203+
return ipRange.Contains(ip)
204+
})
205+
assert.True(t, anyInIPRange)
197206
}
198207

199208
func TestRouteNetworksPodIPsAreAccessible(t *testing.T) {
200209
t.Parallel()
201210

202-
err := wait.PollUntilContextTimeout(context.Background(), 1*time.Second, 2*time.Minute, true, func(ctx context.Context) (bool, error) {
211+
err := wait.PollUntilContextTimeout(t.Context(), 1*time.Second, 2*time.Minute, true, func(ctx context.Context) (bool, error) {
203212
node, err := testCluster.k8sClient.CoreV1().Nodes().Get(ctx, testCluster.ControlNodeName(), metav1.GetOptions{})
204213
if err != nil {
205214
return false, err
@@ -222,6 +231,6 @@ func TestRouteNetworksPodIPsAreAccessible(t *testing.T) {
222231
return false, nil
223232
})
224233
if err != nil {
225-
t.Fatal(err)
234+
t.Errorf("error waiting for pod IPs being accessible: %v", err)
226235
}
227236
}

tests/e2e/e2e_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
package e2e
44

55
import (
6-
"context"
76
"fmt"
87
"os"
98
"strings"
@@ -34,7 +33,7 @@ func TestPodIsPresent(t *testing.T) {
3433
t.Parallel()
3534

3635
t.Run("hcloud-cloud-controller-manager pod is present in kube-system", func(t *testing.T) {
37-
pods, err := testCluster.k8sClient.CoreV1().Pods("kube-system").List(context.Background(), metav1.ListOptions{})
36+
pods, err := testCluster.k8sClient.CoreV1().Pods("kube-system").List(t.Context(), metav1.ListOptions{})
3837
assert.NoError(t, err)
3938

4039
found := false
@@ -51,7 +50,7 @@ func TestPodIsPresent(t *testing.T) {
5150

5251
t.Run("pod with app=hcloud-cloud-controller-manager is present in kube-system", func(t *testing.T) {
5352
pods, err := testCluster.k8sClient.CoreV1().Pods("kube-system").
54-
List(context.Background(), metav1.ListOptions{
53+
List(t.Context(), metav1.ListOptions{
5554
LabelSelector: "app.kubernetes.io/name=hcloud-cloud-controller-manager",
5655
})
5756
assert.NoError(t, err)

0 commit comments

Comments
 (0)