in testworkflow.go [1028:1072]
func runTestWorkflow(ctx context.Context, metrics *testMetrics, test *TestWorkflow) testResult {
metrics.started()
res := testResult{testWorkflow: test}
if test.skipped {
res.skipped = true
res.err = fmt.Errorf("test suite was skipped with message: %q", res.testWorkflow.SkippedMessage())
return res
}
clean := func() {
metrics.done()
log.Printf("cleaning up after test %s/%s (ID %s) in project %s, progress: %s\n", test.Name, test.Image.Name, test.wf.ID(), test.wf.Project, metrics.progress())
cleaned, errs := cleanTestWorkflow(test)
for _, err := range errs {
log.Printf("error cleaning test %s/%s: %v\n", test.Name, test.Image.Name, err)
}
if len(cleaned) > 0 {
log.Printf("test %s/%s had %d leftover resources\n", test.Name, test.Image.Name, len(cleaned))
}
for _, c := range cleaned {
log.Printf("deleted resource %s from test %s/%s", c, test.Name, test.Image.Name)
}
}
defer clean()
start := time.Now()
log.Printf("running test %s/%s (ID %s) in project %s, progress: %s\n", test.Name, test.Image.Name, test.wf.ID(), test.wf.Project, metrics.progress())
if err := test.wf.Run(ctx); err != nil {
res.err = err
return res
}
delta := formatTimeDelta("04m 05s", time.Now().Sub(start))
log.Printf("finished test %s/%s (ID %s) in project %s, time spent: %s\n", test.Name, test.Image.Name, test.wf.ID(), test.wf.Project, delta)
results, err := getTestResults(ctx, test)
if err != nil {
res.err = err
return res
}
res.results = results
res.workflowSuccess = true
return res
}