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  }