From f8436bfb90a0f941cbc92bfb365ec63224811bbf Mon Sep 17 00:00:00 2001 From: isaac Date: Thu, 19 Apr 2018 10:36:51 +0100 Subject: [PATCH 1/3] Add slow-start to upstream server --- client/nginx_client.go | 1 + 1 file changed, 1 insertion(+) diff --git a/client/nginx_client.go b/client/nginx_client.go index 3cf82265..4f857ded 100644 --- a/client/nginx_client.go +++ b/client/nginx_client.go @@ -25,6 +25,7 @@ type UpstreamServer struct { Server string `json:"server"` MaxFails int64 `json:"max_fails"` FailTimeout string `json:"fail_timeout,omitempty"` + SlowStart string `json:"slow_start,omitempty"` } type apiErrorResponse struct { From 47e733a62dbcb13035e338dfcc20ce7ee18eefb3 Mon Sep 17 00:00:00 2001 From: isaac Date: Thu, 19 Apr 2018 11:19:13 +0100 Subject: [PATCH 2/3] Add slow-start in test --- tests/client_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/client_test.go b/tests/client_test.go index 69c4b663..0cb8a0da 100644 --- a/tests/client_test.go +++ b/tests/client_test.go @@ -65,7 +65,8 @@ func TestClient(t *testing.T) { // test updating servers servers1 := []client.UpstreamServer{ client.UpstreamServer{ - Server: "127.0.0.2:8001", + Server: "127.0.0.2:8001", + SlowStart: "4s", }, client.UpstreamServer{ Server: "127.0.0.2:8002", From c3bef9b99ab8bc928d43053ba9b27070fd4d92a7 Mon Sep 17 00:00:00 2001 From: isaac Date: Thu, 19 Apr 2018 16:03:27 +0100 Subject: [PATCH 3/3] Add full test case for slow_start --- tests/client_test.go | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/tests/client_test.go b/tests/client_test.go index 0cb8a0da..ae734d2a 100644 --- a/tests/client_test.go +++ b/tests/client_test.go @@ -66,7 +66,6 @@ func TestClient(t *testing.T) { servers1 := []client.UpstreamServer{ client.UpstreamServer{ Server: "127.0.0.2:8001", - SlowStart: "4s", }, client.UpstreamServer{ Server: "127.0.0.2:8002", @@ -164,6 +163,42 @@ func TestClient(t *testing.T) { t.Errorf("The number of servers %v != 0", len(servers)) } } +// Test adding the slow_start property on an upstream server +func TestUpstreamServerSlowStart(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) + } + + // Add a server with slow_start + // (And FailTimeout, since the default is 10s) + server := client.UpstreamServer{ + Server: "127.0.0.1:2000", + SlowStart: "11s", + FailTimeout: "10s", + } + err = c.AddHTTPServer(upstream, server) + if err != nil { + t.Errorf("Error adding upstream server: %v", err) + } + servers, err := c.GetHTTPServers(upstream) + if len(servers) != 1 { + t.Errorf("Too many servers") + } + // don't compare IDs + servers[0].ID = 0 + + if !reflect.DeepEqual(server, servers[0]) { + t.Errorf("Expected: %v Got: %v", server, servers[0]) + } + + // remove upstream servers + _, _, err = c.UpdateHTTPServers(upstream, []client.UpstreamServer{}) + if err != nil { + t.Errorf("Couldn't remove servers: %v", err) + } +} func compareUpstreamServers(x []client.UpstreamServer, y []client.UpstreamServer) bool { var xServers []string