github.com/iaas-resource-provision/iaas-rpc@v1.0.7-0.20211021023331-ed21f798c408/internal/backend/remote-state/consul/backend_test.go (about) 1 package consul 2 3 import ( 4 "flag" 5 "fmt" 6 "io/ioutil" 7 "os" 8 "testing" 9 "time" 10 11 "github.com/hashicorp/consul/testutil" 12 "github.com/iaas-resource-provision/iaas-rpc/internal/backend" 13 ) 14 15 func TestBackend_impl(t *testing.T) { 16 var _ backend.Backend = new(Backend) 17 } 18 19 var srv *testutil.TestServer 20 21 func TestMain(m *testing.M) { 22 if os.Getenv("TF_ACC") == "" && os.Getenv("TF_CONSUL_TEST") == "" { 23 fmt.Println("consul server tests require setting TF_ACC or TF_CONSUL_TEST") 24 return 25 } 26 27 var err error 28 srv, err = newConsulTestServer() 29 if err != nil { 30 fmt.Println(err) 31 os.Exit(1) 32 } 33 34 rc := m.Run() 35 srv.Stop() 36 os.Exit(rc) 37 } 38 39 func newConsulTestServer() (*testutil.TestServer, error) { 40 srv, err := testutil.NewTestServerConfig(func(c *testutil.TestServerConfig) { 41 c.LogLevel = "warn" 42 43 if !flag.Parsed() { 44 flag.Parse() 45 } 46 47 if !testing.Verbose() { 48 c.Stdout = ioutil.Discard 49 c.Stderr = ioutil.Discard 50 } 51 }) 52 53 return srv, err 54 } 55 56 func TestBackend(t *testing.T) { 57 path := fmt.Sprintf("tf-unit/%s", time.Now().String()) 58 59 // Get the backend. We need two to test locking. 60 b1 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ 61 "address": srv.HTTPAddr, 62 "path": path, 63 })) 64 65 b2 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ 66 "address": srv.HTTPAddr, 67 "path": path, 68 })) 69 70 // Test 71 backend.TestBackendStates(t, b1) 72 backend.TestBackendStateLocks(t, b1, b2) 73 } 74 75 func TestBackend_lockDisabled(t *testing.T) { 76 path := fmt.Sprintf("tf-unit/%s", time.Now().String()) 77 78 // Get the backend. We need two to test locking. 79 b1 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ 80 "address": srv.HTTPAddr, 81 "path": path, 82 "lock": false, 83 })) 84 85 b2 := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ 86 "address": srv.HTTPAddr, 87 "path": path + "different", // Diff so locking test would fail if it was locking 88 "lock": false, 89 })) 90 91 // Test 92 backend.TestBackendStates(t, b1) 93 backend.TestBackendStateLocks(t, b1, b2) 94 } 95 96 func TestBackend_gzip(t *testing.T) { 97 // Get the backend 98 b := backend.TestBackendConfig(t, New(), backend.TestWrapConfig(map[string]interface{}{ 99 "address": srv.HTTPAddr, 100 "path": fmt.Sprintf("tf-unit/%s", time.Now().String()), 101 "gzip": true, 102 })) 103 104 // Test 105 backend.TestBackendStates(t, b) 106 }