aboutsummaryrefslogtreecommitdiff
path: root/client_test.go
diff options
context:
space:
mode:
authorGravatar Darío <dgrripoll@gmail.com> 2021-06-16 12:55:56 +0200
committerGravatar GitHub <noreply@github.com> 2021-06-16 12:55:56 +0200
commitbe13b504abc5fe227a924c0d8896b289c13b0379 (patch)
tree82d169a0f26a886eedc2053512a4322b0f551497 /client_test.go
parentDon't unwrap io.LimitedReader (diff)
downloadfasthttp-be13b504abc5fe227a924c0d8896b289c13b0379.tar.gz
fasthttp-be13b504abc5fe227a924c0d8896b289c13b0379.tar.bz2
fasthttp-be13b504abc5fe227a924c0d8896b289c13b0379.zip
Defined Transport for the client (#1045)
* Defined Transport for the client * Added Transport test
Diffstat (limited to 'client_test.go')
-rw-r--r--client_test.go64
1 files changed, 64 insertions, 0 deletions
diff --git a/client_test.go b/client_test.go
index a6be61e..0a61f0d 100644
--- a/client_test.go
+++ b/client_test.go
@@ -1952,6 +1952,70 @@ func TestClientRetryRequestWithCustomDecider(t *testing.T) {
}
}
+func TestHostClientTransport(t *testing.T) {
+ t.Parallel()
+
+ ln := fasthttputil.NewInmemoryListener()
+
+ s := &Server{
+ Handler: func(ctx *RequestCtx) {
+ ctx.WriteString("abcd") //nolint:errcheck
+ },
+ }
+ serverStopCh := make(chan struct{})
+ go func() {
+ if err := s.Serve(ln); err != nil {
+ t.Errorf("unexpected error: %s", err)
+ }
+ close(serverStopCh)
+ }()
+
+ c := &HostClient{
+ Addr: "foobar",
+ Transport: func() TransportFunc {
+ c, _ := ln.Dial()
+
+ br := bufio.NewReader(c)
+ bw := bufio.NewWriter(c)
+
+ return func(req *Request, res *Response) error {
+ if err := req.Write(bw); err != nil {
+ return err
+ }
+
+ if err := bw.Flush(); err != nil {
+ return err
+ }
+
+ return res.Read(br)
+ }
+ }(),
+ }
+
+ for i := 0; i < 5; i++ {
+ statusCode, body, err := c.Get(nil, "http://aaaa.com/bbb/cc")
+ if err != nil {
+ t.Fatalf("unexpected error: %s", err)
+ }
+ if statusCode != StatusOK {
+ t.Fatalf("unexpected status code %d. Expecting %d", statusCode, StatusOK)
+ }
+ if string(body) != "abcd" {
+ t.Fatalf("unexpected body %q. Expecting %q", body, "abcd")
+ }
+ }
+
+ if err := ln.Close(); err != nil {
+ t.Fatalf("unexpected error: %s", err)
+ }
+
+ select {
+ case <-serverStopCh:
+ case <-time.After(time.Second):
+ t.Fatalf("timeout")
+ }
+}
+
type writeErrorConn struct {
net.Conn
}