Skip to content

Commit 3bcb9a5

Browse files
authored
Merge pull request #5281 from AndiDog/e2e-test-panics
🌱 Avoid panicking in after-suite test code, improve logging
2 parents 69c64a6 + 7968c55 commit 3bcb9a5

File tree

4 files changed

+31
-19
lines changed

4 files changed

+31
-19
lines changed

test/e2e/shared/aws.go

+22-14
Original file line numberDiff line numberDiff line change
@@ -677,11 +677,11 @@ func logAccountDetails(prov client.ConfigProvider) {
677677

678678
output, err := stsSvc.GetCallerIdentity(&sts.GetCallerIdentityInput{})
679679
if err != nil {
680-
fmt.Fprintf(GinkgoWriter, "couldn't get sts caller identity: err=%s", err)
680+
fmt.Fprintf(GinkgoWriter, "Couldn't get sts caller identity: err=%s\n", err)
681681
return
682682
}
683683

684-
fmt.Fprintf(GinkgoWriter, "Using AWS account: %s", *output.Account)
684+
fmt.Fprintf(GinkgoWriter, "Using AWS account: %s\n", *output.Account)
685685
}
686686

687687
// deleteCloudFormationStack removes the provisioned clusterawsadm stack.
@@ -869,6 +869,11 @@ func newUserAccessKey(prov client.ConfigProvider, userName string) *iam.AccessKe
869869
}
870870

871871
func DumpCloudTrailEvents(e2eCtx *E2EContext) {
872+
if e2eCtx.BootstrapUserAWSSession == nil {
873+
Fail("Couldn't dump cloudtrail events: no AWS client was set up (please look at previous errors)")
874+
return
875+
}
876+
872877
client := cloudtrail.New(e2eCtx.BootstrapUserAWSSession)
873878
events := []*cloudtrail.Event{}
874879
err := client.LookupEventsPages(
@@ -882,15 +887,15 @@ func DumpCloudTrailEvents(e2eCtx *E2EContext) {
882887
},
883888
)
884889
if err != nil {
885-
fmt.Fprintf(GinkgoWriter, "couldn't get AWS CloudTrail events: err=%v", err)
890+
fmt.Fprintf(GinkgoWriter, "Couldn't get AWS CloudTrail events: err=%v\n", err)
886891
}
887892
logPath := filepath.Join(e2eCtx.Settings.ArtifactFolder, "cloudtrail-events.yaml")
888893
dat, err := yaml.Marshal(events)
889894
if err != nil {
890-
fmt.Fprintf(GinkgoWriter, "Failed to marshal AWS CloudTrail events: err=%v", err)
895+
fmt.Fprintf(GinkgoWriter, "Failed to marshal AWS CloudTrail events: err=%v\n", err)
891896
}
892897
if err := os.WriteFile(logPath, dat, 0o600); err != nil {
893-
fmt.Fprintf(GinkgoWriter, "couldn't write cloudtrail events to file: file=%s err=%s", logPath, err)
898+
fmt.Fprintf(GinkgoWriter, "Couldn't write cloudtrail events to file: file=%q err=%s\n", logPath, err)
894899
return
895900
}
896901
}
@@ -1013,21 +1018,24 @@ func DumpEKSClusters(_ context.Context, e2eCtx *E2EContext) {
10131018
}
10141019
logPath := filepath.Join(e2eCtx.Settings.ArtifactFolder, "clusters", name, "aws-resources")
10151020
if err := os.MkdirAll(logPath, os.ModePerm); err != nil {
1016-
fmt.Fprintf(GinkgoWriter, "couldn't create directory: path=%s, err=%s", logPath, err)
1021+
fmt.Fprintf(GinkgoWriter, "Couldn't create directory: path=%q, err=%s\n", logPath, err)
10171022
}
1018-
fmt.Fprintf(GinkgoWriter, "folder created for eks clusters: %s\n", logPath)
1023+
fmt.Fprintf(GinkgoWriter, "Folder created for eks clusters: %q\n", logPath)
10191024

10201025
input := &eks.ListClustersInput{}
10211026
var eksClient *eks.EKS
1022-
if e2eCtx.BootstrapUserAWSSession == nil {
1027+
if e2eCtx.BootstrapUserAWSSession == nil && e2eCtx.AWSSession != nil {
10231028
eksClient = eks.New(e2eCtx.AWSSession)
1024-
} else {
1029+
} else if e2eCtx.BootstrapUserAWSSession != nil {
10251030
eksClient = eks.New(e2eCtx.BootstrapUserAWSSession)
1031+
} else {
1032+
Fail("Couldn't list EKS clusters: no AWS client was set up (please look at previous errors)")
1033+
return
10261034
}
10271035

10281036
output, err := eksClient.ListClusters(input)
10291037
if err != nil {
1030-
fmt.Fprintf(GinkgoWriter, "couldn't list EKS clusters: err=%s", err)
1038+
fmt.Fprintf(GinkgoWriter, "Couldn't list EKS clusters: err=%s\n", err)
10311039
return
10321040
}
10331041

@@ -1037,7 +1045,7 @@ func DumpEKSClusters(_ context.Context, e2eCtx *E2EContext) {
10371045
}
10381046
describeOutput, err := eksClient.DescribeCluster(describeInput)
10391047
if err != nil {
1040-
fmt.Fprintf(GinkgoWriter, "couldn't describe EKS clusters: name=%s err=%s", *clusterName, err)
1048+
fmt.Fprintf(GinkgoWriter, "Couldn't describe EKS clusters: name=%q err=%s\n", *clusterName, err)
10411049
continue
10421050
}
10431051
dumpEKSCluster(describeOutput.Cluster, logPath)
@@ -1047,21 +1055,21 @@ func DumpEKSClusters(_ context.Context, e2eCtx *E2EContext) {
10471055
func dumpEKSCluster(cluster *eks.Cluster, logPath string) {
10481056
clusterYAML, err := yaml.Marshal(cluster)
10491057
if err != nil {
1050-
fmt.Fprintf(GinkgoWriter, "couldn't marshal cluster to yaml: name=%s err=%s", *cluster.Name, err)
1058+
fmt.Fprintf(GinkgoWriter, "Couldn't marshal cluster to yaml: name=%q err=%s\n", *cluster.Name, err)
10511059
return
10521060
}
10531061

10541062
fileName := fmt.Sprintf("%s.yaml", *cluster.Name)
10551063
clusterLog := path.Join(logPath, fileName)
10561064
f, err := os.OpenFile(clusterLog, os.O_APPEND|os.O_CREATE|os.O_WRONLY, os.ModePerm) //nolint:gosec
10571065
if err != nil {
1058-
fmt.Fprintf(GinkgoWriter, "couldn't open log file: name=%s err=%s", clusterLog, err)
1066+
fmt.Fprintf(GinkgoWriter, "Couldn't open log file: name=%q err=%s\n", clusterLog, err)
10591067
return
10601068
}
10611069
defer f.Close()
10621070

10631071
if err := os.WriteFile(f.Name(), clusterYAML, 0o600); err != nil {
1064-
fmt.Fprintf(GinkgoWriter, "couldn't write cluster yaml to file: name=%s file=%s err=%s", *cluster.Name, f.Name(), err)
1072+
fmt.Fprintf(GinkgoWriter, "Couldn't write cluster yaml to file: name=%q file=%q err=%s\n", *cluster.Name, f.Name(), err)
10651073
return
10661074
}
10671075
}

test/e2e/shared/aws_helpers.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func WaitForLoadBalancerToExistForService(input WaitForLoadBalancerToExistForSer
5454
Type: input.Type,
5555
})
5656
if err != nil {
57-
fmt.Fprintf(GinkgoWriter, "error getting loadbalancer arns: %v\n", err)
57+
fmt.Fprintf(GinkgoWriter, "Error getting loadbalancer arns: %v\n", err)
5858

5959
return false
6060
}
@@ -89,16 +89,16 @@ func GetLoadBalancerARNs(input GetLoadBalancerARNsInput) ([]string, error) {
8989

9090
descOutput, err := DescribeResourcesByTags(*descInput)
9191
if err != nil {
92-
fmt.Fprintf(GinkgoWriter, "error querying resources by tags: %v\n", err)
92+
fmt.Fprintf(GinkgoWriter, "Error querying resources by tags: %v\n", err)
9393
return nil, fmt.Errorf("describing resource tags: %w", err)
9494
}
9595

9696
matchingARNs := []string{}
9797
for _, resARN := range descOutput.ARNs {
9898
parsedArn, err := arn.Parse(resARN)
9999
if err != nil {
100-
fmt.Fprintf(GinkgoWriter, "error parsing arn %s: %v\n", resARN, err)
101-
return nil, fmt.Errorf("parsing resource arn %s: %w", resARN, err)
100+
fmt.Fprintf(GinkgoWriter, "Error parsing arn %q: %v\n", resARN, err)
101+
return nil, fmt.Errorf("parsing resource arn %q: %w", resARN, err)
102102
}
103103

104104
if parsedArn.Service != "elasticloadbalancing" {

test/e2e/shared/common.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ func DumpMachine(ctx context.Context, e2eCtx *E2EContext, machine infrav1.AWSMac
163163
machineLogBase := path.Join(logPath, "instances", machine.Namespace, machine.Name)
164164
metaLog := path.Join(machineLogBase, "instance.log")
165165
if err := os.MkdirAll(filepath.Dir(metaLog), 0750); err != nil {
166-
fmt.Fprintf(GinkgoWriter, "couldn't create directory for file: path=%s, err=%s", metaLog, err)
166+
fmt.Fprintf(GinkgoWriter, "Couldn't create directory for file: path=%q, err=%s\n", metaLog, err)
167167
}
168168
f, err := os.OpenFile(metaLog, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) //nolint:gosec
169169
if err != nil {

test/e2e/shared/identity.go

+4
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,10 @@ func CleanupStaticCredentials(ctx context.Context, e2eCtx *E2EContext) {
8888
}
8989

9090
By(fmt.Sprintf("Deleting AWSClusterStaticIdentity %s", idName))
91+
if e2eCtx.Environment.BootstrapClusterProxy == nil {
92+
Fail("Couldn't clean up static credentials: no bootstrap cluster proxy was set up (please look at previous errors; likely no bootstrap cluster could be created)")
93+
return
94+
}
9195
client := e2eCtx.Environment.BootstrapClusterProxy.GetClient()
9296
Eventually(func() error {
9397
return client.Delete(ctx, id)

0 commit comments

Comments
 (0)