Skip to content

Commit 30ca688

Browse files
committed
Parallelize the admission tests
Signed-off-by: Todd Short <[email protected]>
1 parent 7c94479 commit 30ca688

File tree

1 file changed

+79
-48
lines changed

1 file changed

+79
-48
lines changed

internal/controllers/admission_test.go

+79-48
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package controllers_test
22

33
import (
44
"context"
5+
"sync"
56
"testing"
67

78
"github.com/stretchr/testify/require"
@@ -61,15 +62,21 @@ func TestOperatorSpecs(t *testing.T) {
6162
ctx, cancel := context.WithCancel(context.Background())
6263
defer cancel()
6364

65+
var wg sync.WaitGroup
66+
wg.Add(len(operatorData))
6467
for _, d := range operatorData {
65-
t.Logf("Running %s", d.comment)
66-
cl, err := newClient()
67-
require.NoError(t, err)
68-
require.NotNil(t, cl)
69-
err = cl.Create(ctx, d.spec)
70-
require.Error(t, err)
71-
require.ErrorContains(t, err, d.errMsg)
68+
go func(t *testing.T, d testData) {
69+
defer wg.Done()
70+
t.Logf("Running %s", d.comment)
71+
cl, err := newClient()
72+
require.NoError(t, err)
73+
require.NotNil(t, cl)
74+
err = cl.Create(ctx, d.spec)
75+
require.Error(t, err)
76+
require.ErrorContains(t, err, d.errMsg)
77+
}(t, d)
7278
}
79+
wg.Wait()
7380
}
7481

7582
func TestOperatorInvalidSemver(t *testing.T) {
@@ -97,18 +104,24 @@ func TestOperatorInvalidSemver(t *testing.T) {
97104
">1.2.3;<2.3.4",
98105
"1.2.3 - 2.3.4",
99106
}
100-
for _, invalidSemver := range invalidSemvers {
101-
cl, err := newClient()
102-
require.NoError(t, err)
103-
require.NotNil(t, cl)
104-
err = cl.Create(ctx, operator(operatorsv1alpha1.OperatorSpec{
105-
PackageName: "package",
106-
Version: invalidSemver,
107-
}))
108-
require.Errorf(t, err, "expected error for invalid semver %q", invalidSemver)
109-
// Don't need to include the whole regex, this should be enough to match the MasterMinds regex
110-
require.ErrorContains(t, err, "spec.version in body should match '^(\\s*(=||!=|>|<|>=|=>|<=|=<|~|~>|\\^)")
107+
var wg sync.WaitGroup
108+
wg.Add(len(invalidSemvers))
109+
for _, sm := range invalidSemvers {
110+
go func(t *testing.T, sm string) {
111+
defer wg.Done()
112+
cl, err := newClient()
113+
require.NoError(t, err)
114+
require.NotNil(t, cl)
115+
err = cl.Create(ctx, operator(operatorsv1alpha1.OperatorSpec{
116+
PackageName: "package",
117+
Version: sm,
118+
}))
119+
require.Errorf(t, err, "expected error for invalid semver %q", sm)
120+
// Don't need to include the whole regex, this should be enough to match the MasterMinds regex
121+
require.ErrorContains(t, err, "spec.version in body should match '^(\\s*(=||!=|>|<|>=|=>|<=|=<|~|~>|\\^)")
122+
}(t, sm)
111123
}
124+
wg.Wait()
112125
}
113126

114127
func TestOperatorValidSemver(t *testing.T) {
@@ -149,17 +162,23 @@ func TestOperatorValidSemver(t *testing.T) {
149162
"<1.2.3-abc >2.3.4-def",
150163
"<1.2.3-abc+def >2.3.4-ghi+jkl",
151164
}
152-
for _, validSemver := range validSemvers {
153-
op := operator(operatorsv1alpha1.OperatorSpec{
154-
PackageName: "package",
155-
Version: validSemver,
156-
})
157-
cl, err := newClient()
158-
require.NoError(t, err)
159-
require.NotNil(t, cl)
160-
err = cl.Create(ctx, op)
161-
require.NoErrorf(t, err, "unexpected error for semver range '%q': %w", validSemver, err)
165+
var wg sync.WaitGroup
166+
wg.Add(len(validSemvers))
167+
for _, sm := range validSemvers {
168+
go func(t *testing.T, sm string) {
169+
defer wg.Done()
170+
op := operator(operatorsv1alpha1.OperatorSpec{
171+
PackageName: "package",
172+
Version: sm,
173+
})
174+
cl, err := newClient()
175+
require.NoError(t, err)
176+
require.NotNil(t, cl)
177+
err = cl.Create(ctx, op)
178+
require.NoErrorf(t, err, "unexpected error for semver range '%q': %w", sm, err)
179+
}(t, sm)
162180
}
181+
wg.Wait()
163182
}
164183

165184
func TestOperatorInvalidChannel(t *testing.T) {
@@ -176,17 +195,23 @@ func TestOperatorInvalidChannel(t *testing.T) {
176195
".start-with-period",
177196
"end-with-period.",
178197
}
179-
for _, invalidChannel := range invalidChannels {
180-
cl, err := newClient()
181-
require.NoError(t, err)
182-
require.NotNil(t, cl)
183-
err = cl.Create(ctx, operator(operatorsv1alpha1.OperatorSpec{
184-
PackageName: "package",
185-
Channel: invalidChannel,
186-
}))
187-
require.Errorf(t, err, "expected error for invalid channel '%q'", invalidChannel)
188-
require.ErrorContains(t, err, "spec.channel in body should match '^[a-z0-9]+([\\.-][a-z0-9]+)*$'")
198+
var wg sync.WaitGroup
199+
wg.Add(len(invalidChannels))
200+
for _, ch := range invalidChannels {
201+
go func(t *testing.T, ch string) {
202+
defer wg.Done()
203+
cl, err := newClient()
204+
require.NoError(t, err)
205+
require.NotNil(t, cl)
206+
err = cl.Create(ctx, operator(operatorsv1alpha1.OperatorSpec{
207+
PackageName: "package",
208+
Channel: ch,
209+
}))
210+
require.Errorf(t, err, "expected error for invalid channel '%q'", ch)
211+
require.ErrorContains(t, err, "spec.channel in body should match '^[a-z0-9]+([\\.-][a-z0-9]+)*$'")
212+
}(t, ch)
189213
}
214+
wg.Wait()
190215
}
191216

192217
func TestOperatorValidChannel(t *testing.T) {
@@ -198,15 +223,21 @@ func TestOperatorValidChannel(t *testing.T) {
198223
"dotted.name",
199224
"channel-has-version-1.0.1",
200225
}
201-
for _, validChannel := range validChannels {
202-
op := operator(operatorsv1alpha1.OperatorSpec{
203-
PackageName: "package",
204-
Channel: validChannel,
205-
})
206-
cl, err := newClient()
207-
require.NoError(t, err)
208-
require.NotNil(t, cl)
209-
err = cl.Create(ctx, op)
210-
require.NoErrorf(t, err, "unexpected error creating valid channel '%q': %w", validChannel, err)
226+
var wg sync.WaitGroup
227+
wg.Add(len(validChannels))
228+
for _, ch := range validChannels {
229+
go func(t *testing.T, ch string) {
230+
defer wg.Done()
231+
op := operator(operatorsv1alpha1.OperatorSpec{
232+
PackageName: "package",
233+
Channel: ch,
234+
})
235+
cl, err := newClient()
236+
require.NoError(t, err)
237+
require.NotNil(t, cl)
238+
err = cl.Create(ctx, op)
239+
require.NoErrorf(t, err, "unexpected error creating valid channel '%q': %w", ch, err)
240+
}(t, ch)
211241
}
242+
wg.Wait()
212243
}

0 commit comments

Comments
 (0)