Skip to content

Commit 70b57fb

Browse files
committed
refactor e2e tests
1 parent ba7df31 commit 70b57fb

File tree

8 files changed

+59
-29
lines changed

8 files changed

+59
-29
lines changed

scripts/run-e2e-test.sh

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ GINKGO_TEST_BUILD="$SCRIPT_DIR/../test/build"
99

1010
source "$SCRIPT_DIR"/lib/common.sh
1111

12+
# the corresponding accounts for AWS isolated regions
13+
BJS_PREFIX="918309763551.dkr.ecr.cn-north-1.amazonaws.com.cn"
14+
ZHY_PREFIX="961992271922.dkr.ecr.cn-northwest-1.amazonaws.com.cn"
15+
DCA_PREFIX="639420080494.dkr.ecr.us-iso-east-1.c2s.ic.gov"
16+
LCK_PREFIX="517467847110.dkr.ecr.us-isob-east-1.sc2s.sgov.gov"
17+
1218
function toggle_windows_scheduling(){
1319
schedule=$1
1420
nodes=$(kubectl get nodes -l kubernetes.io/os=windows | tail -n +2 | cut -d' ' -f1)
@@ -61,12 +67,17 @@ if [[ $REGION == "cn-north-1" || $REGION == "cn-northwest-1" ]];then
6167
fi
6268

6369
if [[ $REGION == "cn-north-1" ]];then
64-
IMAGE="918309763551.dkr.ecr.cn-north-1.amazonaws.com.cn/amazon/aws-load-balancer-controller"
70+
PREFIX=$BJS_PREFIX
6571
elif [[ $REGION == "cn-northwest-1" ]];then
66-
IMAGE="961992271922.dkr.ecr.cn-northwest-1.amazonaws.com.cn/amazon/aws-load-balancer-controller"
72+
PREFIX=$ZHY_PREFIX
73+
elif [[ $REGION == "us-iso-east-1" ]];then
74+
PREFIX=$DCA_PREFIX
75+
elif [[ $REGION == "us-isob-east-1" ]];then
76+
PREFIX=$LCK_PREFIX
6777
else
68-
IMAGE="602401143452.dkr.ecr.us-west-2.amazonaws.com/amazon/aws-load-balancer-controller"
78+
PREFIX="602401143452.dkr.ecr.us-west-2.amazonaws.com"
6979
fi
80+
IMAGE="$PREFIX/amazon/aws-load-balancer-controller"
7081

7182
echo "IMAGE: $IMAGE"
7283
echo "create IAM policy document file"

test/e2e/ingress/multi_path_backend.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func (s *multiPathBackendStack) buildResourceStacks(namespacedResourcesCFGs map[
206206
}
207207

208208
func (s *multiPathBackendStack) buildResourceStack(ns *corev1.Namespace, resourcesCFG NamespacedResourcesConfig, f *framework.Framework) (*resourceStack, map[string]*networking.Ingress) {
209-
dpByBackendID, svcByBackendID := s.buildBackendResources(ns, resourcesCFG.BackendCFGs)
209+
dpByBackendID, svcByBackendID := s.buildBackendResources(ns, resourcesCFG.BackendCFGs, f.Options.AWSRegion)
210210
ingByIngID := s.buildIngressResources(ns, resourcesCFG.IngCFGs, svcByBackendID, f)
211211

212212
dps := make([]*appsv1.Deployment, 0, len(dpByBackendID))
@@ -282,18 +282,19 @@ func (s *multiPathBackendStack) buildIngressResource(ns *corev1.Namespace, ingID
282282
return ing
283283
}
284284

285-
func (s *multiPathBackendStack) buildBackendResources(ns *corev1.Namespace, backendCFGs map[string]BackendConfig) (map[string]*appsv1.Deployment, map[string]*corev1.Service) {
285+
func (s *multiPathBackendStack) buildBackendResources(ns *corev1.Namespace, backendCFGs map[string]BackendConfig, awsRegion string) (map[string]*appsv1.Deployment, map[string]*corev1.Service) {
286286
dpByBackendID := make(map[string]*appsv1.Deployment, len(backendCFGs))
287287
svcByBackendID := make(map[string]*corev1.Service, len(backendCFGs))
288288
for backendID, backendCFG := range backendCFGs {
289-
dp, svc := s.buildBackendResource(ns, backendID, backendCFG)
289+
dp, svc := s.buildBackendResource(ns, backendID, backendCFG, awsRegion)
290290
dpByBackendID[backendID] = dp
291291
svcByBackendID[backendID] = svc
292292
}
293293
return dpByBackendID, svcByBackendID
294294
}
295295

296-
func (s *multiPathBackendStack) buildBackendResource(ns *corev1.Namespace, backendID string, backendCFG BackendConfig) (*appsv1.Deployment, *corev1.Service) {
296+
func (s *multiPathBackendStack) buildBackendResource(ns *corev1.Namespace, backendID string, backendCFG BackendConfig, awsRegion string) (*appsv1.Deployment, *corev1.Service) {
297+
dpImage := utils.GetDeploymentImage(awsRegion, utils.DefaultColortellerImage)
297298
dp := &appsv1.Deployment{
298299
ObjectMeta: metav1.ObjectMeta{
299300
Namespace: ns.Name,
@@ -316,7 +317,7 @@ func (s *multiPathBackendStack) buildBackendResource(ns *corev1.Namespace, backe
316317
Containers: []corev1.Container{
317318
{
318319
Name: "app",
319-
Image: utils.ColortellerImage,
320+
Image: dpImage,
320321
Ports: []corev1.ContainerPort{
321322
{
322323
ContainerPort: 8080,

test/e2e/ingress/vanilla_ingress_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ var _ = Describe("vanilla ingress tests", func() {
7373
It("[ingress-class] with IngressClass configured with 'ingress.k8s.aws/alb' controller, one ALB shall be created and functional", func() {
7474
appBuilder := manifest.NewFixedResponseServiceBuilder()
7575
ingBuilder := manifest.NewIngressBuilder()
76-
dp, svc := appBuilder.Build(sandboxNS.Name, "app")
76+
dp, svc := appBuilder.Build(sandboxNS.Name, "app", tf.Options.AWSRegion)
7777
ingBackend := networking.IngressBackend{
7878
Service: &networking.IngressServiceBackend{
7979
Name: svc.Name,
@@ -119,7 +119,7 @@ var _ = Describe("vanilla ingress tests", func() {
119119
It("with 'kubernetes.io/ingress.class' annotation set to 'alb', one ALB shall be created and functional", func() {
120120
appBuilder := manifest.NewFixedResponseServiceBuilder()
121121
ingBuilder := manifest.NewIngressBuilder()
122-
dp, svc := appBuilder.Build(sandboxNS.Name, "app")
122+
dp, svc := appBuilder.Build(sandboxNS.Name, "app", tf.Options.AWSRegion)
123123
ingBackend := networking.IngressBackend{
124124
Service: &networking.IngressServiceBackend{
125125
Name: svc.Name,
@@ -159,7 +159,7 @@ var _ = Describe("vanilla ingress tests", func() {
159159
It("[ingress-class] with IngressClass configured with 'nginx' controller, no ALB shall be created", func() {
160160
appBuilder := manifest.NewFixedResponseServiceBuilder()
161161
ingBuilder := manifest.NewIngressBuilder()
162-
dp, svc := appBuilder.Build(sandboxNS.Name, "app")
162+
dp, svc := appBuilder.Build(sandboxNS.Name, "app", tf.Options.AWSRegion)
163163
ingBackend := networking.IngressBackend{
164164
Service: &networking.IngressServiceBackend{
165165
Name: svc.Name,
@@ -198,7 +198,7 @@ var _ = Describe("vanilla ingress tests", func() {
198198
It("with 'kubernetes.io/ingress.class' annotation set to 'nginx', no ALB shall be created", func() {
199199
appBuilder := manifest.NewFixedResponseServiceBuilder()
200200
ingBuilder := manifest.NewIngressBuilder()
201-
dp, svc := appBuilder.Build(sandboxNS.Name, "app")
201+
dp, svc := appBuilder.Build(sandboxNS.Name, "app", tf.Options.AWSRegion)
202202
ingBackend := networking.IngressBackend{
203203
Service: &networking.IngressServiceBackend{
204204
Name: svc.Name,
@@ -229,7 +229,7 @@ var _ = Describe("vanilla ingress tests", func() {
229229
It("without IngressClass or 'kubernetes.io/ingress.class' annotation, no ALB shall be created", func() {
230230
appBuilder := manifest.NewFixedResponseServiceBuilder()
231231
ingBuilder := manifest.NewIngressBuilder()
232-
dp, svc := appBuilder.Build(sandboxNS.Name, "app")
232+
dp, svc := appBuilder.Build(sandboxNS.Name, "app", tf.Options.AWSRegion)
233233
ingBackend := networking.IngressBackend{
234234
Service: &networking.IngressServiceBackend{
235235
Name: svc.Name,
@@ -261,7 +261,7 @@ var _ = Describe("vanilla ingress tests", func() {
261261
It("with 'alb.ingress.kubernetes.io/load-balancer-name' annotation explicitly specified, one ALB shall be created and functional", func() {
262262
appBuilder := manifest.NewFixedResponseServiceBuilder()
263263
ingBuilder := manifest.NewIngressBuilder()
264-
dp, svc := appBuilder.Build(sandboxNS.Name, "app")
264+
dp, svc := appBuilder.Build(sandboxNS.Name, "app", tf.Options.AWSRegion)
265265
ingBackend := networking.IngressBackend{
266266
Service: &networking.IngressServiceBackend{
267267
Name: svc.Name,
@@ -309,7 +309,7 @@ var _ = Describe("vanilla ingress tests", func() {
309309
It("with 'alb.ingress.kubernetes.io/target-type' annotation explicitly specified, one ALB shall be created and functional", func() {
310310
appBuilder := manifest.NewFixedResponseServiceBuilder().WithTargetPortName("e2e-targetport")
311311
ingBuilder := manifest.NewIngressBuilder()
312-
dp, svc := appBuilder.Build(sandboxNS.Name, "app")
312+
dp, svc := appBuilder.Build(sandboxNS.Name, "app", tf.Options.AWSRegion)
313313
ingBackend := networking.IngressBackend{
314314
Service: &networking.IngressServiceBackend{
315315
Name: svc.Name,
@@ -360,7 +360,7 @@ var _ = Describe("vanilla ingress tests", func() {
360360
It("with 'alb.ingress.kubernetes.io/target-type' annotation explicitly specified, and endPointSlices enabled, one ALB shall be created and functional", func() {
361361
appBuilder := manifest.NewFixedResponseServiceBuilder().WithTargetPortName("e2e-targetport")
362362
ingBuilder := manifest.NewIngressBuilder()
363-
dp, svc := appBuilder.Build(sandboxNS.Name, "app")
363+
dp, svc := appBuilder.Build(sandboxNS.Name, "app", tf.Options.AWSRegion)
364364
ingBackend := networking.IngressBackend{
365365
Service: &networking.IngressServiceBackend{
366366
Name: svc.Name,
@@ -401,8 +401,8 @@ var _ = Describe("vanilla ingress tests", func() {
401401
It("with annotation based actions, one ALB shall be created and functional", func() {
402402
appBuilder := manifest.NewFixedResponseServiceBuilder()
403403
ingBuilder := manifest.NewIngressBuilder()
404-
dp1, svc1 := appBuilder.WithHTTPBody("app-1").Build(sandboxNS.Name, "app-1")
405-
dp2, svc2 := appBuilder.WithHTTPBody("app-2").Build(sandboxNS.Name, "app-2")
404+
dp1, svc1 := appBuilder.WithHTTPBody("app-1").Build(sandboxNS.Name, "app-1", tf.Options.AWSRegion)
405+
dp2, svc2 := appBuilder.WithHTTPBody("app-2").Build(sandboxNS.Name, "app-2", tf.Options.AWSRegion)
406406
ingResponse503Backend := networking.IngressBackend{
407407
Service: &networking.IngressServiceBackend{
408408
Name: "response-503",

test/e2e/service/nlb_instance_target.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import (
88
"k8s.io/apimachinery/pkg/util/intstr"
99
"sigs.k8s.io/aws-load-balancer-controller/pkg/k8s"
1010
"sigs.k8s.io/aws-load-balancer-controller/test/framework"
11+
"sigs.k8s.io/aws-load-balancer-controller/test/framework/utils"
1112
"sigs.k8s.io/controller-runtime/pkg/client"
1213
)
1314

1415
const (
15-
defaultTestImage = "public.ecr.aws/l6m2t8p7/hello-multi:latest"
1616
appContainerPort = 80
1717
defaultNumReplicas = 3
1818
defaultName = "instance-e2e"
@@ -23,7 +23,7 @@ type NLBInstanceTestStack struct {
2323
}
2424

2525
func (s *NLBInstanceTestStack) Deploy(ctx context.Context, f *framework.Framework, svcAnnotations map[string]string) error {
26-
dp := s.buildDeploymentSpec()
26+
dp := s.buildDeploymentSpec(f.Options.AWSRegion)
2727
svc := s.buildServiceSpec(ctx, svcAnnotations)
2828
s.resourceStack = NewResourceStack(dp, svc, "service-instance-e2e", false)
2929

@@ -82,12 +82,13 @@ func (s *NLBInstanceTestStack) ApplyNodeLabels(ctx context.Context, f *framework
8282
return nil
8383
}
8484

85-
func (s *NLBInstanceTestStack) buildDeploymentSpec() *appsv1.Deployment {
85+
func (s *NLBInstanceTestStack) buildDeploymentSpec(awsRegion string) *appsv1.Deployment {
8686
numReplicas := int32(defaultNumReplicas)
8787
labels := map[string]string{
8888
"app.kubernetes.io/name": "multi-port",
8989
"app.kubernetes.io/instance": defaultName,
9090
}
91+
dpImage := utils.GetDeploymentImage(awsRegion, utils.DefaultHelloImage)
9192
return &appsv1.Deployment{
9293
ObjectMeta: metav1.ObjectMeta{
9394
Name: defaultName,
@@ -106,7 +107,7 @@ func (s *NLBInstanceTestStack) buildDeploymentSpec() *appsv1.Deployment {
106107
{
107108
Name: "app",
108109
ImagePullPolicy: corev1.PullAlways,
109-
Image: defaultTestImage,
110+
Image: dpImage,
110111
Ports: []corev1.ContainerPort{
111112
{
112113
ContainerPort: appContainerPort,

test/e2e/service/nlb_ip_target_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ var _ = Describe("k8s service reconciled by the aws load balancer", func() {
2323
labels map[string]string
2424
stack NLBIPTestStack
2525
)
26-
2726
BeforeEach(func() {
2827
ctx = context.Background()
2928
numReplicas = 3
@@ -33,6 +32,7 @@ var _ = Describe("k8s service reconciled by the aws load balancer", func() {
3332
"app.kubernetes.io/name": "multi-port",
3433
"app.kubernetes.io/instance": name,
3534
}
35+
dpImage := utils.GetDeploymentImage(tf.Options.AWSRegion, utils.DefaultHelloImage)
3636
deployment = &appsv1.Deployment{
3737
ObjectMeta: metav1.ObjectMeta{
3838
Name: name,
@@ -51,7 +51,7 @@ var _ = Describe("k8s service reconciled by the aws load balancer", func() {
5151
{
5252
Name: "app",
5353
ImagePullPolicy: corev1.PullAlways,
54-
Image: defaultTestImage,
54+
Image: dpImage,
5555
Ports: []corev1.ContainerPort{
5656
{
5757
ContainerPort: appContainerPort,

test/framework/manifest/fixed_response_service_builder.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,16 @@ func (b *fixedResponseServiceBuilder) WithServiceAnnotations(svcAnnotations map[
6868
return b
6969
}
7070

71-
func (b *fixedResponseServiceBuilder) Build(namespace string, name string) (*appsv1.Deployment, *corev1.Service) {
72-
dp := b.buildDeployment(namespace, name)
71+
func (b *fixedResponseServiceBuilder) Build(namespace string, name string, awsRegion string) (*appsv1.Deployment, *corev1.Service) {
72+
dp := b.buildDeployment(namespace, name, awsRegion)
7373
svc := b.buildService(namespace, name)
7474
return dp, svc
7575
}
7676

7777
// TODO: have a deployment builder that been called by this component :D.
78-
func (b *fixedResponseServiceBuilder) buildDeployment(namespace string, name string) *appsv1.Deployment {
78+
func (b *fixedResponseServiceBuilder) buildDeployment(namespace string, name string, awsRegion string) *appsv1.Deployment {
7979
podLabels := b.buildPodLabels(name)
80+
dpImage := utils.GetDeploymentImage(awsRegion, utils.DefaultColortellerImage)
8081
dp := &appsv1.Deployment{
8182
ObjectMeta: metav1.ObjectMeta{
8283
Namespace: namespace,
@@ -95,7 +96,7 @@ func (b *fixedResponseServiceBuilder) buildDeployment(namespace string, name str
9596
Containers: []corev1.Container{
9697
{
9798
Name: "app",
98-
Image: utils.ColortellerImage,
99+
Image: dpImage,
99100
Ports: []corev1.ContainerPort{
100101
{
101102
Name: b.targetPortName,

test/framework/utils/constants.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package utils
22

33
const (
4-
ColortellerImage = "public.ecr.aws/l6m2t8p7/colorteller:latest"
4+
DefaultAWSAccount = "617930562442.dkr.ecr.us-west-2.amazonaws.com"
5+
DCAAccount = "639420080494.dkr.ecr.us-iso-east-1.c2s.ic.gov"
6+
LCKAccount = "517467847110.dkr.ecr.us-isob-east-1.sc2s.sgov.gov"
7+
DefaultHelloImage = "networking-e2e-test-images/hello-multi:latest"
8+
DefaultColortellerImage = "networking-e2e-test-images/colorteller:latest"
59
)

test/framework/utils/image.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package utils
2+
3+
func GetDeploymentImage(awsRegion string, image string) string {
4+
awsAccount := DefaultAWSAccount
5+
if awsRegion == "us-iso-east-1" {
6+
awsAccount = DCAAccount
7+
} else if awsRegion == "us-isob-east-1" {
8+
awsAccount = LCKAccount
9+
}
10+
dpImage := awsAccount + "/" + image
11+
return dpImage
12+
}

0 commit comments

Comments
 (0)