Skip to content

Commit

Permalink
added missing FailNow calls to sdkserver unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
alexey-kremsa-globant committed Jul 7, 2020
1 parent efbed66 commit 13980cd
Showing 1 changed file with 96 additions and 34 deletions.
130 changes: 96 additions & 34 deletions pkg/sdkserver/sdkserver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,9 @@ func TestSidecarUpdateState(t *testing.T) {
t.Run(k, func(t *testing.T) {
m := agtesting.NewMocks()
sc, err := defaultSidecar(m)
assert.Nil(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
sc.gsState = agonesv1.GameServerStateReady

updated := false
Expand Down Expand Up @@ -373,7 +375,9 @@ func TestSidecarHealthLastUpdated(t *testing.T) {
m := agtesting.NewMocks()

sc, err := defaultSidecar(m)
assert.Nil(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
sc.health = agonesv1.Health{Disabled: false}
fc := clock.NewFakeClock(now)
sc.clock = fc
Expand Down Expand Up @@ -420,7 +424,9 @@ func TestSidecarUnhealthyMessage(t *testing.T) {

m := agtesting.NewMocks()
sc, err := NewSDKServer("test", "default", m.KubeClient, m.AgonesClient)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}

m.AgonesClient.AddReactor("list", "gameservers", func(action k8stesting.Action) (bool, runtime.Object, error) {
gs := agonesv1.GameServer{
Expand Down Expand Up @@ -466,13 +472,14 @@ func TestSidecarHealthy(t *testing.T) {

m := agtesting.NewMocks()
sc, err := defaultSidecar(m)
if err != nil {
assert.FailNow(t, err.Error())
}
// manually set the values
sc.health = agonesv1.Health{FailureThreshold: 1}
sc.healthTimeout = 5 * time.Second
sc.initHealthLastUpdated(0 * time.Second)

assert.Nil(t, err)

now := time.Now().UTC()
fc := clock.NewFakeClock(now)
sc.clock = fc
Expand Down Expand Up @@ -566,7 +573,9 @@ func TestSidecarHealthy(t *testing.T) {
func TestSidecarHTTPHealthCheck(t *testing.T) {
m := agtesting.NewMocks()
sc, err := NewSDKServer("test", "default", m.KubeClient, m.AgonesClient)
assert.Nil(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
now := time.Now().Add(time.Hour).UTC()
fc := clock.NewFakeClock(now)
// now we control time - so slow machines won't fail anymore
Expand Down Expand Up @@ -633,14 +642,18 @@ func TestSDKServerGetGameServer(t *testing.T) {
defer close(stop)

sc, err := defaultSidecar(m)
assert.Nil(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}

sc.informerFactory.Start(stop)
assert.True(t, cache.WaitForCacheSync(stop, sc.gameServerSynced))
sc.gsWaitForSync.Done()

result, err := sc.GetGameServer(context.Background(), &sdk.Empty{})
assert.Nil(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Equal(t, fixture.ObjectMeta.Name, result.ObjectMeta.Name)
assert.Equal(t, fixture.ObjectMeta.Namespace, result.ObjectMeta.Namespace)
assert.Equal(t, string(fixture.Status.State), result.Status.State)
Expand All @@ -658,7 +671,9 @@ func TestSDKServerWatchGameServer(t *testing.T) {

m := agtesting.NewMocks()
sc, err := defaultSidecar(m)
assert.Nil(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Empty(t, sc.connectedStreams)

stream := newGameServerMockStream()
Expand Down Expand Up @@ -695,12 +710,12 @@ func TestSDKServerWatchGameServerFeatureSDKWatchSendOnExecute(t *testing.T) {

err := agruntime.ParseFeatures(string(agruntime.FeatureSDKWatchSendOnExecute) + "=true")
if err != nil {
assert.FailNow(t, "Can not parse FeatureSDKWatchSendOnExecute")
assert.FailNow(t, err.Error())
}

sc, err := defaultSidecar(m)
if !assert.NoError(t, err) {
t.Fatal("Can not create sidecar")
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Empty(t, sc.connectedStreams)

Expand Down Expand Up @@ -763,7 +778,9 @@ func TestSDKServerSendGameServerUpdate(t *testing.T) {

m := agtesting.NewMocks()
sc, err := defaultSidecar(m)
assert.Nil(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Empty(t, sc.connectedStreams)

stop := make(chan struct{})
Expand Down Expand Up @@ -868,7 +885,9 @@ func TestSDKServerReserveTimeoutOnRun(t *testing.T) {
})

sc, err := defaultSidecar(m)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
stop := make(chan struct{})
sc.informerFactory.Start(stop)
assert.True(t, cache.WaitForCacheSync(stop, sc.gameServerSynced))
Expand Down Expand Up @@ -1018,14 +1037,18 @@ func TestSDKServerPlayerCapacity(t *testing.T) {
defer agruntime.FeatureTestMutex.Unlock()

err := agruntime.ParseFeatures(string(agruntime.FeaturePlayerTracking) + "=true")
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}

m := agtesting.NewMocks()
stop := make(chan struct{})
defer close(stop)

sc, err := defaultSidecar(m)
assert.Nil(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}

m.AgonesClient.AddReactor("list", "gameservers", func(action k8stesting.Action) (bool, runtime.Object, error) {
gs := agonesv1.GameServer{
Expand Down Expand Up @@ -1075,7 +1098,9 @@ func TestSDKServerPlayerCapacity(t *testing.T) {
assert.NoError(t, err)

count, err := sc.GetPlayerCapacity(context.Background(), &alpha.Empty{})
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Equal(t, int64(20), count.Count)

// on an update, confirm that the update hits the K8s api
Expand All @@ -1102,7 +1127,9 @@ func TestSDKServerPlayerConnectAndDisconnect(t *testing.T) {
defer close(stop)

sc, err := defaultSidecar(m)
assert.Nil(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}

capacity := int64(3)
m.AgonesClient.AddReactor("list", "gameservers", func(action k8stesting.Action) (bool, runtime.Object, error) {
Expand Down Expand Up @@ -1149,34 +1176,49 @@ func TestSDKServerPlayerConnectAndDisconnect(t *testing.T) {
assert.NoError(t, err)

count, err := sc.GetPlayerCount(context.Background(), e)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Equal(t, int64(0), count.Count)

list, err := sc.GetConnectedPlayers(context.Background(), e)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Empty(t, list.List)

ok, err := sc.IsPlayerConnected(context.Background(), &alpha.PlayerID{PlayerID: "1"})
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.False(t, ok.Bool, "no player connected yet")

// sdk value should always be correct, even if we send more than one update per second.
for i := int64(0); i < capacity; i++ {
token := strconv.FormatInt(i, 10)
id := &alpha.PlayerID{PlayerID: token}
ok, err := sc.PlayerConnect(context.Background(), id)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.True(t, ok.Bool, "Player "+token+" should not yet be connected")

ok, err = sc.IsPlayerConnected(context.Background(), id)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.True(t, ok.Bool, "Player "+token+" should be connected")
}
count, err = sc.GetPlayerCount(context.Background(), e)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Equal(t, capacity, count.Count)

list, err = sc.GetConnectedPlayers(context.Background(), e)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Equal(t, []string{"0", "1", "2"}, list.List)

// on an update, confirm that the update hits the K8s api, only once
Expand Down Expand Up @@ -1207,19 +1249,27 @@ func TestSDKServerPlayerConnectAndDisconnect(t *testing.T) {
token := strconv.FormatInt(i, 10)
id := &alpha.PlayerID{PlayerID: token}
ok, err := sc.PlayerDisconnect(context.Background(), id)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Truef(t, ok.Bool, "Player %s should be disconnected", token)

ok, err = sc.IsPlayerConnected(context.Background(), id)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Falsef(t, ok.Bool, "Player %s should be connected", token)
}
count, err = sc.GetPlayerCount(context.Background(), e)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Equal(t, int64(1), count.Count)

list, err = sc.GetConnectedPlayers(context.Background(), e)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Equal(t, []string{"2"}, list.List)

// on an update, confirm that the update hits the K8s api, only once
Expand All @@ -1241,31 +1291,43 @@ func TestSDKServerPlayerConnectAndDisconnect(t *testing.T) {

// last player is still there
ok, err = sc.IsPlayerConnected(context.Background(), &alpha.PlayerID{PlayerID: "2"})
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.True(t, ok.Bool, "Player 2 should be connected")

// finally, check idempotency of connect and disconnect
id := &alpha.PlayerID{PlayerID: "2"} // only one left behind
ok, err = sc.PlayerConnect(context.Background(), id)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.False(t, ok.Bool, "Player 2 should already be connected")
count, err = sc.GetPlayerCount(context.Background(), e)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Equal(t, int64(1), count.Count)

// no longer there.
id.PlayerID = "0"
ok, err = sc.PlayerDisconnect(context.Background(), id)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.False(t, ok.Bool, "Player 2 should already be disconnected")
count, err = sc.GetPlayerCount(context.Background(), e)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Equal(t, int64(1), count.Count)

agtesting.AssertNoEvent(t, m.FakeRecorder.Events)

list, err = sc.GetConnectedPlayers(context.Background(), e)
assert.NoError(t, err)
if err != nil {
assert.FailNow(t, err.Error())
}
assert.Equal(t, []string{"2"}, list.List)
}

Expand Down

0 comments on commit 13980cd

Please sign in to comment.