Skip to content

Commit b8d38ca

Browse files
committed
Testing functions for resource events
I kept writing the same two select statements a lot, so I pulled it into the central testing library for reuse.
1 parent 0e672ef commit b8d38ca

5 files changed

Lines changed: 35 additions & 59 deletions

File tree

pkg/fleets/controller_test.go

Lines changed: 7 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,7 @@ func TestControllerSyncFleet(t *testing.T) {
6262
err := c.syncFleet("default/fleet-1")
6363
assert.Nil(t, err)
6464
assert.True(t, created, "gameserverset should have been created")
65-
66-
select {
67-
case event := <-m.FakeRecorder.Events:
68-
assert.Contains(t, event, "CreatingGameServerSet")
69-
case <-time.After(3 * time.Second):
70-
assert.FailNow(t, "there should be a create event")
71-
}
65+
agtesting.AssertEventContains(t, m.FakeRecorder.Events, "CreatingGameServerSet")
7266
})
7367

7468
t.Run("gamserverset with the same number of replicas", func(t *testing.T) {
@@ -102,12 +96,7 @@ func TestControllerSyncFleet(t *testing.T) {
10296

10397
err := c.syncFleet("default/fleet-1")
10498
assert.Nil(t, err)
105-
106-
select {
107-
case event := <-m.FakeRecorder.Events:
108-
assert.FailNow(t, "there should be no events", event)
109-
case <-time.After(time.Second):
110-
}
99+
agtesting.AssertNoEvent(t, m.FakeRecorder.Events)
111100
})
112101

113102
t.Run("gameserverset with different number of replicas", func(t *testing.T) {
@@ -143,12 +132,7 @@ func TestControllerSyncFleet(t *testing.T) {
143132
err := c.syncFleet("default/fleet-1")
144133
assert.Nil(t, err)
145134
assert.True(t, updated, "gameserverset should have been updated")
146-
select {
147-
case event := <-m.FakeRecorder.Events:
148-
assert.Contains(t, event, "ScalingGameServerSet")
149-
case <-time.After(3 * time.Second):
150-
assert.FailNow(t, "there should be a scaling event")
151-
}
135+
agtesting.AssertEventContains(t, m.FakeRecorder.Events, "ScalingGameServerSet")
152136
})
153137

154138
t.Run("gameserverset with different image details", func(t *testing.T) {
@@ -197,12 +181,7 @@ func TestControllerSyncFleet(t *testing.T) {
197181
assert.Nil(t, err)
198182
assert.True(t, updated, "gameserverset should have been updated")
199183
assert.True(t, created, "gameserverset should have been created")
200-
select {
201-
case event := <-m.FakeRecorder.Events:
202-
assert.Contains(t, event, "CreatingGameServerSet")
203-
case <-time.After(3 * time.Second):
204-
assert.FailNow(t, "there should be a creating event")
205-
}
184+
agtesting.AssertEventContains(t, m.FakeRecorder.Events, "CreatingGameServerSet")
206185
})
207186
}
208187

@@ -465,12 +444,7 @@ func TestControllerUpsertGameServerSet(t *testing.T) {
465444
assert.Nil(t, err)
466445

467446
assert.True(t, created, "Should be created")
468-
select {
469-
case event := <-m.FakeRecorder.Events:
470-
assert.Contains(t, event, "CreatingGameServerSet")
471-
case <-time.After(3 * time.Second):
472-
assert.FailNow(t, "there should be a create event")
473-
}
447+
agtesting.AssertEventContains(t, m.FakeRecorder.Events, "CreatingGameServerSet")
474448
})
475449

476450
t.Run("update", func(t *testing.T) {
@@ -493,12 +467,7 @@ func TestControllerUpsertGameServerSet(t *testing.T) {
493467
assert.Nil(t, err)
494468

495469
assert.True(t, update, "Should be update")
496-
select {
497-
case event := <-m.FakeRecorder.Events:
498-
assert.Contains(t, event, "ScalingGameServerSet")
499-
case <-time.After(3 * time.Second):
500-
assert.FailNow(t, "there should be a create event")
501-
}
470+
agtesting.AssertEventContains(t, m.FakeRecorder.Events, "ScalingGameServerSet")
502471
})
503472

504473
t.Run("noop", func(t *testing.T) {
@@ -520,12 +489,7 @@ func TestControllerUpsertGameServerSet(t *testing.T) {
520489

521490
err := c.upsertGameServerSet(f, gsSet, replicas)
522491
assert.Nil(t, err)
523-
524-
select {
525-
case event := <-m.FakeRecorder.Events:
526-
assert.Fail(t, "should not have an event", event)
527-
case <-time.After(1 * time.Second):
528-
}
492+
agtesting.AssertNoEvent(t, m.FakeRecorder.Events)
529493
})
530494
}
531495

pkg/gameservers/health_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,5 +160,5 @@ func TestHealthControllerRun(t *testing.T) {
160160
assert.FailNow(t, "timeout on GameServer update")
161161
}
162162

163-
assert.Contains(t, <-m.FakeRecorder.Events, v1alpha1.Unhealthy)
163+
agtesting.AssertEventContains(t, m.FakeRecorder.Events, string(v1alpha1.Unhealthy))
164164
}

pkg/gameservers/sdkserver_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func TestSidecarRun(t *testing.T) {
103103
}
104104

105105
for _, str := range v.recordings {
106-
assert.Contains(t, <-m.FakeRecorder.Events, str)
106+
agtesting.AssertEventContains(t, m.FakeRecorder.Events, str)
107107
}
108108
})
109109
}

pkg/gameserversets/controller_test.go

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -249,13 +249,7 @@ func TestSyncMoreGameServers(t *testing.T) {
249249
err := c.syncMoreGameServers(gsSet, int32(expected))
250250
assert.Nil(t, err)
251251
assert.Equal(t, expected, count)
252-
253-
select {
254-
case event := <-m.FakeRecorder.Events:
255-
assert.Contains(t, event, "SuccessfulCreate")
256-
case <-time.After(3 * time.Second):
257-
assert.FailNow(t, "should have received an event")
258-
}
252+
agtesting.AssertEventContains(t, m.FakeRecorder.Events, "SuccessfulCreate")
259253
}
260254

261255
func TestSyncLessGameServers(t *testing.T) {
@@ -311,13 +305,7 @@ func TestSyncLessGameServers(t *testing.T) {
311305

312306
// subtract one, because one is already deleted
313307
assert.Equal(t, expected-1, count)
314-
315-
select {
316-
case event := <-m.FakeRecorder.Events:
317-
assert.Contains(t, event, "SuccessfulDelete")
318-
case <-time.After(3 * time.Second):
319-
assert.FailNow(t, "should have received an event")
320-
}
308+
agtesting.AssertEventContains(t, m.FakeRecorder.Events, "SuccessfulDelete")
321309
}
322310

323311
func TestControllerSyncGameServerSetState(t *testing.T) {

pkg/testing/controller.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@ import (
1818
"context"
1919
"time"
2020

21+
gotesting "testing"
22+
2123
agonesfake "agones.dev/agones/pkg/client/clientset/versioned/fake"
2224
"agones.dev/agones/pkg/client/informers/externalversions"
2325
"github.com/sirupsen/logrus"
26+
"github.com/stretchr/testify/assert"
2427
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
2528
extfake "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset/fake"
2629
"k8s.io/client-go/informers"
@@ -84,3 +87,24 @@ func NewEstablishedCRD() *v1beta1.CustomResourceDefinition {
8487
},
8588
}
8689
}
90+
91+
// AssertEventContains asserts that a k8s event stream contains a
92+
// value, and assert.FailNow() if it does not
93+
func AssertEventContains(t *gotesting.T, events <-chan string, contains string) {
94+
select {
95+
case e := <-events:
96+
assert.Contains(t, e, contains)
97+
case <-time.After(3 * time.Second):
98+
assert.FailNow(t, "Did not receive "+contains+" event")
99+
}
100+
}
101+
102+
// AssertNoEvent asserts that the event stream does not
103+
// have a value in it (at least in the next second)
104+
func AssertNoEvent(t *gotesting.T, events <-chan string) {
105+
select {
106+
case e := <-events:
107+
assert.Fail(t, "should not have an event", e)
108+
case <-time.After(1 * time.Second):
109+
}
110+
}

0 commit comments

Comments
 (0)