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 { diff --git a/tests/client_test.go b/tests/client_test.go index 69c4b663..ae734d2a 100644 --- a/tests/client_test.go +++ b/tests/client_test.go @@ -65,7 +65,7 @@ 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", }, client.UpstreamServer{ Server: "127.0.0.2:8002", @@ -163,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