diff options
author | Darío <dgrripoll@gmail.com> | 2021-06-16 12:55:56 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-16 12:55:56 +0200 |
commit | be13b504abc5fe227a924c0d8896b289c13b0379 (patch) | |
tree | 82d169a0f26a886eedc2053512a4322b0f551497 /client_test.go | |
parent | Don't unwrap io.LimitedReader (diff) | |
download | fasthttp-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.go | 64 |
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 } |