Skip to content

Commit d691796

Browse files
committed
testing timeout from samalba#77
1 parent b6f99fa commit d691796

2 files changed

Lines changed: 35 additions & 0 deletions

File tree

dockerclient_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@ package dockerclient
33
import (
44
"bytes"
55
"fmt"
6+
"net/url"
67
"reflect"
78
"strings"
89
"testing"
10+
"time"
911

1012
"github.com/docker/docker/pkg/stdcopy"
1113
)
@@ -28,6 +30,22 @@ func testDockerClient(t *testing.T) *DockerClient {
2830
return client
2931
}
3032

33+
func TestDockerClientTimeout(t *testing.T) {
34+
client, err := NewDockerClientTimeout(testHTTPServer.URL, nil, 3*time.Second)
35+
if err != nil {
36+
t.Fatal("Cannot init the docker client")
37+
}
38+
hangingURL := fmt.Sprintf("%s/%s/hangFor", testHTTPServer.URL, APIVersion)
39+
_, err = client.HTTPClient.PostForm(hangingURL, url.Values{"numSeconds": {"4"}})
40+
if err == nil {
41+
t.Fatal("Expected failure from POST request")
42+
}
43+
_, err = client.HTTPClient.PostForm(hangingURL, url.Values{"numSeconds": {"1"}})
44+
if err != nil {
45+
t.Fatalf("Got error from POST request: %q", err)
46+
}
47+
}
48+
3149
func TestInfo(t *testing.T) {
3250
client := testDockerClient(t)
3351
info, err := client.Info()

engine_mock_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ func init() {
3030
r.HandleFunc(baseURL+"/containers/{id}/changes", handleContainerChanges).Methods("GET")
3131
r.HandleFunc(baseURL+"/containers/{id}/kill", handleContainerKill).Methods("POST")
3232
r.HandleFunc(baseURL+"/images/create", handleImagePull).Methods("POST")
33+
// this is used to test timeout functionality
34+
r.HandleFunc(baseURL+"/hangFor", handleHang).Methods("POST")
35+
3336
testHTTPServer = httptest.NewServer(handlerAccessLog(r))
3437
}
3538

@@ -228,3 +231,17 @@ func handlerGetContainers(w http.ResponseWriter, r *http.Request) {
228231
}
229232
w.Write([]byte(body))
230233
}
234+
235+
func handleHang(w http.ResponseWriter, r *http.Request) {
236+
if err := r.ParseForm(); err != nil {
237+
panic(err)
238+
}
239+
numSecondsString := r.FormValue("numSeconds")
240+
numSeconds, err := strconv.Atoi(numSecondsString)
241+
if err != nil {
242+
panic(err)
243+
}
244+
245+
time.Sleep(time.Duration(numSeconds) * time.Second)
246+
fmt.Printf("done sleeping! %d", numSeconds)
247+
}

0 commit comments

Comments
 (0)