github.imxd.top/hashicorp/consul@v1.4.5/agent/config/merge_test.go (about)

     1  package config
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/pascaldekloe/goe/verify"
     8  )
     9  
    10  func TestMerge(t *testing.T) {
    11  	tests := []struct {
    12  		desc string
    13  		cfgs []Config
    14  		want Config
    15  	}{
    16  		{
    17  			"top level fields",
    18  			[]Config{
    19  				{AdvertiseAddrLAN: pString("a")},
    20  				{AdvertiseAddrLAN: pString("b")},
    21  				{RaftProtocol: pInt(1)},
    22  				{RaftProtocol: pInt(2)},
    23  				{ServerMode: pBool(false)},
    24  				{ServerMode: pBool(true)},
    25  				{StartJoinAddrsLAN: []string{"a"}},
    26  				{StartJoinAddrsLAN: []string{"b"}},
    27  				{NodeMeta: map[string]string{"a": "b"}},
    28  				{NodeMeta: map[string]string{"c": "d"}},
    29  				{NodeMeta: map[string]string{"c": "e"}},
    30  				{Ports: Ports{DNS: pInt(1)}},
    31  				{Ports: Ports{DNS: pInt(2), HTTP: pInt(3)}},
    32  			},
    33  			Config{
    34  				AdvertiseAddrLAN:  pString("b"),
    35  				RaftProtocol:      pInt(2),
    36  				ServerMode:        pBool(true),
    37  				StartJoinAddrsLAN: []string{"a", "b"},
    38  				NodeMeta: map[string]string{
    39  					"a": "b",
    40  					"c": "e",
    41  				},
    42  				Ports: Ports{DNS: pInt(2), HTTP: pInt(3)},
    43  			},
    44  		},
    45  	}
    46  
    47  	for _, tt := range tests {
    48  		t.Run(tt.desc, func(t *testing.T) {
    49  			got, want := Merge(tt.cfgs...), tt.want
    50  			if !verify.Values(t, "", got, want) {
    51  				t.FailNow()
    52  			}
    53  		})
    54  	}
    55  }
    56  
    57  func pBool(v bool) *bool                { return &v }
    58  func pInt(v int) *int                   { return &v }
    59  func pString(v string) *string          { return &v }
    60  func pDuration(v time.Duration) *string { s := v.String(); return &s }
    61  func pFloat64(v float64) *float64       { return &v }