github.com/uber/kraken@v0.1.4/lib/hostlist/list_test.go (about)

     1  // Copyright (c) 2016-2019 Uber Technologies, Inc.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  package hostlist
    15  
    16  import (
    17  	"testing"
    18  
    19  	"github.com/uber/kraken/utils/stringset"
    20  
    21  	"github.com/stretchr/testify/require"
    22  )
    23  
    24  func TestListResolve(t *testing.T) {
    25  	require := require.New(t)
    26  
    27  	addrs := []string{"a:80", "b:80", "c:80"}
    28  
    29  	l, err := New(Config{Static: addrs})
    30  	require.NoError(err)
    31  
    32  	require.ElementsMatch(addrs, l.Resolve().ToSlice())
    33  }
    34  
    35  func TestAttachPortIfMissing(t *testing.T) {
    36  	addrs, err := attachPortIfMissing(stringset.New("x", "y:5", "z"), 7)
    37  	require.NoError(t, err)
    38  	require.Equal(t, stringset.New("x:7", "y:5", "z:7"), addrs)
    39  }
    40  
    41  func TestAttachPortIfMissingError(t *testing.T) {
    42  	_, err := attachPortIfMissing(stringset.New("a:b:c"), 7)
    43  	require.Error(t, err)
    44  }
    45  
    46  func TestInvalidConfig(t *testing.T) {
    47  	tests := []struct {
    48  		desc   string
    49  		config Config
    50  	}{
    51  		{"dns missing port", Config{DNS: "some-dns"}},
    52  		{"static missing port", Config{Static: []string{"a:80", "b"}}},
    53  	}
    54  	for _, test := range tests {
    55  		t.Run(test.desc, func(t *testing.T) {
    56  			_, err := New(test.config)
    57  			require.Error(t, err)
    58  		})
    59  	}
    60  }