Skip to content

Commit 15c49cc

Browse files
author
ali abbasi
committed
Tear down CL2 also on test config compilation failures
1 parent 61aa395 commit 15c49cc

File tree

1 file changed

+38
-29
lines changed

1 file changed

+38
-29
lines changed

clusterloader2/cmd/clusterloader.go

+38-29
Original file line numberDiff line numberDiff line change
@@ -255,11 +255,11 @@ func printTestResult(name, status, errors string) {
255255
logf(dashLine)
256256
}
257257

258-
func main() {
258+
func run() error {
259259
defer klog.Flush()
260260
initFlags()
261261
if err := flags.Parse(); err != nil {
262-
klog.Exitf("Flag parse failed: %v", err)
262+
return fmt.Errorf("flag parse failed: %v", err)
263263
}
264264

265265
// Start http server with pprof.
@@ -271,7 +271,7 @@ func main() {
271271

272272
newProvider, err := provider.NewProvider(&providerInitOptions)
273273
if err != nil {
274-
klog.Exitf("Error init provider: %v", err)
274+
return fmt.Errorf("error init provider: %v", err)
275275
}
276276
clusterLoaderConfig.ClusterConfig.Provider = newProvider
277277

@@ -280,22 +280,22 @@ func main() {
280280
}
281281

282282
if errList := validateFlags(); !errList.IsEmpty() {
283-
klog.Exitf("Parsing flags error: %v", errList.String())
283+
return fmt.Errorf("parsing flags error: %v", errList.String())
284284
}
285285

286286
mclient, err := framework.NewMultiClientSet(clusterLoaderConfig.ClusterConfig.KubeConfigPath, 1)
287287
if err != nil {
288-
klog.Exitf("Client creation error: %v", err)
288+
return fmt.Errorf("client creation error: %v", err)
289289
}
290290

291291
if err = completeConfig(mclient); err != nil {
292-
klog.Exitf("Config completing error: %v", err)
292+
return fmt.Errorf("config completing error: %v", err)
293293
}
294294

295295
klog.V(0).Infof("Using config: %+v", clusterLoaderConfig)
296296

297297
if err = createReportDir(); err != nil {
298-
klog.Exitf("Cannot create report directory: %v", err)
298+
return fmt.Errorf("cannot create report directory: %v", err)
299299
}
300300

301301
if err = util.LogClusterNodes(mclient.GetClient()); err != nil {
@@ -304,7 +304,7 @@ func main() {
304304

305305
if !clusterLoaderConfig.ClusterConfig.SkipClusterVerification {
306306
if err = verifyCluster(mclient.GetClient()); err != nil {
307-
klog.Exitf("Cluster verification error: %v", err)
307+
return fmt.Errorf("cluster verification error: %v", err)
308308
}
309309
}
310310

@@ -313,7 +313,7 @@ func main() {
313313
clusterLoaderConfig.ClusterConfig.K8SClientsNumber,
314314
)
315315
if err != nil {
316-
klog.Exitf("Framework creation error: %v", err)
316+
return fmt.Errorf("framework creation error: %v", err)
317317
}
318318

319319
var prometheusController *prometheus.Controller
@@ -323,23 +323,23 @@ func main() {
323323
if !dryRun {
324324
if clusterLoaderConfig.PrometheusConfig.EnableServer {
325325
if prometheusController, err = prometheus.NewController(&clusterLoaderConfig); err != nil {
326-
klog.Exitf("Error while creating Prometheus Controller: %v", err)
326+
return fmt.Errorf("error while creating Prometheus Controller: %v", err)
327327
}
328328
prometheusFramework = prometheusController.GetFramework()
329329
if err := prometheusController.SetUpPrometheusStack(); err != nil {
330-
klog.Exitf("Error while setting up prometheus stack: %v", err)
330+
return fmt.Errorf("error while setting up prometheus stack: %v", err)
331331
}
332332
if clusterLoaderConfig.PrometheusConfig.TearDownServer {
333333
prometheusController.EnableTearDownPrometheusStackOnInterrupt()
334334
}
335335
}
336336
if clusterLoaderConfig.ExecServiceConfig.Enable {
337337
if err := execservice.SetUpExecService(f, clusterLoaderConfig.ExecServiceConfig); err != nil {
338-
klog.Exitf("Error while setting up exec service: %v", err)
338+
return fmt.Errorf("error while setting up exec service: %v", err)
339339
}
340340
}
341341
if err := imagepreload.Setup(&clusterLoaderConfig, f); err != nil {
342-
klog.Exitf("Error while preloading images: %v", err)
342+
return fmt.Errorf("error while preloading images: %v", err)
343343
}
344344

345345
if err := metadata.Dump(f, path.Join(clusterLoaderConfig.ReportDir, "cl2-metadata.json")); err != nil {
@@ -349,11 +349,24 @@ func main() {
349349
testReporter.BeginTestSuite()
350350
}
351351

352+
defer func() {
353+
if clusterLoaderConfig.PrometheusConfig.EnableServer && clusterLoaderConfig.PrometheusConfig.TearDownServer {
354+
if err := prometheusController.TearDownPrometheusStack(); err != nil {
355+
klog.Errorf("Error while tearing down prometheus stack: %v", err)
356+
}
357+
}
358+
if clusterLoaderConfig.ExecServiceConfig.Enable {
359+
if err := execservice.TearDownExecService(f); err != nil {
360+
klog.Errorf("Error while tearing down exec service: %v", err)
361+
}
362+
}
363+
}()
364+
352365
var testScenarios []api.TestScenario
353366
if testSuiteConfigPath != "" {
354367
testSuite, err := config.LoadTestSuite(testSuiteConfigPath)
355368
if err != nil {
356-
klog.Exitf("Error while reading test suite: %v", err)
369+
return fmt.Errorf("error while reading test suite: %v", err)
357370
}
358371
testScenarios = []api.TestScenario(testSuite)
359372
} else {
@@ -370,7 +383,7 @@ func main() {
370383
for i := range testScenarios {
371384
ctx, errList := test.CreateTestContext(f, prometheusFramework, &clusterLoaderConfig, testReporter, &testScenarios[i])
372385
if !errList.IsEmpty() {
373-
klog.Exitf("Test context creation failed: %s", errList.String())
386+
return fmt.Errorf("test context creation failed: %s", errList.String())
374387
}
375388
testConfig, errList := test.CompileTestConfig(ctx)
376389
// Dump test config before checking errors - it can still be useful for debugging.
@@ -380,15 +393,15 @@ func main() {
380393
}
381394
}
382395
if !errList.IsEmpty() {
383-
klog.Exitf("Test compilation failed: %s", errList.String())
396+
return fmt.Errorf("test compilation failed: %s", errList.String())
384397
}
385398
ctx.SetTestConfig(testConfig)
386399
contexts = append(contexts, ctx)
387400
}
388401

389402
if dryRun {
390403
// Dry run always exits with error so if it's ever enabled in CI, the test will fail.
391-
klog.Exitf("Dry run mode enabled, exiting after dumping test config in %s.", path.Join(clusterLoaderConfig.ReportDir))
404+
return fmt.Errorf("dry run mode enabled, exiting after dumping test config in %s", path.Join(clusterLoaderConfig.ReportDir))
392405
}
393406

394407
for i := range contexts {
@@ -400,19 +413,15 @@ func main() {
400413
if err := prometheusController.MakePrometheusSnapshotIfEnabled(); err != nil {
401414
klog.Errorf("Error while making prometheus snapshot: %v", err)
402415
}
403-
404-
if clusterLoaderConfig.PrometheusConfig.EnableServer && clusterLoaderConfig.PrometheusConfig.TearDownServer {
405-
if err := prometheusController.TearDownPrometheusStack(); err != nil {
406-
klog.Errorf("Error while tearing down prometheus stack: %v", err)
407-
}
408-
}
409-
if clusterLoaderConfig.ExecServiceConfig.Enable {
410-
if err := execservice.TearDownExecService(f); err != nil {
411-
klog.Errorf("Error while tearing down exec service: %v", err)
412-
}
413-
}
414416
if failedTestItems := testReporter.GetNumberOfFailedTestItems(); failedTestItems > 0 {
415-
klog.Exitf("%d tests have failed!", failedTestItems)
417+
return fmt.Errorf("%d tests have failed", failedTestItems)
418+
}
419+
return nil
420+
}
421+
422+
func main() {
423+
if err := run(); err != nil {
424+
klog.Exitf("Error while running the loader: %v", err)
416425
}
417426
}
418427

0 commit comments

Comments
 (0)