| package consul |
| |
| import ( |
| "flag" |
| "fmt" |
| "io/ioutil" |
| "os" |
| "testing" |
| "time" |
| |
| "github.com/hashicorp/consul/sdk/testutil" |
| "github.com/hashicorp/terraform/internal/backend" |
| ) |
| |
| func TestBackend_impl(t *testing.T) { |
| var _ backend.Backend = new(Backend) |
| } |
| |
| func newConsulTestServer(t *testing.T) *testutil.TestServer { |
| if os.Getenv("TF_ACC") == "" && os.Getenv("TF_CONSUL_TEST") == "" { |
| t.Skipf("consul server tests require setting TF_ACC or TF_CONSUL_TEST") |
| } |
| |
| srv, err := testutil.NewTestServerConfigT(t, func(c *testutil.TestServerConfig) { |
| c.LogLevel = "warn" |
| |
| if !flag.Parsed() { |
| flag.Parse() |
| } |
| |
| if !testing.Verbose() { |
| c.Stdout = ioutil.Discard |
| c.Stderr = ioutil.Discard |
| } |
| }) |
| |
| if err != nil { |
| t.Fatalf("failed to create consul test server: %s", err) |
| } |
| |
| srv.WaitForSerfCheck(t) |
| srv.WaitForLeader(t) |
| |
| return srv |
| } |
| |
| func TestBackend(t *testing.T) { |
| srv := newConsulTestServer(t) |
| |
| path := fmt.Sprintf("tf-unit/%s", time.Now().String()) |
| |
| // Get the backend. We need two to test locking. |
| b1 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ |
| "address": srv.HTTPAddr, |
| "path": path, |
| })) |
| |
| b2 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ |
| "address": srv.HTTPAddr, |
| "path": path, |
| })) |
| |
| // Test |
| backend.TestBackendStates(t, b1) |
| backend.TestBackendStateLocks(t, b1, b2) |
| } |
| |
| func TestBackend_lockDisabled(t *testing.T) { |
| srv := newConsulTestServer(t) |
| |
| path := fmt.Sprintf("tf-unit/%s", time.Now().String()) |
| |
| // Get the backend. We need two to test locking. |
| b1 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ |
| "address": srv.HTTPAddr, |
| "path": path, |
| "lock": false, |
| })) |
| |
| b2 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ |
| "address": srv.HTTPAddr, |
| "path": path + "different", // Diff so locking test would fail if it was locking |
| "lock": false, |
| })) |
| |
| // Test |
| backend.TestBackendStates(t, b1) |
| backend.TestBackendStateLocks(t, b1, b2) |
| } |
| |
| func TestBackend_gzip(t *testing.T) { |
| srv := newConsulTestServer(t) |
| |
| // Get the backend |
| b := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ |
| "address": srv.HTTPAddr, |
| "path": fmt.Sprintf("tf-unit/%s", time.Now().String()), |
| "gzip": true, |
| })) |
| |
| // Test |
| backend.TestBackendStates(t, b) |
| } |