Skip to content

Commit 8b08c8c

Browse files
committed
Add NFR tests logging
1 parent a95b8ff commit 8b08c8c

File tree

11 files changed

+161
-33
lines changed

11 files changed

+161
-33
lines changed

tests/framework/generate_manifests.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,11 @@ func decodeObjects(reader io.Reader) ([]client.Object, error) {
151151
}
152152

153153
// GenerateScaleListenerObjects generates objects for a given number of listeners for the scale test.
154-
func GenerateScaleListenerObjects(numListeners int, tls bool) (ScaleObjects, error) {
154+
func GenerateScaleListenerObjects(
155+
numListeners int,
156+
tls bool,
157+
opts ...Option,
158+
) (ScaleObjects, error) {
155159
var result ScaleObjects
156160

157161
listeners := make([]listener, 0)
@@ -184,7 +188,13 @@ func GenerateScaleListenerObjects(numListeners int, tls bool) (ScaleObjects, err
184188

185189
backends = append(backends, backendName)
186190

187-
GinkgoWriter.Printf("Generating manifests for listeners %v and route %v\n", listeners, r)
191+
options := &Options{logEnabled: true}
192+
for _, opt := range opts {
193+
opt(options)
194+
}
195+
if !options.logEnabled {
196+
GinkgoWriter.Printf("Generating manifests for listeners %v and route %v\n", listeners, r)
197+
}
188198
objects, err := generateManifests(listeners, []route{r})
189199
if err != nil {
190200
GinkgoWriter.Printf("Error generating manifests: %v\n", err)

tests/framework/info.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,12 +99,12 @@ func GetBuildInfo() (commitHash string, commitTime string, dirtyBuild string) {
9999
}
100100

101101
// AddNginxLogsAndEventsToReport adds nginx logs and events from the namespace to the report if the spec failed.
102-
func AddNginxLogsAndEventsToReport(rm ResourceManager, namespace string) {
102+
func AddNginxLogsAndEventsToReport(rm ResourceManager, namespace string, opts ...Option) {
103103
if CurrentSpecReport().Failed() {
104104
GinkgoWriter.Printf("Current spec failed. Adding Nginx logs and events to report for namespace %q\n", namespace)
105105
var returnLogs string
106106

107-
nginxPodNames, _ := GetReadyNginxPodNames(rm.K8sClient, namespace, rm.TimeoutConfig.GetStatusTimeout)
107+
nginxPodNames, _ := GetReadyNginxPodNames(rm.K8sClient, namespace, rm.TimeoutConfig.GetStatusTimeout, opts...)
108108

109109
for _, nginxPodName := range nginxPodNames {
110110
returnLogs += fmt.Sprintf("Logs for Nginx Pod %s:\n", nginxPodName)

tests/framework/prometheus.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -471,22 +471,31 @@ func CreateMetricExistChecker(
471471
query string,
472472
getTime func() time.Time,
473473
modifyTime func(),
474+
opts ...Option,
474475
) func() error {
475476
return func() error {
476477
queryWithTimestamp := fmt.Sprintf("%s @ %d", query, getTime().Unix())
478+
options := &Options{logEnabled: true}
479+
for _, opt := range opts {
480+
opt(options)
481+
}
477482

478483
result, err := promInstance.Query(queryWithTimestamp)
479484
if err != nil {
480485
queryErr := fmt.Errorf("failed to query Prometheus: %w", err)
481-
GinkgoWriter.Printf("ERROR during creating metric existence checker: %v\n", queryErr)
486+
if options.logEnabled {
487+
GinkgoWriter.Printf("ERROR during creating metric existence checker: %v\n", queryErr)
488+
}
482489

483490
return queryErr
484491
}
485492

486493
if result.String() == "" {
487494
modifyTime()
488495
emptyResultErr := errors.New("empty result")
489-
GinkgoWriter.Printf("ERROR during creating metric existence checker: %v\n", emptyResultErr)
496+
if options.logEnabled {
497+
GinkgoWriter.Printf("ERROR during creating metric existence checker: %v\n", emptyResultErr)
498+
}
490499

491500
return emptyResultErr
492501
}

tests/framework/request.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,11 +170,28 @@ func K8sGet(
170170
return err
171171
}
172172

173-
func K8sList(ctx context.Context, client k8sClient.Client, list k8sClient.ObjectList) error {
173+
func K8sList(
174+
ctx context.Context,
175+
client k8sClient.Client,
176+
list k8sClient.ObjectList,
177+
) error {
174178
err := client.List(ctx, list)
175179
if err != nil {
176180
return fmt.Errorf("ERROR listing resource %q: %w", list.GetObjectKind(), err)
177181
}
178182

179183
return err
180184
}
185+
186+
func K8sCreate(
187+
ctx context.Context,
188+
client k8sClient.Client,
189+
obj k8sClient.Object,
190+
) error {
191+
err := client.Create(ctx, obj)
192+
if err != nil {
193+
return fmt.Errorf("ERROR creating resource %q: %w", obj.GetName(), err)
194+
}
195+
196+
return err
197+
}

tests/framework/resourcemanager.go

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -553,6 +553,7 @@ func (rm *ResourceManager) WaitForPodsToBeReady(ctx context.Context, namespace s
553553
}
554554
}
555555
}
556+
GinkgoWriter.Printf("Pods ready: %d out of %d in namespace %q\n", podsReady, len(podList.Items), namespace)
556557

557558
return podsReady == len(podList.Items), nil
558559
},
@@ -1145,17 +1146,24 @@ func GetReadyNginxPodNames(
11451146
return len(nginxPodNames) > 0, nil
11461147
},
11471148
)
1149+
options := &Options{logEnabled: true}
1150+
for _, opt := range opts {
1151+
opt(options)
1152+
}
1153+
11481154
if err != nil {
11491155
waitingPodsErr := fmt.Errorf("timed out waiting for NGINX Pods to be ready: %w", err)
1150-
GinkgoWriter.Printf("ERROR occurred during waiting for NGINX Pods to be ready in namespace %q, error: %s\n",
1151-
namespace,
1152-
waitingPodsErr,
1153-
)
1156+
if options.logEnabled {
1157+
GinkgoWriter.Printf("ERROR occurred during waiting for NGINX Pods to be ready in namespace %q, error: %s\n",
1158+
namespace,
1159+
waitingPodsErr,
1160+
)
1161+
}
11541162

11551163
return nil, waitingPodsErr
11561164
}
11571165
GinkgoWriter.Printf(
1158-
"Successfully found ready NGINX Pod names in namespace %q: %v\n",
1166+
"Successfully found ready NGINX Pod name(s) in namespace %q: %v\n",
11591167
namespace,
11601168
nginxPodNames,
11611169
)
@@ -1263,8 +1271,18 @@ func (rm *ResourceManager) WaitForGatewayObservedGeneration(
12631271

12641272
// GetNginxConfig uses crossplane to get the nginx configuration and convert it to JSON.
12651273
// If the crossplane image is loaded locally on the node, crossplaneImageRepo can be empty.
1266-
func (rm *ResourceManager) GetNginxConfig(nginxPodName, namespace, crossplaneImageRepo string) (*Payload, error) {
1274+
func (rm *ResourceManager) GetNginxConfig(
1275+
nginxPodName,
1276+
namespace,
1277+
crossplaneImageRepo string,
1278+
opts ...Option,
1279+
) (*Payload, error) {
12671280
GinkgoWriter.Printf("Getting NGINX config from pod %q in namespace %q\n", nginxPodName, namespace)
1281+
options := &Options{logEnabled: true}
1282+
for _, opt := range opts {
1283+
opt(options)
1284+
}
1285+
12681286
if err := injectCrossplaneContainer(
12691287
rm.ClientGoClient,
12701288
rm.TimeoutConfig.UpdateTimeout,
@@ -1310,10 +1328,12 @@ func (rm *ResourceManager) GetNginxConfig(nginxPodName, namespace, crossplaneIma
13101328
},
13111329
); err != nil {
13121330
containerErr := fmt.Errorf("could not connect to ephemeral container: %w", err)
1313-
GinkgoWriter.Printf("ERROR occurred during waiting for NGINX Pods to be ready in namespace %q, error: %s\n",
1314-
namespace,
1315-
containerErr,
1316-
)
1331+
if options.logEnabled {
1332+
GinkgoWriter.Printf("ERROR occurred during waiting for NGINX Pods to be ready in namespace %q, error: %s\n",
1333+
namespace,
1334+
containerErr,
1335+
)
1336+
}
13171337

13181338
return nil, containerErr
13191339
}

tests/framework/results.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ func CreateResultsFile(filename string) (*os.File, error) {
3030
GinkgoWriter.Printf("Creating results file %q\n", filename)
3131
outFile, err := OpenFile(filename, os.O_TRUNC|os.O_WRONLY|os.O_CREATE, 0o644)
3232
if err != nil {
33+
GinkgoWriter.Printf("ERROR occurred during creating results file %q, error: %s\n", filename, err)
34+
3335
return nil, err
3436
}
3537

@@ -61,10 +63,14 @@ func WriteSystemInfoToFile(file *os.File, ci ClusterInfo, plus bool) error {
6163
plus, commit, date, dirty, clusterType, ci.NodeCount, ci.K8sVersion, ci.CPUCountPerNode, ci.MemoryPerNode, ci.MaxPodsPerNode,
6264
)
6365
if _, err := fmt.Fprint(file, text); err != nil {
66+
GinkgoWriter.Printf("ERROR occurred during writing system info to results file, error: %s\n", err)
67+
6468
return err
6569
}
6670
if ci.IsGKE {
6771
if _, err := fmt.Fprintf(file, "- Zone: %s\n- Instance Type: %s\n", ci.GkeZone, ci.GkeInstanceType); err != nil {
72+
GinkgoWriter.Printf("ERROR occurred during writing GKE info to results file, error: %s\n", err)
73+
6874
return err
6975
}
7076
}
@@ -246,12 +252,16 @@ func NewCSVResultsWriter(resultsDir, fileName string, resultHeaders ...string) (
246252

247253
file, err := OpenFile(filepath.Join(resultsDir, fileName), os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0o644)
248254
if err != nil {
255+
GinkgoWriter.Printf("ERROR occurred during creating CSV results file %q, error: %s\n", fileName, err)
256+
249257
return nil, nil, err
250258
}
251259

252260
writer := csv.NewWriter(file)
253261

254262
if err = WriteCSVRecord(writer, resultHeaders); err != nil {
263+
GinkgoWriter.Printf("ERROR occurred during writing CSV headers to file %q, error: %s\n", fileName, err)
264+
255265
return nil, nil, err
256266
}
257267

tests/suite/dataplane_perf_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,12 @@ var _ = Describe("Dataplane performance", Ordered, Label("nfr", "performance"),
6666
Expect(resourceManager.ApplyFromFiles(files, ns.Name)).To(Succeed())
6767
Expect(resourceManager.WaitForAppsToBeReady(ns.Name)).To(Succeed())
6868

69-
nginxPodNames, err := framework.GetReadyNginxPodNames(k8sClient, namespace, timeoutConfig.GetTimeout)
69+
nginxPodNames, err := framework.GetReadyNginxPodNames(
70+
k8sClient,
71+
namespace,
72+
timeoutConfig.GetTimeout,
73+
framework.WithLoggingDisabled(),
74+
)
7075
Expect(err).ToNot(HaveOccurred())
7176
Expect(nginxPodNames).To(HaveLen(1))
7277

@@ -88,7 +93,7 @@ var _ = Describe("Dataplane performance", Ordered, Label("nfr", "performance"),
8893
})
8994

9095
AfterAll(func() {
91-
framework.AddNginxLogsAndEventsToReport(resourceManager, namespace)
96+
framework.AddNginxLogsAndEventsToReport(resourceManager, namespace, framework.WithLoggingDisabled())
9297
cleanUpPortForward()
9398

9499
Expect(resourceManager.DeleteFromFiles(files, namespace)).To(Succeed())

tests/suite/longevity_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ var _ = Describe("Longevity", Label("longevity-setup", "longevity-teardown"), fu
8282
Expect(writeTrafficResults(resultsFile, homeDir, "coffee.txt", "HTTP")).To(Succeed())
8383
Expect(writeTrafficResults(resultsFile, homeDir, "tea.txt", "HTTPS")).To(Succeed())
8484

85-
framework.AddNginxLogsAndEventsToReport(resourceManager, ns.Name)
85+
framework.AddNginxLogsAndEventsToReport(resourceManager, ns.Name, framework.WithLoggingDisabled())
8686
Expect(resourceManager.DeleteFromFiles(files, ns.Name)).To(Succeed())
8787
Expect(resourceManager.DeleteNamespace(ns.Name)).To(Succeed())
8888
})

tests/suite/reconfig_test.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import (
2424
)
2525

2626
// Cluster node size must be greater than or equal to 4 for test to perform correctly.
27-
var _ = Describe("Reconfiguration Performance Testing", Ordered, Label("tina", "nfr", "reconfiguration"), func() {
27+
var _ = Describe("Reconfiguration Performance Testing", Ordered, Label("nfr", "reconfiguration"), func() {
2828
const (
2929
// used for cleaning up resources
3030
maxResourceCount = 150
@@ -136,7 +136,7 @@ var _ = Describe("Reconfiguration Performance Testing", Ordered, Label("tina", "
136136
Name: "namespace" + strconv.Itoa(i),
137137
},
138138
}
139-
Expect(k8sClient.Create(ctx, &ns)).To(Succeed())
139+
Expect(framework.K8sCreate(ctx, k8sClient, &ns)).To(Succeed())
140140
}
141141

142142
Expect(resourceManager.Apply([]client.Object{&reconfigNamespace})).To(Succeed())
@@ -246,6 +246,7 @@ var _ = Describe("Reconfiguration Performance Testing", Ordered, Label("tina", "
246246
if stringTimeToReadyTotal == "0" {
247247
stringTimeToReadyTotal = "< 1"
248248
}
249+
GinkgoWriter.Printf("Calculated time to ready total for %q: %s\n", nginxPodName, stringTimeToReadyTotal)
249250

250251
return stringTimeToReadyTotal
251252
}
@@ -351,6 +352,7 @@ var _ = Describe("Reconfiguration Performance Testing", Ordered, Label("tina", "
351352
k8sClient,
352353
reconfigNamespace.Name,
353354
timeoutConfig.GetStatusTimeout,
355+
framework.WithLoggingDisabled(),
354356
)
355357
return len(nginxPodNames) == 1 && err == nil
356358
}).
@@ -416,6 +418,7 @@ var _ = Describe("Reconfiguration Performance Testing", Ordered, Label("tina", "
416418
k8sClient,
417419
reconfigNamespace.Name,
418420
timeoutConfig.GetStatusTimeout,
421+
framework.WithLoggingDisabled(),
419422
)
420423
return len(nginxPodNames) == 1 && err == nil
421424
}).
@@ -469,7 +472,11 @@ var _ = Describe("Reconfiguration Performance Testing", Ordered, Label("tina", "
469472
})
470473

471474
AfterEach(func() {
472-
framework.AddNginxLogsAndEventsToReport(resourceManager, reconfigNamespace.Name)
475+
framework.AddNginxLogsAndEventsToReport(
476+
resourceManager,
477+
reconfigNamespace.Name,
478+
framework.WithLoggingDisabled(),
479+
)
473480

474481
Expect(cleanupResources()).Should(Succeed())
475482
teardown(releaseName)

0 commit comments

Comments
 (0)