From 0b63ce8c711ecb2f087154829075484b6ff159e6 Mon Sep 17 00:00:00 2001 From: Frank Hamand Date: Sat, 26 May 2018 09:34:15 +0100 Subject: [PATCH] Run helm tests in parallel with --parallel flag Signed-off-by: Frank Hamand --- pkg/releasetesting/test_suite.go | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/pkg/releasetesting/test_suite.go b/pkg/releasetesting/test_suite.go index e2182fa3c..f6324b711 100644 --- a/pkg/releasetesting/test_suite.go +++ b/pkg/releasetesting/test_suite.go @@ -69,17 +69,40 @@ func (ts *TestSuite) Run(env *Environment) error { env.streamMessage("No Tests Found", release.TestRun_UNKNOWN) } + var tests []*test + for _, testManifest := range ts.TestManifests { test, err := newTest(testManifest) if err != nil { return err } - if err := test.run(env); err != nil { - return err + tests = append(tests, test) + } + + if env.Parallel { + c := make(chan error) + for _, t := range tests { + go func(t *test) { + c <- t.run(env) + }(t) + } + + for range tests { + if err := <-c; err != nil { + return err + } } + } else { + for _, t := range tests { + if err := t.run(env); err != nil { + return err + } + } + } - ts.Results = append(ts.Results, test.result) + for _, t := range tests { + ts.Results = append(ts.Results, t.result) } ts.CompletedAt = timeconv.Now()