Merge pull request #25794 from chenchun/timeout

Add default timeout to pkg/plugins/client
This commit is contained in:
Anusha Ragunathan 2016-09-12 11:27:36 -07:00 committed by GitHub
commit a4d1365bce
2 changed files with 24 additions and 1 deletions

View file

@ -16,7 +16,8 @@ import (
)
const (
defaultTimeOut = 30
defaultTimeOut = 30
defaultHTTPTimeOut = 32 * time.Second
)
// NewClient creates a new plugin client (http).
@ -53,6 +54,7 @@ func NewClient(addr string, tlsConfig *tlsconfig.Options) (*Client, error) {
func NewClientWithTransport(tr transport.Transport) *Client {
return &Client{
http: &http.Client{
Timeout: defaultHTTPTimeOut,
Transport: tr,
},
requestFactory: tr,

View file

@ -6,6 +6,7 @@ import (
"net/http/httptest"
"net/url"
"reflect"
"strings"
"testing"
"time"
@ -30,6 +31,26 @@ func teardownRemotePluginServer() {
}
}
func TestHttpTimeout(t *testing.T) {
addr := setupRemotePluginServer()
defer teardownRemotePluginServer()
stop := false // we need this variable to stop the http server
mux.HandleFunc("/hang", func(w http.ResponseWriter, r *http.Request) {
for {
if stop {
break
}
time.Sleep(5 * time.Second)
}
})
c, _ := NewClient(addr, &tlsconfig.Options{InsecureSkipVerify: true})
_, err := c.callWithRetry("hang", nil, false)
stop = true
if err == nil || !strings.Contains(err.Error(), "request canceled") {
t.Fatalf("The request should be canceled %v", err)
}
}
func TestFailedConnection(t *testing.T) {
c, _ := NewClient("tcp://127.0.0.1:1", &tlsconfig.Options{InsecureSkipVerify: true})
_, err := c.callWithRetry("Service.Method", nil, false)