Now that you’ve had a chance to browse the examples and their tests, here’s an overview of the packages you’ll find in Terratest’s modules folder and how they can help you test different types infrastructure:
| Package | Description |
|---|---|
| aws | Functions that make it easier to work with the AWS APIs. Examples: find an EC2 Instance by tag, get the IPs of EC2 Instances in an ASG, create an EC2 KeyPair, look up a VPC ID. |
| azure | Functions that make it easier to work with the Azure APIs. Examples: get the size of a virtual machine, get the tags of a virtual machine. |
| collections | Go doesn’t have much of a collections library built-in, so this package has a few helper methods for working with lists and maps. Examples: subtract two lists from each other. |
| docker | Functions that make it easier to work with Docker and Docker Compose. Examples: run docker compose commands. |
| environment | Functions for interacting with os environment. Examples: check for first non empty environment variable in a list. |
| files | Functions for manipulating files and folders. Examples: check if a file exists, copy a folder and all of its contents. |
| gcp | Functions that make it easier to work with the GCP APIs. Examples: Add labels to a Compute Instance, get the Public IPs of an Instance, Get a list of Instances in a Managed Instance Group, Work with Storage Buckets and Objects. |
| git | Functions for working with Git. Examples: get the name of the current Git branch. |
| helm | Functions for working with Helm. Examples: Install a Helm chart. |
| http-helper | Functions for making HTTP requests. Examples: make an HTTP request to a URL and check the status code and body contain the expected values, run a simple HTTP server locally. |
| k8s | Functions that make it easier to work with Kubernetes. Examples: Getting the list of nodes in a cluster, waiting until all nodes in a cluster is ready. |
| logger | A replacement for Go’s t.Log and t.Logf that writes the logs to stdout immediately, rather than buffering them until the very end of the test. This makes debugging and iterating easier. |
| logger/parser | Includes functions for parsing out interleaved go test output and piecing out the individual test logs. Used by the terratest_log_parser command. |
| oci | Functions that make it easier to work with OCI. Examples: Getting the most recent image of a compartment + OS pair, deleting a custom image, retrieving a random subnet. |
| packer | Functions for working with Packer. Examples: run a Packer build and return the ID of the artifact that was created. |
| random | Functions for generating random data. Examples: generate a unique ID that can be used to namespace resources so multiple tests running in parallel don’t clash. |
| retry | Functions for retrying actions. Examples: retry a function up to a maximum number of retries, retry a function until a stop function is called, wait up to a certain timeout for a function to complete. These are especially useful when working with distributed systems and eventual consistency. |
| shell | Functions to run shell commands. Examples: run a shell command and return its stdout and stderr. |
| ssh | Functions to SSH to servers. Examples: SSH to a server, execute a command, and return stdout and stderr. |
| terraform | Functions for working with Terraform. Examples: run terraform init, terraform apply, terraform destroy. |
| test_structure | Functions for structuring your tests to speed up local iteration. Examples: break up your tests into stages so that any stage can be skipped by setting an environment variable. |
Your entire infrastructure. Defined as code. In about a day.
Explore Gruntwork.io