Skip to content

Commit 3807a2d

Browse files
authored
enable e2e tests for service (#1726)
1 parent 9a4e140 commit 3807a2d

File tree

4 files changed

+34
-21
lines changed

4 files changed

+34
-21
lines changed

scripts/ci_e2e_test.sh

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,12 +214,22 @@ test_controller_image() {
214214
return 1
215215
fi
216216

217-
ginkgo -v -r test/e2e/ingress/ -- \
217+
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --region ${AWS_REGION} --query Account --output text)
218+
S3_BUCKET=${S3_BUCKET:-"lb-controller-e2e-${AWS_ACCOUNT_ID}"}
219+
CERTIFICATE_ARN_PREFIX=arn:aws:acm:${AWS_REGION}:${AWS_ACCOUNT_ID}:certificate
220+
CERT_ID1="7caec311-1e1f-4b04-a061-bfa688fe813f"
221+
CERT_ID2="724963dd-f571-4f2c-b549-5c7d0e35e4b8"
222+
CERT_ID3="1001570b-1779-40c3-9b49-9a9a41e30058"
223+
CERTIFICATE_ARNS=${CERTIFICATE_ARNS:-"${CERTIFICATE_ARN_PREFIX}/${CERT_ID1},${CERTIFICATE_ARN_PREFIX}/${CERT_ID2},${CERTIFICATE_ARN_PREFIX}/${CERT_ID3}"}
224+
225+
ginkgo -v -r test/e2e -- \
218226
--kubeconfig=${CLUSTER_KUBECONFIG} \
219227
--cluster-name=${CLUSTER_NAME} \
220228
--aws-region=${AWS_REGION} \
221229
--aws-vpc-id=${cluster_vpc_id} \
222-
--controller-image=${CONTROLLER_IMAGE_NAME}
230+
--controller-image=${CONTROLLER_IMAGE_NAME} \
231+
--s3-bucket-name=${S3_BUCKET} \
232+
--certificate-arns=${CERTIFICATE_ARNS}
223233
}
224234

225235
#######################################

test/e2e/service/service.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,12 +182,14 @@ func (m *ServiceTest) VerifyLoadBalancerAttributes(ctx context.Context, f *frame
182182
}
183183

184184
func (m *ServiceTest) CheckTargetGroupHealth(ctx context.Context, f *framework.Framework, tgArn string, numTargets int) (bool, error) {
185-
186185
resp, err := f.Cloud.ELBV2().DescribeTargetHealthWithContext(ctx, &elbv2.DescribeTargetHealthInput{
187186
TargetGroupArn: aws.String(tgArn),
188187
})
189188
Expect(err).ToNot(HaveOccurred())
190-
Expect(len(resp.TargetHealthDescriptions)).To(Equal(numTargets))
189+
190+
if len(resp.TargetHealthDescriptions) != numTargets {
191+
return false, nil
192+
}
191193

192194
healthy := true
193195
for _, thd := range resp.TargetHealthDescriptions {
@@ -225,8 +227,6 @@ func (m *ServiceTest) CheckTargetGroups(ctx context.Context, f *framework.Framew
225227
for _, tg := range targetGroups.TargetGroups {
226228
Expect(aws.StringValue(tg.TargetType)).To(Equal(expected.TargetType))
227229
Expect(aws.StringValue(tg.Protocol)).To(Equal(expected.TargetGroups[strconv.Itoa(int(aws.Int64Value(tg.Port)))]))
228-
_, err := m.CheckTargetGroupHealth(ctx, f, aws.StringValue(tg.TargetGroupArn), expected.NumTargets)
229-
Expect(err).ToNot(HaveOccurred())
230230
err = m.verifyTargetGroupHealthCheckConfig(tg, expected.TargetGroupHC)
231231
Expect(err).ToNot(HaveOccurred())
232232
}

test/e2e/service/service_test.go

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ var _ = Describe("Service", func() {
2929
labels map[string]string
3030
)
3131

32-
BeforeSuite(func() {
32+
BeforeEach(func() {
3333
ctx = context.Background()
3434
name = utils.RandomDNS1123Label(20)
3535
numReplicas = 3
@@ -75,7 +75,7 @@ var _ = Describe("Service", func() {
7575
tf.DPManager.WaitUntilDeploymentReady(ctx, deployment)
7676
})
7777

78-
AfterSuite(func() {
78+
AfterEach(func() {
7979
tf.K8sClient.Delete(ctx, deployment)
8080
tf.DPManager.WaitUntilDeploymentDeleted(ctx, deployment)
8181
tf.K8sClient.Delete(ctx, ns)
@@ -196,7 +196,6 @@ var _ = Describe("Service", func() {
196196
var (
197197
svcTest service.ServiceTest
198198
svc *corev1.Service
199-
certArn string
200199
)
201200
BeforeEach(func() {
202201
svc = &corev1.Service{
@@ -220,19 +219,13 @@ var _ = Describe("Service", func() {
220219
},
221220
},
222221
}
223-
certArn = svcTest.GenerateAndImportCertToACM(ctx, tf, "*.elb.us-west-2.amazonaws.com")
224-
Expect(certArn).ToNot(BeNil())
225222
})
226-
227-
AfterEach(func() {
228-
Eventually(func() bool {
229-
return svcTest.DeleteCertFromACM(ctx, tf, certArn) != nil
230-
}, utils.PollTimeoutMedium, utils.PollIntervalLong).Should(BeTrue())
231-
})
232-
233223
It("Should create TLS listeners", func() {
224+
if len(tf.Options.CertificateARNs) == 0 {
225+
Skip("Skipping tests, certificates not specified")
226+
}
234227
By("Creating service", func() {
235-
svc.Annotations["service.beta.kubernetes.io/aws-load-balancer-ssl-cert"] = certArn
228+
svc.Annotations["service.beta.kubernetes.io/aws-load-balancer-ssl-cert"] = tf.Options.CertificateARNs
236229
err := svcTest.Create(ctx, tf, svc)
237230
Expect(err).ToNot(HaveOccurred())
238231
})
@@ -289,17 +282,20 @@ var _ = Describe("Service", func() {
289282
}, utils.PollTimeoutShort, utils.PollIntervalMedium).Should(BeTrue())
290283
})
291284
By("Specifying logging annotations", func() {
285+
if len(tf.Options.S3BucketName) == 0 {
286+
return
287+
}
292288
oldSvc := svc.DeepCopy()
293289
svc.Annotations["service.beta.kubernetes.io/aws-load-balancer-ssl-ports"] = "443, 333"
294290
svc.Annotations["service.beta.kubernetes.io/aws-load-balancer-access-log-enabled"] = "true"
295-
svc.Annotations["service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name"] = "nlb-ip-svc-tls313"
291+
svc.Annotations["service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-name"] = tf.Options.S3BucketName
296292
svc.Annotations["service.beta.kubernetes.io/aws-load-balancer-access-log-s3-bucket-prefix"] = "nlb-pfx"
297293
err := svcTest.Update(ctx, tf, svc, oldSvc)
298294
Expect(err).ToNot(HaveOccurred())
299295
Eventually(func() bool {
300296
return svcTest.VerifyLoadBalancerAttributes(ctx, tf, map[string]string{
301297
"access_logs.s3.enabled": "true",
302-
"access_logs.s3.bucket": "nlb-ip-svc-tls313",
298+
"access_logs.s3.bucket": tf.Options.S3BucketName,
303299
"access_logs.s3.prefix": "nlb-pfx",
304300
}) == nil
305301
}, utils.PollTimeoutShort, utils.PollIntervalMedium).Should(BeTrue())

test/framework/options.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ type Options struct {
2020

2121
// AWS Load Balancer Controller image. leave empty to use default one from helm chart.
2222
ControllerImage string
23+
24+
// Additional parameters for e2e tests
25+
S3BucketName string
26+
CertificateARNs string
2327
}
2428

2529
func (options *Options) BindFlags() {
@@ -28,6 +32,9 @@ func (options *Options) BindFlags() {
2832
flag.StringVar(&options.AWSVPCID, "aws-vpc-id", "", `AWS VPC ID for the kubernetes cluster`)
2933

3034
flag.StringVar(&options.ControllerImage, "controller-image", "", `AWS Load Balancer Controller image`)
35+
36+
flag.StringVar(&options.S3BucketName, "s3-bucket-name", "", `S3 bucket to use for testing load balancer access logging feature`)
37+
flag.StringVar(&options.CertificateARNs, "certificate-arns", "", `Certificate ARNs to use for TLS listeners`)
3138
}
3239

3340
func (options *Options) Validate() error {

0 commit comments

Comments
 (0)