github.com/aavshr/aws-sdk-go@v1.41.3/service/ec2/retryer_test.go (about) 1 package ec2 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/aavshr/aws-sdk-go/aws" 8 "github.com/aavshr/aws-sdk-go/aws/client" 9 "github.com/aavshr/aws-sdk-go/awstesting/unit" 10 ) 11 12 func TestCustomRetryRules(t *testing.T) { 13 svc := New(unit.Session, &aws.Config{Region: aws.String("us-west-2")}) 14 req, _ := svc.ModifyNetworkInterfaceAttributeRequest(&ModifyNetworkInterfaceAttributeInput{ 15 NetworkInterfaceId: aws.String("foo"), 16 }) 17 18 duration := req.Retryer.RetryRules(req) 19 if duration < time.Second*1 || duration > time.Second*2 { 20 t.Errorf("expected duration to be between 1s and 2s, but received %v", duration) 21 } 22 23 req.RetryCount = 15 24 duration = req.Retryer.RetryRules(req) 25 if duration < time.Second*4 || duration > time.Second*8 { 26 t.Errorf("expected duration to be between 4s and 8s, but received %v", duration) 27 } 28 } 29 30 func TestCustomRetryer_WhenRetrierSpecified(t *testing.T) { 31 svc := New(unit.Session, &aws.Config{Region: aws.String("us-west-2"), 32 Retryer: client.DefaultRetryer{ 33 NumMaxRetries: 4, 34 MinThrottleDelay: 50 * time.Millisecond, 35 MinRetryDelay: 10 * time.Millisecond, 36 MaxThrottleDelay: 200 * time.Millisecond, 37 MaxRetryDelay: 300 * time.Millisecond, 38 }, 39 }) 40 41 if _, ok := svc.Client.Retryer.(client.DefaultRetryer); !ok { 42 t.Error("expected default retryer, but received otherwise") 43 } 44 45 req, _ := svc.AssignPrivateIpAddressesRequest(&AssignPrivateIpAddressesInput{ 46 NetworkInterfaceId: aws.String("foo"), 47 }) 48 49 d := req.Retryer.(client.DefaultRetryer) 50 51 if d.NumMaxRetries != 4 { 52 t.Errorf("expected max retries to be %v, got %v", 4, d.NumMaxRetries) 53 } 54 55 if d.MinRetryDelay != 10*time.Millisecond { 56 t.Errorf("expected min retry delay to be %v, got %v", "10 ms", d.MinRetryDelay) 57 } 58 59 if d.MinThrottleDelay != 50*time.Millisecond { 60 t.Errorf("expected min throttle delay to be %v, got %v", "50 ms", d.MinThrottleDelay) 61 } 62 63 if d.MaxRetryDelay != 300*time.Millisecond { 64 t.Errorf("expected max retry delay to be %v, got %v", "300 ms", d.MaxRetryDelay) 65 } 66 67 if d.MaxThrottleDelay != 200*time.Millisecond { 68 t.Errorf("expected max throttle delay to be %v, got %v", "200 ms", d.MaxThrottleDelay) 69 } 70 } 71 72 func TestCustomRetryer(t *testing.T) { 73 svc := New(unit.Session, &aws.Config{Region: aws.String("us-west-2")}) 74 75 req, _ := svc.AssignPrivateIpAddressesRequest(&AssignPrivateIpAddressesInput{ 76 NetworkInterfaceId: aws.String("foo"), 77 }) 78 79 d := req.Retryer.(client.DefaultRetryer) 80 81 if d.NumMaxRetries != client.DefaultRetryerMaxNumRetries { 82 t.Errorf("expected max retries to be %v, got %v", client.DefaultRetryerMaxNumRetries, d.NumMaxRetries) 83 } 84 85 if d.MinRetryDelay != customRetryerMinRetryDelay { 86 t.Errorf("expected min retry delay to be %v, got %v", customRetryerMinRetryDelay, d.MinRetryDelay) 87 } 88 89 if d.MinThrottleDelay != customRetryerMinRetryDelay { 90 t.Errorf("expected min throttle delay to be %v, got %v", customRetryerMinRetryDelay, d.MinThrottleDelay) 91 } 92 93 if d.MaxRetryDelay != customRetryerMaxRetryDelay { 94 t.Errorf("expected max retry delay to be %v, got %v", customRetryerMaxRetryDelay, d.MaxRetryDelay) 95 } 96 97 if d.MaxThrottleDelay != customRetryerMaxRetryDelay { 98 t.Errorf("expected max throttle delay to be %v, got %v", customRetryerMaxRetryDelay, d.MaxThrottleDelay) 99 } 100 }