Skip to content

Commit 725d259

Browse files
committed
fix: race condition
1 parent 850802e commit 725d259

File tree

1 file changed

+18
-63
lines changed

1 file changed

+18
-63
lines changed

cmd/pkg/cli/start_test.go

Lines changed: 18 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import (
55
"context"
66
"encoding/json"
77
"fmt"
8-
"strings"
98
"testing"
109
"time"
1110

@@ -41,43 +40,6 @@ func TestStartCommand_Execute(t *testing.T) {
4140
s.AddKnownType(kind, &spec.Meta{})
4241
s.AddCodec(kind, codec)
4342

44-
t.Run(flagDebug, func(t *testing.T) {
45-
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
46-
defer cancel()
47-
48-
output := new(bytes.Buffer)
49-
50-
cmd := NewStartCommand(StartConfig{
51-
Scheme: s,
52-
Hook: h,
53-
FS: fs,
54-
ChartStore: chartStore,
55-
SpecStore: specStore,
56-
SecretStore: secretStore,
57-
})
58-
cmd.SetOut(output)
59-
cmd.SetErr(output)
60-
cmd.SetContext(ctx)
61-
62-
cmd.SetArgs([]string{fmt.Sprintf("--%s", flagDebug)})
63-
64-
go func() {
65-
_ = cmd.Execute()
66-
}()
67-
68-
for {
69-
select {
70-
case <-ctx.Done():
71-
assert.Fail(t, ctx.Err().Error())
72-
return
73-
default:
74-
if strings.Contains(output.String(), "debug") {
75-
return
76-
}
77-
}
78-
}
79-
})
80-
8143
t.Run(flagFromCharts, func(t *testing.T) {
8244
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
8345
defer cancel()
@@ -111,20 +73,17 @@ func TestStartCommand_Execute(t *testing.T) {
11173

11274
cmd.SetArgs([]string{fmt.Sprintf("--%s", flagFromCharts), filename})
11375

76+
chartStream, _ := chartStore.Watch(ctx)
77+
defer chartStream.Close()
78+
11479
go func() {
11580
_ = cmd.Execute()
11681
}()
11782

118-
for {
119-
select {
120-
case <-ctx.Done():
121-
assert.Fail(t, ctx.Err().Error())
122-
return
123-
default:
124-
if r, _ := chartStore.Load(ctx, chrt); len(r) > 0 {
125-
return
126-
}
127-
}
83+
select {
84+
case <-chartStream.Next():
85+
case <-ctx.Done():
86+
assert.Fail(t, ctx.Err().Error())
12887
}
12988
})
13089

@@ -161,20 +120,17 @@ func TestStartCommand_Execute(t *testing.T) {
161120

162121
cmd.SetArgs([]string{fmt.Sprintf("--%s", flagFromNodes), filename})
163122

123+
specStream, _ := specStore.Watch(ctx)
124+
defer specStream.Close()
125+
164126
go func() {
165127
_ = cmd.Execute()
166128
}()
167129

168-
for {
169-
select {
170-
case <-ctx.Done():
171-
assert.Fail(t, ctx.Err().Error())
172-
return
173-
default:
174-
if r, _ := specStore.Load(ctx, meta); len(r) > 0 {
175-
return
176-
}
177-
}
130+
select {
131+
case <-specStream.Next():
132+
case <-ctx.Done():
133+
assert.Fail(t, ctx.Err().Error())
178134
}
179135
})
180136

@@ -211,18 +167,17 @@ func TestStartCommand_Execute(t *testing.T) {
211167

212168
cmd.SetArgs([]string{fmt.Sprintf("--%s", flagFromSecrets), filename})
213169

170+
secretStream, _ := secretStore.Watch(ctx)
171+
defer secretStream.Close()
172+
214173
go func() {
215174
_ = cmd.Execute()
216175
}()
217176

218177
select {
178+
case <-secretStream.Next():
219179
case <-ctx.Done():
220180
assert.Fail(t, ctx.Err().Error())
221-
return
222-
default:
223-
if r, _ := secretStore.Load(ctx, scrt); len(r) > 0 {
224-
return
225-
}
226181
}
227182
})
228183
}

0 commit comments

Comments
 (0)