test: google compute engine acceptance tests

This commit is contained in:
Mitchell Hashimoto 2013-12-14 11:27:50 -08:00
parent a91b8f6853
commit 044e7fa368
4 changed files with 75 additions and 1 deletions

1
.gitignore vendored
View File

@ -6,3 +6,4 @@
/website/build
.vagrant
Vagrantfile
test/.env

View File

@ -21,7 +21,11 @@ running on Mac OS X, most of these are available with `brew`:
* [Bats](https://github.com/sstephenson/bats)
* [AWS cli](http://aws.amazon.com/cli/)
* [AWS cli](http://aws.amazon.com/cli/) for AWS tests as well as most
of the components.
* [gcutil](https://developers.google.com/compute/docs/gcutil/#install) for
Google Compute Engine tests.
### Configuring Tests
@ -32,6 +36,15 @@ Set the following self-explanatory environmental variables:
* `AWS_ACCESS_KEY_ID`
* `AWS_SECRET_ACCESS_KEY`
**For tests that test Google Compute Engine:**
Set the following environmental variables:
* `GC_BUCKET_NAME`
* `GC_CLIENT_SECRETS_FILE`
* `GC_PRIVATE_KEY_FILE`
* `GC_PROJECT_ID`
### Running
These tests are meant to be run _one file at a time_. There are some

40
test/builder_googlecompute.bats Executable file
View File

@ -0,0 +1,40 @@
#!/usr/bin/env bats
#
# This tests the googlecompute builder. The teardown function will
# delete any images with the text "packerbats" within the name.
load test_helper
fixtures builder-googlecompute
# Required parameters
: ${GC_BUCKET_NAME:?}
: ${GC_CLIENT_SECRETS_FILE:?}
: ${GC_PRIVATE_KEY_FILE:?}
: ${GC_PROJECT_ID:?}
command -v gcutil >/dev/null 2>&1 || {
echo "'gcutil' must be installed" >&2
exit 1
}
USER_VARS="-var bucket_name=${GC_BUCKET_NAME}"
USER_VARS="${USER_VARS} -var client_secrets_file=${GC_CLIENT_SECRETS_FILE}"
USER_VARS="${USER_VARS} -var private_key_file=${GC_PRIVATE_KEY_FILE}"
USER_VARS="${USER_VARS} -var project_id=${GC_PROJECT_ID}"
# This tests if GCE has an image that contains the given parameter.
gc_has_image() {
gcutil --format=names --project=${GC_PROJECT_ID} listimages \
| grep $1
}
teardown() {
gcutil --format=names --project=${GC_PROJECT_ID} listimages \
| grep packerbats \
| xargs -n1 gcutil --project=${GC_PROJECT_ID} --force deleteimage
}
@test "googlecompute: build minimal.json" {
run packer build ${USER_VARS} $FIXTURE_ROOT/minimal.json
[ "$status" -eq 0 ]
[ "$(gc_has_image "packerbats-minimal")" -eq 0 ]
}

View File

@ -0,0 +1,20 @@
{
"variables": {
"bucket_name": null,
"client_secrets_file": null,
"private_key_file": null,
"project_id": null
},
"builders": [{
"type": "googlecompute",
"bucket_name": "{{user `bucket_name`}}",
"client_secrets_file": "{{user `client_secrets_file`}}",
"private_key_file": "{{user `private_key_file`}}",
"project_id": "{{user `project_id`}}",
"image_name": "packerbats-minimal-{{timestamp}}",
"source_image": "debian-7-wheezy-v20131120",
"zone": "us-central1-a"
}]
}