ソースを参照

Merge pull request #39055 from thaJeztah/add_with_timeout_option

Add client.WithTimeout() option
Akihiro Suda 6 年 前
コミット
ad9362bb15
2 ファイル変更25 行追加0 行削除
  1. 9 0
      client/options.go
  2. 16 0
      client/options_test.go

+ 9 - 0
client/options.go

@@ -6,6 +6,7 @@ import (
 	"net/http"
 	"os"
 	"path/filepath"
+	"time"
 
 	"github.com/docker/go-connections/sockets"
 	"github.com/docker/go-connections/tlsconfig"
@@ -102,6 +103,14 @@ func WithHTTPClient(client *http.Client) Opt {
 	}
 }
 
+// WithTimeout configures the time limit for requests made by the HTTP client
+func WithTimeout(timeout time.Duration) Opt {
+	return func(c *Client) error {
+		c.client.Timeout = timeout
+		return nil
+	}
+}
+
 // WithHTTPHeaders overrides the client default http headers
 func WithHTTPHeaders(headers map[string]string) Opt {
 	return func(c *Client) error {

+ 16 - 0
client/options_test.go

@@ -0,0 +1,16 @@
+package client
+
+import (
+	"testing"
+	"time"
+
+	"gotest.tools/assert"
+)
+
+func TestOptionWithTimeout(t *testing.T) {
+	timeout := 10 * time.Second
+	c, err := NewClientWithOpts(WithTimeout(timeout))
+	assert.NilError(t, err)
+	assert.Check(t, c.client != nil)
+	assert.Equal(t, c.client.Timeout, timeout)
+}