Skip to content

Commit 41f2a99

Browse files
committed
Fix parameter values in upstream servers
1 parent 722e910 commit 41f2a99

File tree

4 files changed

+152
-22
lines changed

4 files changed

+152
-22
lines changed

cmd/sync/aws.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,16 @@ func NewAWSClient(data []byte) (*AWSClient, error) {
6161
// GetUpstreams returns the Upstreams list
6262
func (client *AWSClient) GetUpstreams() []Upstream {
6363
var upstreams []Upstream
64-
for _, awsU := range client.config.Upstreams {
64+
for i := 0; i < len(client.config.Upstreams); i++ {
6565
u := Upstream{
66-
Name: awsU.Name,
67-
Port: awsU.Port,
68-
Kind: awsU.Kind,
69-
ScalingGroup: awsU.AutoscalingGroup,
70-
MaxConns: &awsU.MaxConns,
71-
MaxFails: &awsU.MaxFails,
72-
FailTimeout: awsU.FailTimeout,
73-
SlowStart: awsU.SlowStart,
66+
Name: client.config.Upstreams[i].Name,
67+
Port: client.config.Upstreams[i].Port,
68+
Kind: client.config.Upstreams[i].Kind,
69+
ScalingGroup: client.config.Upstreams[i].AutoscalingGroup,
70+
MaxConns: &client.config.Upstreams[i].MaxConns,
71+
MaxFails: &client.config.Upstreams[i].MaxFails,
72+
FailTimeout: client.config.Upstreams[i].FailTimeout,
73+
SlowStart: client.config.Upstreams[i].SlowStart,
7474
}
7575
upstreams = append(upstreams, u)
7676
}
@@ -167,7 +167,7 @@ func (client *AWSClient) GetPrivateIPsForScalingGroup(name string) ([]string, er
167167

168168
type awsConfig struct {
169169
Region string
170-
Upstreams []awsUpstream
170+
Upstreams []*awsUpstream
171171
}
172172

173173
type awsUpstream struct {

cmd/sync/aws_test.go

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ type testInputAWS struct {
88
}
99

1010
func getValidAWSConfig() *awsConfig {
11-
upstreams := []awsUpstream{
11+
upstreams := []*awsUpstream{
1212
{
1313
Name: "backend1",
1414
AutoscalingGroup: "backend-group",
@@ -89,3 +89,68 @@ func TestValidateAWSConfigValid(t *testing.T) {
8989
t.Errorf("validateAWSConfig() failed for the valid config: %v", err)
9090
}
9191
}
92+
93+
func TestGetUpstreamsAWS(t *testing.T) {
94+
cfg := getValidAWSConfig()
95+
var upstreams = []*awsUpstream{
96+
{
97+
Name: "127.0.0.1",
98+
Port: 80,
99+
MaxFails: 1,
100+
MaxConns: 2,
101+
SlowStart: "5s",
102+
FailTimeout: "10s",
103+
},
104+
{
105+
Name: "127.0.0.2",
106+
Port: 80,
107+
MaxFails: 2,
108+
MaxConns: 3,
109+
SlowStart: "6s",
110+
FailTimeout: "11s",
111+
},
112+
}
113+
cfg.Upstreams = upstreams
114+
c := AWSClient{config: cfg}
115+
116+
ups := c.GetUpstreams()
117+
for _, u := range ups {
118+
found := false
119+
for _, cfgU := range cfg.Upstreams {
120+
if u.Name == cfgU.Name {
121+
if !areEqualUpstreamsAWS(cfgU, u) {
122+
t.Errorf("GetUpstreams() returned a wrong Upstream %+v for the configuration %+v", u, cfgU)
123+
}
124+
found = true
125+
break
126+
}
127+
}
128+
if !found {
129+
t.Errorf("Upstream %+v not found in configuration.", u)
130+
}
131+
}
132+
}
133+
134+
func areEqualUpstreamsAWS(u1 *awsUpstream, u2 Upstream) bool {
135+
if u1.Port != u2.Port {
136+
return false
137+
}
138+
139+
if u1.FailTimeout != u2.FailTimeout {
140+
return false
141+
}
142+
143+
if u1.SlowStart != u2.SlowStart {
144+
return false
145+
}
146+
147+
if u1.MaxConns != *u2.MaxConns {
148+
return false
149+
}
150+
151+
if u1.MaxFails != *u2.MaxFails {
152+
return false
153+
}
154+
155+
return true
156+
}

cmd/sync/azure.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -130,16 +130,16 @@ func (client *AzureClient) configure() error {
130130
// GetUpstreams returns the Upstreams list
131131
func (client *AzureClient) GetUpstreams() []Upstream {
132132
var upstreams []Upstream
133-
for _, azureU := range client.config.Upstreams {
133+
for i := 0; i < len(client.config.Upstreams); i++ {
134134
u := Upstream{
135-
Name: azureU.Name,
136-
Port: azureU.Port,
137-
Kind: azureU.Kind,
138-
ScalingGroup: azureU.VMScaleSet,
139-
MaxConns: &azureU.MaxConns,
140-
MaxFails: &azureU.MaxFails,
141-
FailTimeout: azureU.FailTimeout,
142-
SlowStart: azureU.SlowStart,
135+
Name: client.config.Upstreams[i].Name,
136+
Port: client.config.Upstreams[i].Port,
137+
Kind: client.config.Upstreams[i].Kind,
138+
ScalingGroup: client.config.Upstreams[i].VMScaleSet,
139+
MaxConns: &client.config.Upstreams[i].MaxConns,
140+
MaxFails: &client.config.Upstreams[i].MaxFails,
141+
FailTimeout: client.config.Upstreams[i].FailTimeout,
142+
SlowStart: client.config.Upstreams[i].SlowStart,
143143
}
144144
upstreams = append(upstreams, u)
145145
}
@@ -149,7 +149,7 @@ func (client *AzureClient) GetUpstreams() []Upstream {
149149
type azureConfig struct {
150150
SubscriptionID string `yaml:"subscription_id"`
151151
ResourceGroupName string `yaml:"resource_group_name"`
152-
Upstreams []azureUpstream
152+
Upstreams []*azureUpstream
153153
}
154154

155155
type azureUpstream struct {

cmd/sync/azure_test.go

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ type testInputAzure struct {
1212
}
1313

1414
func getValidAzureConfig() *azureConfig {
15-
upstreams := []azureUpstream{
15+
upstreams := []*azureUpstream{
1616
{
1717
Name: "backend1",
1818
VMScaleSet: "backend-group",
@@ -156,3 +156,68 @@ func TestGetPrimaryIPFromInterfaceIPConfigurationFail(t *testing.T) {
156156
}
157157
}
158158
}
159+
160+
func TestGetUpstreamsAzure(t *testing.T) {
161+
cfg := getValidAzureConfig()
162+
var upstreams = []*azureUpstream{
163+
{
164+
Name: "127.0.0.1",
165+
Port: 80,
166+
MaxFails: 1,
167+
MaxConns: 2,
168+
SlowStart: "5s",
169+
FailTimeout: "10s",
170+
},
171+
{
172+
Name: "127.0.0.2",
173+
Port: 80,
174+
MaxFails: 2,
175+
MaxConns: 3,
176+
SlowStart: "6s",
177+
FailTimeout: "11s",
178+
},
179+
}
180+
cfg.Upstreams = upstreams
181+
c := AzureClient{config: cfg}
182+
183+
ups := c.GetUpstreams()
184+
for _, u := range ups {
185+
found := false
186+
for _, cfgU := range cfg.Upstreams {
187+
if u.Name == cfgU.Name {
188+
if !areEqualUpstreamsAzure(cfgU, u) {
189+
t.Errorf("GetUpstreams() returned a wrong Upstream %+v for the configuration %+v", u, cfgU)
190+
}
191+
found = true
192+
break
193+
}
194+
}
195+
if !found {
196+
t.Errorf("Upstream %+v not found in configuration.", u)
197+
}
198+
}
199+
}
200+
201+
func areEqualUpstreamsAzure(u1 *azureUpstream, u2 Upstream) bool {
202+
if u1.Port != u2.Port {
203+
return false
204+
}
205+
206+
if u1.FailTimeout != u2.FailTimeout {
207+
return false
208+
}
209+
210+
if u1.SlowStart != u2.SlowStart {
211+
return false
212+
}
213+
214+
if u1.MaxConns != *u2.MaxConns {
215+
return false
216+
}
217+
218+
if u1.MaxFails != *u2.MaxFails {
219+
return false
220+
}
221+
222+
return true
223+
}

0 commit comments

Comments
 (0)