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  }