Kami baru-baru ini membuka Terratest bersumber , pisau tentara swiss kami untuk menguji kode infrastruktur.
Hari ini, Anda mungkin menguji semua kode infrastruktur Anda secara manual dengan menggunakan, memvalidasi, dan menganggur. Terratest membantu Anda mengotomatiskan proses ini:
- Tulis tes di Go.
- Gunakan bantuan di Terratest untuk mengeksekusi alat IaC nyata Anda (misalnya, Terraform, Packer, dll.) Untuk menggunakan infrastruktur nyata (misalnya, server) di lingkungan nyata (misalnya, AWS).
- Gunakan bantuan di Terratest untuk memvalidasi bahwa infrastruktur berfungsi dengan benar di lingkungan itu dengan membuat permintaan HTTP, panggilan API, koneksi SSH, dll.
- Gunakan pembantu di Terratest untuk melepas semua pekerjaan di akhir tes.
Berikut ini contoh uji untuk beberapa kode Terraform:
terraformOptions := &terraform.Options {
// The path to where your Terraform code is located
TerraformDir: "../examples/terraform-basic-example",
}
// This will run `terraform init` and `terraform apply` and fail the test if there are any errors
terraform.InitAndApply(t, terraformOptions)
// At the end of the test, run `terraform destroy` to clean up any resources that were created
defer terraform.Destroy(t, terraformOptions)
// Run `terraform output` to get the value of an output variable
instanceUrl := terraform.Output(t, terraformOptions, "instance_url")
// Verify that we get back a 200 OK with the expected text
// It can take a minute or so for the Instance to boot up, so retry a few times
expected := "Hello, World"
maxRetries := 15
timeBetweenRetries := 5 * time.Second
http_helper.HttpGetWithRetry(t, instanceUrl, 200, expected, maxRetries, timeBetweenRetries)
Ini adalah tes integrasi, dan tergantung pada apa yang Anda uji, dapat memakan waktu 5 - 50 menit. Itu tidak cepat (meskipun menggunakan Docker dan tahap pengujian , Anda dapat mempercepat beberapa hal), dan Anda harus bekerja untuk membuat tes yang dapat diandalkan, tetapi itu layak waktu.
Lihat repo Terratest untuk dokumen dan banyak contoh berbagai jenis kode infrastruktur dan tes yang sesuai untuk mereka.