open-nomad/e2e
Tim Gross efbd680d4e
e2e: split Packer build scripts from TF provisioning (#6542)
Make a clear split between Packer and Terraform provisioning steps:
the scripts in the `packer/linux` directory are run when we build the
AMI whereas the stuff in shared are run at Terraform provisioning time.

Merging all runtime provisioning scripts into a single script for each
of server/client solves the following:

* Userdata scripts can't take arguments, they can only be templated
  and that means we have to do TF escaping in bash/powershell scripts.
* TF provisioning scripts race with userdata scripts.
2019-10-25 08:08:24 -04:00
..
affinities chore: initial hclfmt 2019-10-11 14:00:05 +02:00
allocstats chore: initial hclfmt 2019-10-11 14:00:05 +02:00
bin e2e update shell scripts argument quoting 2019-06-04 15:52:32 -04:00
cli fix panic 2018-09-18 13:02:03 -07:00
clientstate chore: initial hclfmt 2019-10-11 14:00:05 +02:00
connect driver/networking: don't recreate existing network namespaces 2019-09-25 14:58:17 -04:00
consul chore: initial hclfmt 2019-10-11 14:00:05 +02:00
consultemplate Fix double restart counting for templates 2019-01-25 15:38:13 -08:00
deployment chore: initial hclfmt 2019-10-11 14:00:05 +02:00
e2eutil e2e: test infra for client node restarts (#6313) 2019-09-18 10:10:14 -04:00
example e2e/cli: fix formatting 2018-07-31 13:52:25 -04:00
execagent e2e: add NomadAgent and basic client state test 2019-03-21 07:14:34 -07:00
fabio chore: initial hclfmt 2019-10-11 14:00:05 +02:00
framework remove stray println 2019-03-21 09:23:37 -05:00
hostvolumes e2e: init host volumes test 2019-09-18 00:34:48 +02:00
metrics chore: initial hclfmt 2019-10-11 14:00:05 +02:00
migrations chore: Format hcl configurations 2019-07-20 16:55:07 +02:00
nomad09upgrade chore: initial hclfmt 2019-10-11 14:00:05 +02:00
nomadexec chore: initial hclfmt 2019-10-11 14:00:05 +02:00
prometheus chore: initial hclfmt 2019-10-11 14:00:05 +02:00
rescheduling chore: Format hcl configurations 2019-07-20 16:55:07 +02:00
spread chore: initial hclfmt 2019-10-11 14:00:05 +02:00
taskevents chore: initial hclfmt 2019-10-11 14:00:05 +02:00
terraform e2e: split Packer build scripts from TF provisioning (#6542) 2019-10-25 08:08:24 -04:00
upgrades script e2e/upgrades: cluster upgrade scripts 2019-09-24 14:35:45 -04:00
vault vault e2e: pass vault version into setup instead of having to infer it from test name 2019-04-10 10:34:10 -05:00
README.md e2e bin/update and bin/run, README 2019-06-04 13:42:07 -04:00
e2e.go e2e: skip e2e tests during normal go test runs 2018-07-31 12:42:36 -04:00
e2e_test.go e2e: init host volumes test 2019-09-18 00:34:48 +02:00

README.md

End to End Tests

This package contains integration tests.

The terraform folder has provisioning code to spin up a Nomad cluster on AWS. The tests work with the NOMAD_ADDR environment variable which can be set either to a local dev Nomad agent or a Nomad client on AWS.

Local Development

The workflow when developing end to end tests locally is to run the provisioning step described below once, and then run the tests as described below. When making local changes, use ./bin/update $(which nomad) /usr/local/bin/nomad and ./bin/run sudo systemctl restart nomad to destructively modify the provisioned cluster.

Provisioning

You'll need AWS credentials (AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY) to create the Nomad cluster. See the README for details. The number of servers and clients is configurable, as is the configuration file for each client and server.

Running

After completing the provisioning step above, you should see CLI output showing the IP addresses of Nomad client machines. To run the tests, set the NOMAD_ADDR variable to http://[client IP]:4646/

$ NOMAD_ADDR=<> NOMAD_E2E=1 go test -v