github.com/xmidt-org/webpa-common@v1.11.9/service/zk/options_test.go (about)

     1  package zk
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func testRegistrationDefault(t *testing.T, r Registration) {
    11  	assert := assert.New(t)
    12  
    13  	assert.Equal(DefaultServiceName, r.name())
    14  	assert.Equal(DefaultPath, r.path())
    15  	assert.Equal(DefaultAddress, r.address())
    16  	assert.Equal(DefaultPort, r.port())
    17  	assert.Equal(DefaultScheme, r.scheme())
    18  }
    19  
    20  func testRegistrationCustom(t *testing.T) {
    21  	var (
    22  		assert = assert.New(t)
    23  		r      = Registration{
    24  			Name:    "testService",
    25  			Path:    "/testy/test/test",
    26  			Address: "funzo.net",
    27  			Port:    1234,
    28  			Scheme:  "ftp",
    29  		}
    30  	)
    31  
    32  	assert.Equal("testService", r.name())
    33  	assert.Equal("/testy/test/test", r.path())
    34  	assert.Equal("funzo.net", r.address())
    35  	assert.Equal(1234, r.port())
    36  	assert.Equal("ftp", r.scheme())
    37  }
    38  
    39  func TestRegistration(t *testing.T) {
    40  	t.Run("Default", func(t *testing.T) {
    41  		testRegistrationDefault(t, Registration{})
    42  	})
    43  
    44  	t.Run("Custom", testRegistrationCustom)
    45  }
    46  
    47  func testClientDefault(t *testing.T, c *Client) {
    48  	assert := assert.New(t)
    49  
    50  	assert.Equal([]string{DefaultServer}, c.servers())
    51  	assert.Equal(DefaultConnectTimeout, c.connectTimeout())
    52  	assert.Equal(DefaultSessionTimeout, c.sessionTimeout())
    53  }
    54  
    55  func testClientCustom(t *testing.T) {
    56  	var (
    57  		assert = assert.New(t)
    58  		c      = Client{
    59  			Connection:     "localhost:1234",
    60  			Servers:        []string{"somewhere.com:8888"},
    61  			ConnectTimeout: 13 * time.Hour,
    62  			SessionTimeout: 1239 * time.Minute,
    63  		}
    64  	)
    65  
    66  	assert.Equal([]string{"localhost:1234", "somewhere.com:8888"}, c.servers())
    67  	assert.Equal(13*time.Hour, c.connectTimeout())
    68  	assert.Equal(1239*time.Minute, c.sessionTimeout())
    69  }
    70  
    71  func TestClient(t *testing.T) {
    72  	t.Run("Default", func(t *testing.T) {
    73  		testClientDefault(t, nil)
    74  		testClientDefault(t, new(Client))
    75  	})
    76  
    77  	t.Run("Custom", testClientCustom)
    78  }
    79  
    80  func testOptionsDefault(t *testing.T, o *Options) {
    81  	var (
    82  		assert = assert.New(t)
    83  		c      = o.client()
    84  	)
    85  
    86  	assert.Equal([]string{DefaultServer}, c.servers())
    87  	assert.Equal(DefaultConnectTimeout, c.connectTimeout())
    88  	assert.Equal(DefaultSessionTimeout, c.sessionTimeout())
    89  	assert.Len(o.registrations(), 0)
    90  	assert.Len(o.watches(), 0)
    91  }
    92  
    93  func testOptionsCustom(t *testing.T) {
    94  	var (
    95  		assert = assert.New(t)
    96  		o      = Options{
    97  			Client: Client{
    98  				Connection:     "localhost:1234",
    99  				Servers:        []string{"somewhere.com:8888"},
   100  				ConnectTimeout: 13 * time.Hour,
   101  				SessionTimeout: 1239 * time.Minute,
   102  			},
   103  			Registrations: []Registration{
   104  				Registration{
   105  					Name:    "testService",
   106  					Path:    "/testy/test/test",
   107  					Address: "funzo.net",
   108  					Port:    1234,
   109  					Scheme:  "ftp",
   110  				},
   111  			},
   112  			Watches: []string{"/testy/test/test"},
   113  		}
   114  
   115  		c = o.client()
   116  	)
   117  
   118  	assert.Equal([]string{"localhost:1234", "somewhere.com:8888"}, c.servers())
   119  	assert.Equal(13*time.Hour, c.connectTimeout())
   120  	assert.Equal(1239*time.Minute, c.sessionTimeout())
   121  	assert.Equal(
   122  		[]Registration{
   123  			Registration{
   124  				Name:    "testService",
   125  				Path:    "/testy/test/test",
   126  				Address: "funzo.net",
   127  				Port:    1234,
   128  				Scheme:  "ftp",
   129  			},
   130  		},
   131  		o.registrations(),
   132  	)
   133  
   134  	assert.Equal([]string{"/testy/test/test"}, o.watches())
   135  }
   136  
   137  func TestOptions(t *testing.T) {
   138  	t.Run("Default", func(t *testing.T) {
   139  		testOptionsDefault(t, nil)
   140  		testOptionsDefault(t, new(Options))
   141  	})
   142  
   143  	t.Run("Custom", testOptionsCustom)
   144  }