-
Notifications
You must be signed in to change notification settings - Fork 8
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
ci: add basic integration testing framework #199
Conversation
d70c63a
to
0a3c2a3
Compare
lgtm, not sure why all the AKS stuff is going in with this PR if that parts not ready yet but don't mind it really. just would make more sense for all of that to go in together |
where does the kind cluster run? on an ec2 instance? or on the actual docker runner? |
0a3c2a3
to
8b41f24
Compare
I merged them in anyways since I had started off building the PoC with that but diverted to kind cluster instead. This just gives us the option to deploy to EKS at any time by anyone when needed without setting up a new cluster. I can see it being later for more "real-world" e2e testing |
It runs on the github actions machine itself. it sets up 2 docker containers for worker nodes and 1 container for master node |
2ca488f
to
7d2ae2e
Compare
7d2ae2e
to
72167a2
Compare
Description
The location (
helm-charts/integration
) is intended to run integration tests using the terraform test framework both locally and in CI the exact same way.The tests are run from the location using the
terraform test -verbose
command.The tests ran are those located in the
helm-charts/integrations/tests
location ashcl
filesThe current
agent-default.tftest.hcl
file contains a basic integration test that will do the following in sequenceintegration/modules/setup_kind_cluster
modulecharts/agent
with default values (integration/modules/deploy_helm/values/default.yaml
). This uses theintegration/modules/deploy_helm
modulescripts/test_basic.py
) using pytest/kubeclient framework to check if all deployed agent pods are readyNote: Since the helm chart deployment automatically waits until all pods are in READY state (within the timeout), the initial test in redundant. If a helm chart deployment fails, the python tests themselves will run to provide more information on what failed (eg: why the pods weren't READY within desired timeout)
Other modules (such as
setup_aws_*
) are not used in integration testing yet but the foundation for future real-cluster testing is setup when a deployment is needed in EKS.Local Testing:
These tests can also be ran locally. See
integration/README.md