terraform/builtin/providers/ultradns/resource_ultradns_probe_htt...

261 lines
8.9 KiB
Go

package ultradns
import (
"fmt"
"testing"
"github.com/Ensighten/udnssdk"
"github.com/hashicorp/terraform/helper/resource"
)
func TestAccUltradnsProbeHTTP(t *testing.T) {
var record udnssdk.RRSet
domain := "ultradns.phinze.com"
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccTcpoolCheckDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: fmt.Sprintf(testCfgProbeHTTPMinimal, domain, domain),
Check: resource.ComposeTestCheckFunc(
testAccCheckUltradnsRecordExists("ultradns_tcpool.test-probe-http-minimal", &record),
// Specified
resource.TestCheckResourceAttr("ultradns_probe_http.it", "zone", domain),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "name", "test-probe-http-minimal"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "pool_record", "10.2.0.1"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "agents.4091180299", "DALLAS"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "agents.2144410488", "AMSTERDAM"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "interval", "ONE_MINUTE"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "threshold", "2"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.method", "GET"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.url", "http://localhost/index"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.#", "2"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1959786783.name", "connect"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1959786783.warning", "20"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1959786783.critical", "20"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1959786783.fail", "20"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1349952704.name", "run"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1349952704.warning", "60"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1349952704.critical", "60"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1349952704.fail", "60"),
),
},
resource.TestStep{
Config: fmt.Sprintf(testCfgProbeHTTPMaximal, domain, domain),
Check: resource.ComposeTestCheckFunc(
testAccCheckUltradnsRecordExists("ultradns_tcpool.test-probe-http-maximal", &record),
// Specified
resource.TestCheckResourceAttr("ultradns_probe_http.it", "zone", domain),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "name", "test-probe-http-maximal"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "pool_record", "10.2.1.1"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "agents.4091180299", "DALLAS"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "agents.2144410488", "AMSTERDAM"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "interval", "ONE_MINUTE"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "threshold", "2"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.method", "POST"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.url", "http://localhost/index"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.#", "4"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1349952704.name", "run"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1349952704.warning", "1"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1349952704.critical", "2"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1349952704.fail", "3"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.2720402232.name", "avgConnect"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.2720402232.warning", "4"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.2720402232.critical", "5"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.2720402232.fail", "6"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.896769211.name", "avgRun"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.896769211.warning", "7"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.896769211.critical", "8"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.896769211.fail", "9"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1959786783.name", "connect"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1959786783.warning", "10"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1959786783.critical", "11"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.transaction.0.limit.1959786783.fail", "12"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.total_limits.0.warning", "13"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.total_limits.0.critical", "14"),
resource.TestCheckResourceAttr("ultradns_probe_http.it", "http_probe.0.total_limits.0.fail", "15"),
),
},
},
})
}
const testCfgProbeHTTPMinimal = `
resource "ultradns_tcpool" "test-probe-http-minimal" {
zone = "%s"
name = "test-probe-http-minimal"
ttl = 30
description = "traffic controller pool with probes"
run_probes = true
act_on_probes = true
max_to_lb = 2
rdata {
host = "10.2.0.1"
state = "NORMAL"
run_probes = true
priority = 1
failover_delay = 0
threshold = 1
weight = 2
}
rdata {
host = "10.2.0.2"
state = "NORMAL"
run_probes = true
priority = 2
failover_delay = 0
threshold = 1
weight = 2
}
backup_record_rdata = "10.2.0.3"
}
resource "ultradns_probe_http" "it" {
zone = "%s"
name = "test-probe-http-minimal"
pool_record = "10.2.0.1"
agents = ["DALLAS", "AMSTERDAM"]
interval = "ONE_MINUTE"
threshold = 2
http_probe {
transaction {
method = "GET"
url = "http://localhost/index"
limit {
name = "run"
warning = 60
critical = 60
fail = 60
}
limit {
name = "connect"
warning = 20
critical = 20
fail = 20
}
}
}
depends_on = ["ultradns_tcpool.test-probe-http-minimal"]
}
`
const testCfgProbeHTTPMaximal = `
resource "ultradns_tcpool" "test-probe-http-maximal" {
zone = "%s"
name = "test-probe-http-maximal"
ttl = 30
description = "traffic controller pool with probes"
run_probes = true
act_on_probes = true
max_to_lb = 2
rdata {
host = "10.2.1.1"
state = "NORMAL"
run_probes = true
priority = 1
failover_delay = 0
threshold = 1
weight = 2
}
rdata {
host = "10.2.1.2"
state = "NORMAL"
run_probes = true
priority = 2
failover_delay = 0
threshold = 1
weight = 2
}
backup_record_rdata = "10.2.1.3"
}
resource "ultradns_probe_http" "it" {
zone = "%s"
name = "test-probe-http-maximal"
pool_record = "10.2.1.1"
agents = ["DALLAS", "AMSTERDAM"]
interval = "ONE_MINUTE"
threshold = 2
http_probe {
transaction {
method = "POST"
url = "http://localhost/index"
transmitted_data = "{}"
follow_redirects = true
limit {
name = "run"
warning = 1
critical = 2
fail = 3
}
limit {
name = "avgConnect"
warning = 4
critical = 5
fail = 6
}
limit {
name = "avgRun"
warning = 7
critical = 8
fail = 9
}
limit {
name = "connect"
warning = 10
critical = 11
fail = 12
}
}
total_limits {
warning = 13
critical = 14
fail = 15
}
}
depends_on = ["ultradns_tcpool.test-probe-http-maximal"]
}
`