From b585339d28c8cc3230a834fe01b00eb07b7a6634 Mon Sep 17 00:00:00 2001 From: qydysky Date: Sat, 15 Apr 2023 22:42:37 +0800 Subject: [PATCH] update --- reqf/Reqf.go | 8 +++++--- reqf/Reqf_test.go | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/reqf/Reqf.go b/reqf/Reqf.go index e9c528b..d7d73ac 100644 --- a/reqf/Reqf.go +++ b/reqf/Reqf.go @@ -4,12 +4,12 @@ import ( "bytes" "context" "errors" + "fmt" "io" "net" "net/http" "net/url" "os" - "strconv" "strings" "sync" "time" @@ -103,13 +103,15 @@ func (t *Req) Reqf(val Rval) error { _val := val for SleepTime, Retry := _val.SleepTime, _val.Retry; Retry >= 0; Retry -= 1 { + for len(t.cancelFs) != 0 { + <-t.cancelFs + } t.err = t.Reqf_1(_val) if t.err == nil || IsCancel(t.err) { break } time.Sleep(time.Duration(SleepTime) * time.Millisecond) } - t.UsedTime = time.Since(beginTime) t.running.Done() }() @@ -249,7 +251,7 @@ func (t *Req) Reqf_1(val Rval) (err error) { } if resp.StatusCode >= 400 { - err = errors.New(strconv.Itoa(resp.StatusCode)) + err = fmt.Errorf("%d %s", resp.StatusCode, http.StatusText(resp.StatusCode)) } var ws []io.Writer diff --git a/reqf/Reqf_test.go b/reqf/Reqf_test.go index 6783785..6133ff6 100644 --- a/reqf/Reqf_test.go +++ b/reqf/Reqf_test.go @@ -6,6 +6,7 @@ import ( "encoding/json" "io" "net/http" + "strconv" "testing" "time" @@ -21,6 +22,10 @@ func init() { WriteTimeout: time.Second * time.Duration(10), }) s.Handle(map[string]func(http.ResponseWriter, *http.Request){ + `/code`: func(w http.ResponseWriter, r *http.Request) { + code, _ := strconv.Atoi(r.URL.Query().Get(`code`)) + w.WriteHeader(code) + }, `/no`: func(w http.ResponseWriter, _ *http.Request) { w.Write([]byte("abc强强强强")) }, @@ -82,6 +87,18 @@ func init() { time.Sleep(time.Second) } +func Test_req13(t *testing.T) { + r := New() + e := r.Reqf(Rval{ + Url: "http://" + addr + "/code?code=403", + Timeout: 1000, + Retry: 2, + }) + if e.Error() != "403 Forbidden" { + t.Fatal() + } +} + func Test_req7(t *testing.T) { r := New() r.Reqf(Rval{ -- 2.39.2