Skip to content

Commit 84168a5

Browse files
isaachawleypleshakov
authored andcommitted
Add slow-start to upstream server (#1)
1 parent d90bfd3 commit 84168a5

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

client/nginx_client.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ type UpstreamServer struct {
2525
Server string `json:"server"`
2626
MaxFails int64 `json:"max_fails"`
2727
FailTimeout string `json:"fail_timeout,omitempty"`
28+
SlowStart string `json:"slow_start,omitempty"`
2829
}
2930

3031
type apiErrorResponse struct {

tests/client_test.go

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ func TestClient(t *testing.T) {
6565
// test updating servers
6666
servers1 := []client.UpstreamServer{
6767
client.UpstreamServer{
68-
Server: "127.0.0.2:8001",
68+
Server: "127.0.0.2:8001",
6969
},
7070
client.UpstreamServer{
7171
Server: "127.0.0.2:8002",
@@ -163,6 +163,42 @@ func TestClient(t *testing.T) {
163163
t.Errorf("The number of servers %v != 0", len(servers))
164164
}
165165
}
166+
// Test adding the slow_start property on an upstream server
167+
func TestUpstreamServerSlowStart(t *testing.T) {
168+
httpClient := &http.Client{}
169+
c, err := client.NewNginxClient(httpClient, "http://127.0.0.1:8080/api")
170+
if err != nil {
171+
t.Fatalf("Error connecting to nginx: %v", err)
172+
}
173+
174+
// Add a server with slow_start
175+
// (And FailTimeout, since the default is 10s)
176+
server := client.UpstreamServer{
177+
Server: "127.0.0.1:2000",
178+
SlowStart: "11s",
179+
FailTimeout: "10s",
180+
}
181+
err = c.AddHTTPServer(upstream, server)
182+
if err != nil {
183+
t.Errorf("Error adding upstream server: %v", err)
184+
}
185+
servers, err := c.GetHTTPServers(upstream)
186+
if len(servers) != 1 {
187+
t.Errorf("Too many servers")
188+
}
189+
// don't compare IDs
190+
servers[0].ID = 0
191+
192+
if !reflect.DeepEqual(server, servers[0]) {
193+
t.Errorf("Expected: %v Got: %v", server, servers[0])
194+
}
195+
196+
// remove upstream servers
197+
_, _, err = c.UpdateHTTPServers(upstream, []client.UpstreamServer{})
198+
if err != nil {
199+
t.Errorf("Couldn't remove servers: %v", err)
200+
}
201+
}
166202

167203
func compareUpstreamServers(x []client.UpstreamServer, y []client.UpstreamServer) bool {
168204
var xServers []string

0 commit comments

Comments
 (0)