@@ -4,32 +4,38 @@ import (
44 "context"
55 "fmt"
66 "io"
7- "log"
87 "net"
98 "net/http"
109 "net/http/httptest"
1110 "net/url"
1211 "os"
1312 "path"
13+ "strings"
1414 "sync/atomic"
1515 "testing"
1616 "time"
1717)
1818
19- func Test_Basic (t * testing.T ) {
20- resp , err := Get ("http://httpbin.org/get" )
21- t .Logf ("%#v, %v" , resp , err )
22- //resp, _ = Post("http://httpbin.org/post", "application/json", strings.NewReader(`{"a": "b"}`))
23- //t.Log(resp.Text())
19+ var s * Server
20+
21+ func TestMain (m * testing.M ) {
22+ mux := NewServeMux ()
23+ mux .HandleFunc ("/" , func (w http.ResponseWriter , r * http.Request ) {
24+ w .Write ([]byte ("hello world" ))
25+ })
26+ s = NewServer (context .Background (), mux , URL ("http://127.0.0.1:65534" ))
27+
28+ go s .ListenAndServe ()
29+ defer s .Shutdown (context .Background ())
30+ os .Exit (m .Run ())
2431}
2532
2633func Test_ProxyGet (t * testing.T ) {
27- t .Log ("Testing get request" )
2834 sess := New (
2935 Header ("a" , "b" ),
3036 Cookie (http.Cookie {Name : "username" , Value : "golang" }),
3137 BasicAuth ("user" , "123456" ),
32- Timeout (3 * time .Second ),
38+ Timeout (5 * time .Second ),
3339 //Hosts(map[string][]string{"127.0.0.1:8080": {"192.168.1.1:80"}, "4.org:80": {"httpbin.org:80"}}),
3440 //Proxy("http://127.0.0.1:8080"),
3541 )
@@ -103,14 +109,14 @@ func Test_FormPost(t *testing.T) {
103109 //TraceLv(9),
104110 )
105111 if err != nil {
106- log .Fatal (err )
112+ t .Fatal (err )
107113 return
108114 }
109115 t .Log (resp .StatusCode , err , resp .Response .ContentLength , resp .Request .ContentLength )
110116
111117}
112118
113- func Test_Race (t * testing.T ) {
119+ func Test_DoRequestRace (t * testing.T ) {
114120 opts := Options {}
115121 ctx := context .Background ()
116122 t .Logf ("%#v" , opts )
@@ -176,7 +182,7 @@ func TestResponse_Download(t *testing.T) {
176182 sum += cnt
177183 return err
178184 })
179- resp , err := sess .DoRequest (context .Background (), Setup ( Redirect ))
185+ resp , err := sess .DoRequest (context .Background (), Trace ( ))
180186 if err != nil {
181187 t .Logf ("resp=%d, err=%s" , resp .Content , err )
182188 return
@@ -197,11 +203,25 @@ func TestRequestWithTimeout(t *testing.T) {
197203 }))
198204 defer server .Close ()
199205
206+ setup := func (name string ) func (next http.RoundTripper ) http.RoundTripper {
207+ return func (next http.RoundTripper ) http.RoundTripper {
208+ return RoundTripperFunc (func (r * http.Request ) (* http.Response , error ) {
209+ t .Logf ("timeout %s test prev" , name )
210+ defer t .Logf ("timeout %s test next" , name )
211+ return next .RoundTrip (r )
212+ })
213+ }
214+ }
215+
200216 // 测试超时情况
201- sess := New (Timeout (10 * time .Millisecond ))
202- _ , err := sess .DoRequest (context .Background (), URL (server .URL ))
217+ sess := New (Timeout (10 * time .Millisecond ), Logf (LogS ), Setup (setup ("session0" ), setup ("session1" )))
218+ _ , err := sess .DoRequest (context .Background (), URL (server .URL ), Setup (setup ("request0-0" ), setup ("request0-1" )))
219+ t .Logf ("timeout err=%v" , err )
203220 if err == nil {
204- t .Skip ("期望超时错误,但没有发生" )
221+ t .Error ("期望发生超时错误,但没有" )
222+ }
223+ if ! strings .Contains (err .Error (), "Client.Timeout exceeded" ) {
224+ t .Error ("发生错误,但不是超时" )
205225 }
206226
207227 // 测试非超时情况
0 commit comments