Skip to content

Commit

Permalink
Add Additional Upstream Server Parameters
Browse files Browse the repository at this point in the history
  • Loading branch information
Vighneswar Rao Bojja authored and bvighnesha committed Sep 5, 2019
1 parent 73ba1f5 commit 9a5eb22
Show file tree
Hide file tree
Showing 3 changed files with 63 additions and 0 deletions.
10 changes: 10 additions & 0 deletions client/nginx.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,12 @@ type UpstreamServer struct {
MaxFails *int `json:"max_fails,omitempty"`
FailTimeout string `json:"fail_timeout,omitempty"`
SlowStart string `json:"slow_start,omitempty"`
Route string `json:"route"`
Backup bool `json:"backup"`
Down bool `json:"down"`
Drain bool `json:"drain,omitempty"`
Weight *int `json:"weight,omitempty"`
Service string `json:"service,omitempty"`
}

// StreamUpstreamServer lets you configure Stream upstreams.
Expand All @@ -43,6 +49,10 @@ type StreamUpstreamServer struct {
MaxFails *int `json:"max_fails,omitempty"`
FailTimeout string `json:"fail_timeout,omitempty"`
SlowStart string `json:"slow_start,omitempty"`
Backup bool `json:"backup"`
Down bool `json:"down"`
Weight *int `json:"weight,omitempty"`
Service string `json:"service,omitempty"`
}

type apiErrorResponse struct {
Expand Down
7 changes: 7 additions & 0 deletions docker/test.conf
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,11 @@ server {
health_check interval=10 fails=3 passes=1;
}
status_zone test;

}

upstream test-drain {
zone test-drain 64k;

server 127.0.0.1:9001 drain;
}
46 changes: 46 additions & 0 deletions tests/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ const (
)

var defaultMaxFails = 1
var defaultWeight = 1

func TestStreamClient(t *testing.T) {
httpClient := &http.Client{}
Expand Down Expand Up @@ -171,12 +172,17 @@ func TestStreamUpstreamServer(t *testing.T) {
}

maxFails := 64
weight := 10

streamServer := client.StreamUpstreamServer{
Server: "127.0.0.1:2000",
MaxConns: 321,
MaxFails: &maxFails,
FailTimeout: "21s",
SlowStart: "12s",
Weight: &weight,
Backup: true,
Down: true,
}
err = c.AddStreamServer(streamUpstream, streamServer)
if err != nil {
Expand Down Expand Up @@ -363,12 +369,17 @@ func TestUpstreamServer(t *testing.T) {
}

maxFails := 64
weight := 10
server := client.UpstreamServer{
Server: "127.0.0.1:2000",
MaxConns: 321,
MaxFails: &maxFails,
FailTimeout: "21s",
SlowStart: "12s",
Weight: &weight,
Route: "test",
Backup: true,
Down: true,
}
err = c.AddHTTPServer(upstream, server)
if err != nil {
Expand Down Expand Up @@ -496,6 +507,7 @@ func TestUpstreamServerDefaultParameters(t *testing.T) {
SlowStart: "0s",
MaxFails: &defaultMaxFails,
FailTimeout: "10s",
Weight: &defaultWeight,
}
err = c.AddHTTPServer(upstream, server)
if err != nil {
Expand Down Expand Up @@ -608,6 +620,7 @@ func TestStreamUpstreamServerDefaultParameters(t *testing.T) {
SlowStart: "0s",
MaxFails: &defaultMaxFails,
FailTimeout: "10s",
Weight: &defaultWeight,
}
err = c.AddStreamServer(streamUpstream, streamServer)
if err != nil {
Expand Down Expand Up @@ -955,3 +968,36 @@ func compareStreamUpstreamServers(x []client.StreamUpstreamServer, y []client.St

return reflect.DeepEqual(xServers, yServers)
}

func TestUpstreamServerWithDrain(t *testing.T) {
httpClient := &http.Client{}
c, err := client.NewNginxClient(httpClient, "http://127.0.0.1:8080/api")
if err != nil {
t.Fatalf("Error connecting to nginx: %v", err)
}

server := client.UpstreamServer{
Server: "127.0.0.1:9001",
MaxFails: &defaultMaxFails,
FailTimeout: "10s",
SlowStart: "0s",
Weight: &defaultWeight,
Drain: true,
}

// Get existing upstream servers
servers, err := c.GetHTTPServers("test-drain")
if err != nil {
t.Fatalf("Error getting HTTPServers: %v", err)
}

if len(servers) != 1 {
t.Errorf("Too many servers")
}

servers[0].ID = 0

if !reflect.DeepEqual(server, servers[0]) {
t.Errorf("Expected: %v Got: %v", server, servers[0])
}
}

0 comments on commit 9a5eb22

Please sign in to comment.