185 lines
9.4 KiB
Go
185 lines
9.4 KiB
Go
![]() |
package circonus
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"testing"
|
||
|
|
||
|
"github.com/hashicorp/terraform/helper/acctest"
|
||
|
"github.com/hashicorp/terraform/helper/resource"
|
||
|
)
|
||
|
|
||
|
func TestAccCirconusCheckHTTP_basic(t *testing.T) {
|
||
|
checkName := fmt.Sprintf("Terraform test: noit's jezebel availability check - %s", acctest.RandString(5))
|
||
|
|
||
|
resource.Test(t, resource.TestCase{
|
||
|
PreCheck: func() { testAccPreCheck(t) },
|
||
|
Providers: testAccProviders,
|
||
|
CheckDestroy: testAccCheckDestroyCirconusCheckBundle,
|
||
|
Steps: []resource.TestStep{
|
||
|
{
|
||
|
Config: fmt.Sprintf(testAccCirconusCheckHTTPConfigFmt, checkName),
|
||
|
Check: resource.ComposeTestCheckFunc(
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "active", "true"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "collector.#", "1"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "collector.2388330941.id", "/broker/1"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "http.#", "1"),
|
||
|
// resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.auth_method", ""),
|
||
|
// resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.auth_password", ""),
|
||
|
// resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.auth_user", ""),
|
||
|
// resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.body_regexp", ""),
|
||
|
// resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.ca_chain", ""),
|
||
|
// resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.certificate_file", ""),
|
||
|
// resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.ciphers", ""),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.code", `^200$`),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.extract", `HTTP/1.1 200 OK`),
|
||
|
// resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.key_file", ""),
|
||
|
// resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.payload", ""),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.headers.%", "1"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.headers.Host", "127.0.0.1"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.version", "1.1"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.method", "GET"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.read_limit", "1048576"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "http.4213422905.url", "http://127.0.0.1:8083/resmon"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "name", checkName),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "notes", "Check to make sure jezebel is working as expected"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "period", "60s"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.#", "4"),
|
||
|
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.42262635.active", "true"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.42262635.name", "code"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.42262635.tags.#", "4"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.42262635.tags.30226350", "app:circonus"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.42262635.tags.3219687752", "app:jezebel"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.42262635.tags.1543130091", "lifecycle:unittests"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.42262635.tags.3241999189", "source:circonus"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.42262635.type", "text"),
|
||
|
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.1136493216.active", "true"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.1136493216.name", "duration"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.1136493216.tags.#", "4"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.1136493216.tags.30226350", "app:circonus"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.1136493216.tags.3219687752", "app:jezebel"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.1136493216.tags.1543130091", "lifecycle:unittests"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.1136493216.tags.3241999189", "source:circonus"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.1136493216.type", "numeric"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.1136493216.unit", "seconds"),
|
||
|
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.4246441943.active", "true"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.4246441943.name", "tt_connect"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.4246441943.tags.#", "4"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.4246441943.tags.30226350", "app:circonus"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.4246441943.tags.3219687752", "app:jezebel"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.4246441943.tags.1543130091", "lifecycle:unittests"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.4246441943.tags.3241999189", "source:circonus"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.4246441943.type", "numeric"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.4246441943.unit", "milliseconds"),
|
||
|
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.3695203246.active", "true"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.3695203246.name", "tt_firstbyte"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.3695203246.tags.#", "4"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.3695203246.tags.30226350", "app:circonus"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.3695203246.tags.3219687752", "app:jezebel"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.3695203246.tags.1543130091", "lifecycle:unittests"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.3695203246.tags.3241999189", "source:circonus"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.3695203246.type", "numeric"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "metric.3695203246.unit", "milliseconds"),
|
||
|
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "tags.#", "4"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "tags.30226350", "app:circonus"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "tags.3219687752", "app:jezebel"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "tags.1543130091", "lifecycle:unittests"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "tags.3241999189", "source:circonus"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "target", "127.0.0.1"),
|
||
|
resource.TestCheckResourceAttr("circonus_check.jezebel", "type", "http"),
|
||
|
),
|
||
|
},
|
||
|
},
|
||
|
})
|
||
|
}
|
||
|
|
||
|
const testAccCirconusCheckHTTPConfigFmt = `
|
||
|
variable "http_check_tags" {
|
||
|
type = "list"
|
||
|
default = [ "app:circonus", "app:jezebel", "lifecycle:unittests", "source:circonus" ]
|
||
|
}
|
||
|
|
||
|
resource "circonus_metric" "status_code" {
|
||
|
name = "code"
|
||
|
tags = [ "${var.http_check_tags}" ]
|
||
|
type = "text"
|
||
|
}
|
||
|
|
||
|
resource "circonus_metric" "request_duration" {
|
||
|
name = "duration"
|
||
|
tags = [ "${var.http_check_tags}" ]
|
||
|
type = "numeric"
|
||
|
unit = "seconds"
|
||
|
}
|
||
|
|
||
|
resource "circonus_metric" "request_ttconnect" {
|
||
|
name = "tt_connect"
|
||
|
tags = [ "${var.http_check_tags}" ]
|
||
|
type = "numeric"
|
||
|
unit = "milliseconds"
|
||
|
}
|
||
|
|
||
|
resource "circonus_metric" "request_ttfb" {
|
||
|
name = "tt_firstbyte"
|
||
|
tags = [ "${var.http_check_tags}" ]
|
||
|
type = "numeric"
|
||
|
unit = "milliseconds"
|
||
|
}
|
||
|
|
||
|
resource "circonus_check" "jezebel" {
|
||
|
active = true
|
||
|
name = "%s"
|
||
|
notes = "Check to make sure jezebel is working as expected"
|
||
|
period = "60s"
|
||
|
|
||
|
collector {
|
||
|
id = "/broker/1"
|
||
|
}
|
||
|
|
||
|
http {
|
||
|
code = "^200$"
|
||
|
extract = "HTTP/1.1 200 OK"
|
||
|
headers = {
|
||
|
Host = "127.0.0.1",
|
||
|
}
|
||
|
version = "1.1"
|
||
|
method = "GET"
|
||
|
read_limit = 1048576
|
||
|
url = "http://127.0.0.1:8083/resmon"
|
||
|
}
|
||
|
|
||
|
metric {
|
||
|
name = "${circonus_metric.status_code.name}"
|
||
|
tags = [ "${circonus_metric.status_code.tags}" ]
|
||
|
type = "${circonus_metric.status_code.type}"
|
||
|
}
|
||
|
|
||
|
metric {
|
||
|
name = "${circonus_metric.request_duration.name}"
|
||
|
tags = [ "${circonus_metric.request_duration.tags}" ]
|
||
|
type = "${circonus_metric.request_duration.type}"
|
||
|
unit = "${circonus_metric.request_duration.unit}"
|
||
|
}
|
||
|
|
||
|
metric {
|
||
|
name = "${circonus_metric.request_ttconnect.name}"
|
||
|
tags = [ "${circonus_metric.request_ttconnect.tags}" ]
|
||
|
type = "${circonus_metric.request_ttconnect.type}"
|
||
|
unit = "${circonus_metric.request_ttconnect.unit}"
|
||
|
}
|
||
|
|
||
|
metric {
|
||
|
name = "${circonus_metric.request_ttfb.name}"
|
||
|
tags = [ "${circonus_metric.request_ttfb.tags}" ]
|
||
|
type = "${circonus_metric.request_ttfb.type}"
|
||
|
unit = "${circonus_metric.request_ttfb.unit}"
|
||
|
}
|
||
|
|
||
|
tags = [ "${var.http_check_tags}" ]
|
||
|
}
|
||
|
`
|