Skip to content

Commit f8402b2

Browse files
author
Brian Mendoza
committed
abstract channel from events
1 parent 10fb8d7 commit f8402b2

File tree

4 files changed

+50
-23
lines changed

4 files changed

+50
-23
lines changed

controller/linodeobjectstoragebucket_controller_test.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -184,9 +184,9 @@ var _ = Describe("lifecycle", Ordered, Label("bucket", "lifecycle"), func() {
184184
Expect(key.StringData.AccessKeyRO).To(Equal("access-key-1"))
185185
Expect(key.StringData.SecretKeyRO).To(Equal("secret-key-1"))
186186

187-
Expect(<-mck.Events()).To(ContainSubstring("Object storage keys assigned"))
188-
Expect(<-mck.Events()).To(ContainSubstring("Object storage keys stored in secret"))
189-
Expect(<-mck.Events()).To(ContainSubstring("Object storage bucket synced"))
187+
Expect(mck.Events()).To(ContainSubstring("Object storage keys assigned"))
188+
Expect(mck.Events()).To(ContainSubstring("Object storage keys stored in secret"))
189+
Expect(mck.Events()).To(ContainSubstring("Object storage bucket synced"))
190190

191191
logOutput := mck.Logs()
192192
Expect(logOutput).To(ContainSubstring("Reconciling apply"))
@@ -252,7 +252,7 @@ var _ = Describe("lifecycle", Ordered, Label("bucket", "lifecycle"), func() {
252252
Expect(k8sClient.Get(ctx, objectKey, &obj)).To(Succeed())
253253
Expect(*obj.Status.LastKeyGeneration).To(Equal(1))
254254

255-
Expect(<-mck.Events()).To(ContainSubstring("Object storage keys assigned"))
255+
Expect(mck.Events()).To(ContainSubstring("Object storage keys assigned"))
256256

257257
logOutput := mck.Logs()
258258
Expect(logOutput).To(ContainSubstring("Reconciling apply"))
@@ -308,9 +308,9 @@ var _ = Describe("lifecycle", Ordered, Label("bucket", "lifecycle"), func() {
308308
Expect(key.StringData.AccessKeyRO).To(Equal("access-key-3"))
309309
Expect(key.StringData.SecretKeyRO).To(Equal("secret-key-3"))
310310

311-
Expect(<-mck.Events()).To(ContainSubstring("Object storage keys retrieved"))
312-
Expect(<-mck.Events()).To(ContainSubstring("Object storage keys stored in secret"))
313-
Expect(<-mck.Events()).To(ContainSubstring("Object storage bucket synced"))
311+
Expect(mck.Events()).To(ContainSubstring("Object storage keys retrieved"))
312+
Expect(mck.Events()).To(ContainSubstring("Object storage keys stored in secret"))
313+
Expect(mck.Events()).To(ContainSubstring("Object storage bucket synced"))
314314

315315
logOutput := mck.Logs()
316316
Expect(logOutput).To(ContainSubstring("Reconciling apply"))
@@ -348,7 +348,7 @@ var _ = Describe("lifecycle", Ordered, Label("bucket", "lifecycle"), func() {
348348
Expect(err).NotTo(HaveOccurred())
349349
Expect(apierrors.IsNotFound(k8sClient.Get(ctx, objectKey, &obj))).To(BeTrue())
350350

351-
Expect(<-mck.Events()).To(ContainSubstring("Object storage keys revoked"))
351+
Expect(mck.Events()).To(ContainSubstring("Object storage keys revoked"))
352352

353353
logOutput := mck.Logs()
354354
Expect(logOutput).To(ContainSubstring("Reconciling delete"))
@@ -456,7 +456,7 @@ var _ = Describe("errors", Label("bucket", "errors"), func() {
456456
bScope.Client = mck.K8sClient
457457
err := reconciler.reconcileApply(ctx, &bScope)
458458
Expect(err.Error()).To(ContainSubstring("api error"))
459-
Expect(<-mck.Events()).To(ContainSubstring("api error"))
459+
Expect(mck.Events()).To(ContainSubstring("api error"))
460460
Expect(mck.Logs()).To(ContainSubstring("Failed to ensure access key secret exists"))
461461
}),
462462
),
@@ -485,8 +485,8 @@ var _ = Describe("errors", Label("bucket", "errors"), func() {
485485
bScope.Client = mck.K8sClient
486486
err := reconciler.reconcileApply(ctx, &bScope)
487487
Expect(err.Error()).To(ContainSubstring("secret creation error"))
488-
Expect(<-mck.Events()).To(ContainSubstring("keys retrieved"))
489-
Expect(<-mck.Events()).To(ContainSubstring("secret creation error"))
488+
Expect(mck.Events()).To(ContainSubstring("keys retrieved"))
489+
Expect(mck.Events()).To(ContainSubstring("secret creation error"))
490490
Expect(mck.Logs()).To(ContainSubstring("Failed to apply key secret"))
491491
}),
492492
),
@@ -504,8 +504,8 @@ var _ = Describe("errors", Label("bucket", "errors"), func() {
504504
bScope.Client = mck.K8sClient
505505
err := reconciler.reconcileApply(ctx, &bScope)
506506
Expect(err.Error()).To(ContainSubstring("no kind is registered"))
507-
Expect(<-mck.Events()).To(ContainSubstring("keys retrieved"))
508-
Expect(<-mck.Events()).To(ContainSubstring("no kind is registered"))
507+
Expect(mck.Events()).To(ContainSubstring("keys retrieved"))
508+
Expect(mck.Events()).To(ContainSubstring("no kind is registered"))
509509
Expect(mck.Logs()).To(ContainSubstring("Failed to generate key secret"))
510510
}),
511511
),
@@ -522,7 +522,7 @@ var _ = Describe("errors", Label("bucket", "errors"), func() {
522522
bScope.Client = mck.K8sClient
523523
err := reconciler.reconcileDelete(ctx, &bScope)
524524
Expect(err.Error()).To(ContainSubstring("failed to remove finalizer from bucket"))
525-
Expect(<-mck.Events()).To(ContainSubstring("failed to remove finalizer from bucket"))
525+
Expect(mck.Events()).To(ContainSubstring("failed to remove finalizer from bucket"))
526526
}),
527527
))
528528
})

mock/mocktest/controller_suite.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ func (cs *ctlrSuite) Run(paths []path) {
6565
mck.logs = cs.logs
6666
})
6767

68-
// Flush the channel if any events were not consumed.
68+
// Flush the channel if any events were not consumed
69+
// i.e. Mock.Events was never called
6970
for len(cs.recorder.Events) > 0 {
7071
<-cs.recorder.Events
7172
}

mock/mocktest/mock.go

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package mocktest
22

33
import (
44
"bytes"
5+
"strings"
56

67
"go.uber.org/mock/gomock"
78
"k8s.io/client-go/tools/record"
@@ -14,23 +15,44 @@ type Mock struct {
1415
gomock.TestReporter
1516
mock.MockClients
1617

17-
recorder *record.FakeRecorder
18-
logs *bytes.Buffer
18+
endOfPath bool
19+
recorder *record.FakeRecorder
20+
events string
21+
logs *bytes.Buffer
1922
}
2023

21-
// Events returns a channel for receiving event strings for a single test path.
22-
func (m Mock) Events() <-chan string {
24+
// Events a string of all recorded events for a single test path.
25+
func (m *Mock) Events() string {
2326
if m.recorder == nil {
24-
panic("events are only available in a ControllerTestSuite")
27+
panic("unexpected call to Events() outside of a ControllerTestSuite")
2528
}
2629

27-
return m.recorder.Events
30+
if !m.endOfPath {
31+
panic("unexpected call to Events() prior to Result node")
32+
}
33+
34+
if m.events != "" {
35+
return m.events
36+
}
37+
38+
var sb strings.Builder
39+
for len(m.recorder.Events) > 0 {
40+
sb.WriteString(<-m.recorder.Events)
41+
}
42+
43+
m.events = sb.String()
44+
45+
return m.events
2846
}
2947

3048
// Logs returns a string of all log output written during a single test path.
31-
func (m Mock) Logs() string {
49+
func (m *Mock) Logs() string {
3250
if m.logs == nil {
33-
panic("logs are only available in a ControllerTestSuite")
51+
panic("unexpected call to Events() outside of a ControllerTestSuite")
52+
}
53+
54+
if !m.endOfPath {
55+
panic("unexpected call to Events() prior to Result node")
3456
}
3557

3658
return m.logs.String()

mock/mocktest/path_run.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ func (p path) Run(ctx context.Context, mck Mock) {
1919
for _, c := range p.calls {
2020
evalFn(ctx, mck, fn(c))
2121
}
22+
23+
mckPtr := &mck
24+
mckPtr.endOfPath = true
25+
2226
evalFn(ctx, mck, fn(p.result))
2327
}
2428

0 commit comments

Comments
 (0)