Skip to content

Commit

Permalink
E2E test for Unhealthy GameServer on process crash
Browse files Browse the repository at this point in the history
Also moves udp-simple from 0.14=>0.15

More preparation for googleforgames#956
  • Loading branch information
markmandel committed Sep 5, 2019
1 parent acaccf0 commit 963e6d3
Show file tree
Hide file tree
Showing 17 changed files with 41 additions and 20 deletions.
2 changes: 1 addition & 1 deletion build/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ KIND_PROFILE ?= agones
KIND_CONTAINER_NAME=$(KIND_PROFILE)-control-plane

# Game Server image to use while doing end-to-end tests
GS_TEST_IMAGE ?= gcr.io/agones-images/udp-server:0.14
GS_TEST_IMAGE ?= gcr.io/agones-images/udp-server:0.15

# Directory that this Makefile is in.
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
Expand Down
2 changes: 1 addition & 1 deletion examples/fleet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -67,4 +67,4 @@ spec:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.14
image: gcr.io/agones-images/udp-server:0.15
2 changes: 1 addition & 1 deletion examples/gameserver.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -71,5 +71,5 @@ spec:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.14
image: gcr.io/agones-images/udp-server:0.15
imagePullPolicy: Always
2 changes: 1 addition & 1 deletion examples/simple-udp/dev-gameserver.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ spec:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.14
image: gcr.io/agones-images/udp-server:0.15
2 changes: 1 addition & 1 deletion examples/simple-udp/fleet-distributed.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ spec:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.14
image: gcr.io/agones-images/udp-server:0.15
resources:
requests:
memory: "32Mi"
Expand Down
2 changes: 1 addition & 1 deletion examples/simple-udp/fleet.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ spec:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.14
image: gcr.io/agones-images/udp-server:0.15
resources:
requests:
memory: "64Mi"
Expand Down
2 changes: 1 addition & 1 deletion examples/simple-udp/gameserver-passthrough.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ spec:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.14
image: gcr.io/agones-images/udp-server:0.15
env:
- name: "PASSTHROUGH"
value: "TRUE"
Expand Down
2 changes: 1 addition & 1 deletion examples/simple-udp/gameserver.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ spec:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.14
image: gcr.io/agones-images/udp-server:0.15
resources:
requests:
memory: "32Mi"
Expand Down
2 changes: 1 addition & 1 deletion examples/simple-udp/gameserverset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,4 @@ spec:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.14
image: gcr.io/agones-images/udp-server:0.15
2 changes: 1 addition & 1 deletion pkg/util/webhooks/webhooks_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ func TestWebHookFleetValidationHandler(t *testing.T) {
"template": {
"spec": {
"containers": [{
"image": "gcr.io/agones-images/udp-server:0.14",
"image": "gcr.io/agones-images/udp-server:0.15",
"name": false
}]
}
Expand Down
2 changes: 1 addition & 1 deletion site/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ release_branch = "release-0.12.0"
release_version = "0.12.0"

# example tag
example_image_tag = "gcr.io/agones-images/udp-server:0.14"
example_image_tag = "gcr.io/agones-images/udp-server:0.15"

# User interface configuration
[params.ui]
Expand Down
2 changes: 1 addition & 1 deletion site/content/en/docs/Guides/local-game-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ spec:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.14
image: gcr.io/agones-images/udp-server:0.15
```
Once you save this to a file make sure you have `kubectl` configured to point to your Agones cluster and then run `kubectl apply -f dev-gameserver.yaml`. This will register your server with Agones.
Expand Down
8 changes: 4 additions & 4 deletions site/content/en/docs/Guides/troubleshooting.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ Spec:
Creation Timestamp: <nil>
Spec:
Containers:
Image: gcr.io/agones-images/udp-server:0.14
Image: gcr.io/agones-images/udp-server:0.15
Name: simple-udp
Resources:
Limits:
Expand Down Expand Up @@ -82,7 +82,7 @@ Events:
The backing Pod has the same name as the `GameServer` - so it's also worth looking at the
details and events for the Pod to see if there are any issues there, such as restarts due to binary crashes etc.

For example, you can see the restart count on the gcr.io/agones-images/udp-server:0.14 container
For example, you can see the restart count on the gcr.io/agones-images/udp-server:0.15 container
is set to `1`, due to the game server binary crash

```
Expand All @@ -104,7 +104,7 @@ Controlled By: GameServer/simple-udp-zqppv
Containers:
simple-udp:
Container ID: docker://69eacd03cc89b0636b78abe47926b02183ba84d18fa20649ca443f5232511661
Image: gcr.io/agones-images/udp-server:0.14
Image: gcr.io/agones-images/udp-server:0.15
Image ID: docker-pullable://gcr.io/agones-images/udp-server@sha256:6a60eff5e68b88b5ce75ae98082d79cff36cda411a090f3495760e5c3b6c3575
Port: 7654/UDP
Host Port: 7058/UDP
Expand Down Expand Up @@ -173,7 +173,7 @@ Events:
Normal Created 2m28s kubelet, gke-test-cluster-default-590db5e4-4s6r Created container
Normal Created 114s (x2 over 2m31s) kubelet, gke-test-cluster-default-590db5e4-4s6r Created container
Normal Started 114s (x2 over 2m31s) kubelet, gke-test-cluster-default-590db5e4-4s6r Started container
Normal Pulled 114s (x2 over 2m31s) kubelet, gke-test-cluster-default-590db5e4-4s6r Container image "gcr.io/agones-images/udp-server:0.14" already present on machine
Normal Pulled 114s (x2 over 2m31s) kubelet, gke-test-cluster-default-590db5e4-4s6r Container image "gcr.io/agones-images/udp-server:0.15" already present on machine
```

Finally, you can also get the logs of your `GameServer` `Pod` as well via `kubectl logs <pod name> -c <game server container name>`, for example:
Expand Down
2 changes: 1 addition & 1 deletion site/content/en/docs/Reference/fleet.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ spec:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.14
image: gcr.io/agones-images/udp-server:0.15
```
Since Agones defines a new
Expand Down
2 changes: 1 addition & 1 deletion site/content/en/docs/Reference/gameserver.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ spec:
spec:
containers:
- name: simple-udp
image: gcr.io/agones-images/udp-server:0.14
image: gcr.io/agones-images/udp-server:0.15
imagePullPolicy: Always
```
Expand Down
21 changes: 21 additions & 0 deletions test/e2e/gameserver_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,27 @@ func TestGameServerUnhealthyAfterDeletingPod(t *testing.T) {
assert.NoError(t, err)
}

func TestGameServerUnhealthyAfterReadyCrash(t *testing.T) {
t.Parallel()
gs := defaultGameServer()
readyGs, err := framework.CreateGameServerAndWaitUntilReady(defaultNs, gs)
if err != nil {
t.Fatalf("Could not get a GameServer ready: %v", err)
}

gsClient := framework.AgonesClient.AgonesV1().GameServers(defaultNs)
defer gsClient.Delete(readyGs.ObjectMeta.Name, nil) // nolint: errcheck

// there is no response, so don't wait for the timeout
go func() {
// ignore the error, we don't care about the response
e2eframework.SendGameServerUDP(readyGs, "CRASH") // nolint: errcheck
}()

_, err = framework.WaitForGameServerState(readyGs, agonesv1.GameServerStateUnhealthy, 3*time.Minute)
assert.NoError(t, err)
}

func TestDevelopmentGameServerLifecycle(t *testing.T) {
t.Parallel()
gs := &agonesv1.GameServer{
Expand Down
4 changes: 2 additions & 2 deletions test/e2e/main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ func TestMain(m *testing.M) {
usr, _ := user.Current()
kubeconfig := flag.String("kubeconfig", filepath.Join(usr.HomeDir, "/.kube/config"),
"kube config path, e.g. $HOME/.kube/config")
gsimage := flag.String("gameserver-image", "gcr.io/agones-images/udp-server:0.14",
"gameserver image to use for those tests, gcr.io/agones-images/udp-server:0.14")
gsimage := flag.String("gameserver-image", "gcr.io/agones-images/udp-server:0.15",
"gameserver image to use for those tests, gcr.io/agones-images/udp-server:0.15")
pullSecret := flag.String("pullsecret", "",
"optional secret to be used for pulling the gameserver and/or Agones SDK sidecar images")
stressTestLevel := flag.Int("stress", 0, "enable stress test at given level 0-100")
Expand Down

0 comments on commit 963e6d3

Please sign in to comment.