เมื่อเร็ว ๆ นี้เราได้เปิดTerratestที่มาจากแหล่งซึ่งเป็นมีดกองทัพของเราสำหรับการทดสอบรหัสโครงสร้างพื้นฐาน
วันนี้คุณอาจทดสอบโค้ดโครงสร้างพื้นฐานทั้งหมดด้วยตนเองโดยปรับใช้ตรวจสอบและเลิกใช้งาน Terratest ช่วยให้คุณทำกระบวนการนี้โดยอัตโนมัติ:
- ทดสอบการเขียนใน Go
- ใช้ผู้ช่วยเหลือใน Terratest เพื่อเรียกใช้เครื่องมือ IaC จริง (เช่น Terraform, Packer ฯลฯ ) เพื่อปรับใช้โครงสร้างพื้นฐานจริง (เช่นเซิร์ฟเวอร์) ในสภาพแวดล้อมจริง (เช่น AWS)
- ใช้ตัวช่วยใน Terratest เพื่อตรวจสอบว่าโครงสร้างพื้นฐานทำงานอย่างถูกต้องในสภาพแวดล้อมนั้นโดยการร้องขอ HTTP การเรียก API การเชื่อมต่อ SSH และอื่น ๆ
- ใช้ผู้ช่วยเหลือใน Terratest เพื่อเลิกใช้งานทุกอย่างเมื่อสิ้นสุดการทดสอบ
นี่คือตัวอย่างทดสอบสำหรับรหัส 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)
สิ่งเหล่านี้คือการทดสอบการรวมระบบและอาจใช้เวลา 5 - 50 นาที มันไม่เร็ว (แม้ว่าจะใช้นักเทียบท่าและขั้นตอนการทดสอบคุณสามารถเร่งความเร็วบางอย่างได้) และคุณจะต้องทำงานเพื่อให้การทดสอบนั้นเชื่อถือได้ แต่คุ้มค่ากับเวลา
ตรวจสอบเอกสารrepatest Terratestสำหรับเอกสารและตัวอย่างมากมายของรหัสโครงสร้างพื้นฐานประเภทต่างๆและการทดสอบที่เกี่ยวข้องสำหรับพวกเขา