Skip to content

Commit 73ba1f5

Browse files
authored
Fix MaxFails default and Add extra tests for UpstreamServers
1 parent 136a767 commit 73ba1f5

File tree

2 files changed

+102
-15
lines changed

2 files changed

+102
-15
lines changed

client/nginx.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ type UpstreamServer struct {
3030
ID int `json:"id,omitempty"`
3131
Server string `json:"server"`
3232
MaxConns int `json:"max_conns"`
33-
MaxFails int `json:"max_fails"`
33+
MaxFails *int `json:"max_fails,omitempty"`
3434
FailTimeout string `json:"fail_timeout,omitempty"`
3535
SlowStart string `json:"slow_start,omitempty"`
3636
}
@@ -40,7 +40,7 @@ type StreamUpstreamServer struct {
4040
ID int `json:"id,omitempty"`
4141
Server string `json:"server"`
4242
MaxConns int `json:"max_conns"`
43-
MaxFails int `json:"max_fails"`
43+
MaxFails *int `json:"max_fails,omitempty"`
4444
FailTimeout string `json:"fail_timeout,omitempty"`
4545
SlowStart string `json:"slow_start,omitempty"`
4646
}

tests/client_test.go

Lines changed: 100 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ const (
1616
streamZoneSync = "zone_test_sync"
1717
)
1818

19+
var defaultMaxFails = 1
20+
1921
func TestStreamClient(t *testing.T) {
2022
httpClient := &http.Client{}
2123
c, err := client.NewNginxClient(httpClient, "http://127.0.0.1:8080/api")
@@ -161,20 +163,20 @@ func TestStreamClient(t *testing.T) {
161163
}
162164
}
163165

164-
// Test adding the slow_start property on an upstream server
165-
func TestStreamUpstreamServerSlowStart(t *testing.T) {
166+
func TestStreamUpstreamServer(t *testing.T) {
166167
httpClient := &http.Client{}
167168
c, err := client.NewNginxClient(httpClient, "http://127.0.0.1:8080/api")
168169
if err != nil {
169170
t.Fatalf("Error connecting to nginx: %v", err)
170171
}
171172

172-
// Add a server with slow_start
173-
// (And FailTimeout, since the default is 10s)
173+
maxFails := 64
174174
streamServer := client.StreamUpstreamServer{
175175
Server: "127.0.0.1:2000",
176-
SlowStart: "11s",
177-
FailTimeout: "10s",
176+
MaxConns: 321,
177+
MaxFails: &maxFails,
178+
FailTimeout: "21s",
179+
SlowStart: "12s",
178180
}
179181
err = c.AddStreamServer(streamUpstream, streamServer)
180182
if err != nil {
@@ -194,7 +196,7 @@ func TestStreamUpstreamServerSlowStart(t *testing.T) {
194196
t.Errorf("Expected: %v Got: %v", streamServer, servers[0])
195197
}
196198

197-
// remove upstream servers
199+
// remove stream upstream servers
198200
_, _, err = c.UpdateStreamServers(streamUpstream, []client.StreamUpstreamServer{})
199201
if err != nil {
200202
t.Errorf("Couldn't remove servers: %v", err)
@@ -353,20 +355,20 @@ func TestClient(t *testing.T) {
353355
}
354356
}
355357

356-
// Test adding the slow_start property on an upstream server
357-
func TestUpstreamServerSlowStart(t *testing.T) {
358+
func TestUpstreamServer(t *testing.T) {
358359
httpClient := &http.Client{}
359360
c, err := client.NewNginxClient(httpClient, "http://127.0.0.1:8080/api")
360361
if err != nil {
361362
t.Fatalf("Error connecting to nginx: %v", err)
362363
}
363364

364-
// Add a server with slow_start
365-
// (And FailTimeout, since the default is 10s)
365+
maxFails := 64
366366
server := client.UpstreamServer{
367367
Server: "127.0.0.1:2000",
368-
SlowStart: "11s",
369-
FailTimeout: "10s",
368+
MaxConns: 321,
369+
MaxFails: &maxFails,
370+
FailTimeout: "21s",
371+
SlowStart: "12s",
370372
}
371373
err = c.AddHTTPServer(upstream, server)
372374
if err != nil {
@@ -478,6 +480,48 @@ func TestStats(t *testing.T) {
478480
}
479481
}
480482

483+
func TestUpstreamServerDefaultParameters(t *testing.T) {
484+
httpClient := &http.Client{}
485+
c, err := client.NewNginxClient(httpClient, "http://127.0.0.1:8080/api")
486+
if err != nil {
487+
t.Fatalf("Error connecting to nginx: %v", err)
488+
}
489+
490+
server := client.UpstreamServer{
491+
Server: "127.0.0.1:2000",
492+
}
493+
494+
expected := client.UpstreamServer{
495+
Server: "127.0.0.1:2000",
496+
SlowStart: "0s",
497+
MaxFails: &defaultMaxFails,
498+
FailTimeout: "10s",
499+
}
500+
err = c.AddHTTPServer(upstream, server)
501+
if err != nil {
502+
t.Errorf("Error adding upstream server: %v", err)
503+
}
504+
servers, err := c.GetHTTPServers(upstream)
505+
if err != nil {
506+
t.Fatalf("Error getting HTTPServers: %v", err)
507+
}
508+
if len(servers) != 1 {
509+
t.Errorf("Too many servers")
510+
}
511+
// don't compare IDs
512+
servers[0].ID = 0
513+
514+
if !reflect.DeepEqual(expected, servers[0]) {
515+
t.Errorf("Expected: %v Got: %v", expected, servers[0])
516+
}
517+
518+
// remove upstream servers
519+
_, _, err = c.UpdateHTTPServers(upstream, []client.UpstreamServer{})
520+
if err != nil {
521+
t.Errorf("Couldn't remove servers: %v", err)
522+
}
523+
}
524+
481525
func TestStreamStats(t *testing.T) {
482526
httpClient := &http.Client{}
483527
c, err := client.NewNginxClient(httpClient, "http://127.0.0.1:8080/api")
@@ -547,6 +591,49 @@ func TestStreamStats(t *testing.T) {
547591
t.Errorf("Couldn't remove stream servers: %v", err)
548592
}
549593
}
594+
595+
func TestStreamUpstreamServerDefaultParameters(t *testing.T) {
596+
httpClient := &http.Client{}
597+
c, err := client.NewNginxClient(httpClient, "http://127.0.0.1:8080/api")
598+
if err != nil {
599+
t.Fatalf("Error connecting to nginx: %v", err)
600+
}
601+
602+
streamServer := client.StreamUpstreamServer{
603+
Server: "127.0.0.1:2000",
604+
}
605+
606+
expected := client.StreamUpstreamServer{
607+
Server: "127.0.0.1:2000",
608+
SlowStart: "0s",
609+
MaxFails: &defaultMaxFails,
610+
FailTimeout: "10s",
611+
}
612+
err = c.AddStreamServer(streamUpstream, streamServer)
613+
if err != nil {
614+
t.Errorf("Error adding upstream server: %v", err)
615+
}
616+
streamServers, err := c.GetStreamServers(streamUpstream)
617+
if err != nil {
618+
t.Fatalf("Error getting stream servers: %v", err)
619+
}
620+
if len(streamServers) != 1 {
621+
t.Errorf("Too many servers")
622+
}
623+
// don't compare IDs
624+
streamServers[0].ID = 0
625+
626+
if !reflect.DeepEqual(expected, streamServers[0]) {
627+
t.Errorf("Expected: %v Got: %v", expected, streamServers[0])
628+
}
629+
630+
// cleanup stream upstream servers
631+
_, _, err = c.UpdateStreamServers(streamUpstream, []client.StreamUpstreamServer{})
632+
if err != nil {
633+
t.Errorf("Couldn't remove stream servers: %v", err)
634+
}
635+
}
636+
550637
func TestKeyValue(t *testing.T) {
551638
zoneName := "zone_one"
552639
httpClient := &http.Client{}

0 commit comments

Comments
 (0)