1package request_test 2 3import ( 4 "strings" 5 "testing" 6 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/aws/request" 9 "github.com/aws/aws-sdk-go/awstesting/mock" 10) 11 12func TestRequestCancelRetry(t *testing.T) { 13 c := make(chan struct{}) 14 reqNum := 0 15 s := mock.NewMockClient(&aws.Config{ 16 MaxRetries: aws.Int(1), 17 }) 18 s.Handlers.Validate.Clear() 19 s.Handlers.Unmarshal.Clear() 20 s.Handlers.UnmarshalMeta.Clear() 21 s.Handlers.UnmarshalError.Clear() 22 s.Handlers.Send.PushFront(func(r *request.Request) { 23 reqNum++ 24 }) 25 out := &testData{} 26 r := s.NewRequest(&request.Operation{Name: "Operation"}, nil, out) 27 r.HTTPRequest.Cancel = c 28 close(c) 29 30 err := r.Send() 31 if !strings.Contains(err.Error(), "canceled") { 32 t.Errorf("expect canceled in error, %v", err) 33 } 34 if e, a := 1, reqNum; e != a { 35 t.Errorf("expect %v, got %v", e, a) 36 } 37} 38