@@ -255,11 +255,11 @@ func printTestResult(name, status, errors string) {
255
255
logf (dashLine )
256
256
}
257
257
258
- func main () {
258
+ func run () error {
259
259
defer klog .Flush ()
260
260
initFlags ()
261
261
if err := flags .Parse (); err != nil {
262
- klog . Exitf ( "Flag parse failed: %v" , err )
262
+ return fmt . Errorf ( "flag parse failed: %v" , err )
263
263
}
264
264
265
265
// Start http server with pprof.
@@ -271,7 +271,7 @@ func main() {
271
271
272
272
newProvider , err := provider .NewProvider (& providerInitOptions )
273
273
if err != nil {
274
- klog . Exitf ( "Error init provider: %v" , err )
274
+ return fmt . Errorf ( "error init provider: %v" , err )
275
275
}
276
276
clusterLoaderConfig .ClusterConfig .Provider = newProvider
277
277
@@ -280,22 +280,22 @@ func main() {
280
280
}
281
281
282
282
if errList := validateFlags (); ! errList .IsEmpty () {
283
- klog . Exitf ( "Parsing flags error: %v" , errList .String ())
283
+ return fmt . Errorf ( "parsing flags error: %v" , errList .String ())
284
284
}
285
285
286
286
mclient , err := framework .NewMultiClientSet (clusterLoaderConfig .ClusterConfig .KubeConfigPath , 1 )
287
287
if err != nil {
288
- klog . Exitf ( "Client creation error: %v" , err )
288
+ return fmt . Errorf ( "client creation error: %v" , err )
289
289
}
290
290
291
291
if err = completeConfig (mclient ); err != nil {
292
- klog . Exitf ( "Config completing error: %v" , err )
292
+ return fmt . Errorf ( "config completing error: %v" , err )
293
293
}
294
294
295
295
klog .V (0 ).Infof ("Using config: %+v" , clusterLoaderConfig )
296
296
297
297
if err = createReportDir (); err != nil {
298
- klog . Exitf ( "Cannot create report directory: %v" , err )
298
+ return fmt . Errorf ( "cannot create report directory: %v" , err )
299
299
}
300
300
301
301
if err = util .LogClusterNodes (mclient .GetClient ()); err != nil {
@@ -304,7 +304,7 @@ func main() {
304
304
305
305
if ! clusterLoaderConfig .ClusterConfig .SkipClusterVerification {
306
306
if err = verifyCluster (mclient .GetClient ()); err != nil {
307
- klog . Exitf ( "Cluster verification error: %v" , err )
307
+ return fmt . Errorf ( "cluster verification error: %v" , err )
308
308
}
309
309
}
310
310
@@ -313,7 +313,7 @@ func main() {
313
313
clusterLoaderConfig .ClusterConfig .K8SClientsNumber ,
314
314
)
315
315
if err != nil {
316
- klog . Exitf ( "Framework creation error: %v" , err )
316
+ return fmt . Errorf ( "framework creation error: %v" , err )
317
317
}
318
318
319
319
var prometheusController * prometheus.Controller
@@ -323,23 +323,23 @@ func main() {
323
323
if ! dryRun {
324
324
if clusterLoaderConfig .PrometheusConfig .EnableServer {
325
325
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 )
327
327
}
328
328
prometheusFramework = prometheusController .GetFramework ()
329
329
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 )
331
331
}
332
332
if clusterLoaderConfig .PrometheusConfig .TearDownServer {
333
333
prometheusController .EnableTearDownPrometheusStackOnInterrupt ()
334
334
}
335
335
}
336
336
if clusterLoaderConfig .ExecServiceConfig .Enable {
337
337
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 )
339
339
}
340
340
}
341
341
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 )
343
343
}
344
344
345
345
if err := metadata .Dump (f , path .Join (clusterLoaderConfig .ReportDir , "cl2-metadata.json" )); err != nil {
@@ -349,11 +349,24 @@ func main() {
349
349
testReporter .BeginTestSuite ()
350
350
}
351
351
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
+
352
365
var testScenarios []api.TestScenario
353
366
if testSuiteConfigPath != "" {
354
367
testSuite , err := config .LoadTestSuite (testSuiteConfigPath )
355
368
if err != nil {
356
- klog . Exitf ( "Error while reading test suite: %v" , err )
369
+ return fmt . Errorf ( "error while reading test suite: %v" , err )
357
370
}
358
371
testScenarios = []api.TestScenario (testSuite )
359
372
} else {
@@ -370,7 +383,7 @@ func main() {
370
383
for i := range testScenarios {
371
384
ctx , errList := test .CreateTestContext (f , prometheusFramework , & clusterLoaderConfig , testReporter , & testScenarios [i ])
372
385
if ! errList .IsEmpty () {
373
- klog . Exitf ( "Test context creation failed: %s" , errList .String ())
386
+ return fmt . Errorf ( "test context creation failed: %s" , errList .String ())
374
387
}
375
388
testConfig , errList := test .CompileTestConfig (ctx )
376
389
// Dump test config before checking errors - it can still be useful for debugging.
@@ -380,15 +393,15 @@ func main() {
380
393
}
381
394
}
382
395
if ! errList .IsEmpty () {
383
- klog . Exitf ( "Test compilation failed: %s" , errList .String ())
396
+ return fmt . Errorf ( "test compilation failed: %s" , errList .String ())
384
397
}
385
398
ctx .SetTestConfig (testConfig )
386
399
contexts = append (contexts , ctx )
387
400
}
388
401
389
402
if dryRun {
390
403
// 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 ))
392
405
}
393
406
394
407
for i := range contexts {
@@ -400,19 +413,15 @@ func main() {
400
413
if err := prometheusController .MakePrometheusSnapshotIfEnabled (); err != nil {
401
414
klog .Errorf ("Error while making prometheus snapshot: %v" , err )
402
415
}
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
- }
414
416
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 )
416
425
}
417
426
}
418
427
0 commit comments