Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

End to End test #37

Closed
markmandel opened this issue Dec 24, 2017 · 12 comments
Closed

End to End test #37

markmandel opened this issue Dec 24, 2017 · 12 comments
Assignees
Labels
area/build-tools Development tooling. I.e. pretty much everything in the `build` directory. good first issue These are great first issues. If you are looking for a place to start, start here! help wanted We would love help on these issues. Please come help us! kind/design Proposal discussing new features / fixes and how they should be implemented
Milestone

Comments

@markmandel
Copy link
Member

markmandel commented Dec 24, 2017

Write a end to end test - possibly, using make and kubectl, or maybe use code - what is the best option?

  • installation
  • Creating a GameServer
  • Connecting

Will likely need to both check that a connection works with the go sample (edit to send a message via a flag, rather than stdin), but also will need to check the C++ sdk works as well.

I din't think there are any e2e integration test libraries that exist for Kubernetes platforms - but do have a look first. May be worth looking at how Kubernetes itself does it.

@markmandel markmandel added area/build-tools Development tooling. I.e. pretty much everything in the `build` directory. kind/design Proposal discussing new features / fixes and how they should be implemented labels Dec 24, 2017
@markmandel markmandel added the help wanted We would love help on these issues. Please come help us! label Mar 8, 2018
@addisonbair
Copy link

I am new to this project and haven't yet stood up the development environment yet, but it appears that Kubernetes itself uses Ginkgo, Gomega and the Kubernetes API itself for much of the end-to-end testing of a particular release.

https://github.com/kubernetes/kubernetes/tree/master/test/e2e

Here's a simpler example from the Prometheus Operator project:

https://github.com/coreos/prometheus-operator/tree/master/test/e2e

@cyriltovena
Copy link
Collaborator

cyriltovena commented May 23, 2018

Should I start by some simple e2e go test and may be bring this later into an image to support in-cluster config ?

I quite like the prom-operator example.

@markmandel
Copy link
Member Author

The other option is using the Helm test tooling? Or maybe there is a combo option?

Or if I follow - you're saying, start with a simple binary we can run and point at a cluster, and then move forward from there? That would make sense (assuming that's what you are suggesting)

@cyriltovena
Copy link
Collaborator

yes, I want to add the helm integration after, using a container.

@cyriltovena cyriltovena self-assigned this May 23, 2018
@markmandel
Copy link
Member Author

Sounds like a good approach to me!

@cyriltovena
Copy link
Collaborator

cyriltovena commented Jul 31, 2018

Gameservers:

  • I can create a ready gameserver
  • I can talk to the a gameserver via its external IP.
  • The gameserver should become unhealthy on crash or without answering healthcheck (fake gameserver)*
  • The gameserver becomes deleted on shutdown.
  • I can add a port to a gameserver. (might reschedule)
  • I can list gameservers.
  • I can read the gameserver metadata, change it via k8s api and read it back from sdk to compare*

Fleets ?

  • I can create an empty fleet.
  • I can scale up a fleet.
  • I can scale down a fleet to only allocated gameservers.
  • I can update a fleet image and only replace unallocated gameservers.
  • When a gameserver ends, it should become allocatable.*

Allocations ?

  • I can allocate from a fleet if there is free gameserver.
  • I can't allocate if a fleet is fully used.
  • I can pass metadatas at allocation time and read it from the gamserver.*

PortAllocation ?

  • I should be able to dynamically allocate multiple port if enough within range.(is it too much?)
  • I should be able to statically allocates one or more ports.
  • I should receive an error when there is no ports available.

* we could add more debug command to the udp go example (returns json metadata,fake a crash, stop healthchecking)

This would be an ideal e2e, but that's seems like a lot should we prioritize ?

@markmandel
Copy link
Member Author

Got another one for you - if health checking is disabled, then the game server shouldn't be marked as unhealthy if no health pings are sent (just found this as a bug, and it's only going to get covered by e2e test)

But yes - we should prioritise, and we can work through them slowly each as a separate PR. Also happy to defer to your opinion on the order.

@markmandel markmandel added the good first issue These are great first issues. If you are looking for a place to start, start here! label Sep 10, 2018
@markmandel
Copy link
Member Author

Just updated this with what I completed on e2e tests.

@thisisnotapril
Copy link
Collaborator

Repo health check - should we keep this issue open?

@markmandel
Copy link
Member Author

There are still a few left on the list (I cleaned things up a bit above) that would be good to have I think.

@markmandel
Copy link
Member Author

I think this is actually good to close now. If anyone disagrees, please let me know, otherwise I'll close this next Monday.

@markmandel markmandel added this to the 0.11.0 milestone Jun 17, 2019
@markmandel
Copy link
Member Author

Closing!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/build-tools Development tooling. I.e. pretty much everything in the `build` directory. good first issue These are great first issues. If you are looking for a place to start, start here! help wanted We would love help on these issues. Please come help us! kind/design Proposal discussing new features / fixes and how they should be implemented
Projects
None yet
Development

No branches or pull requests

4 participants