@@ -2,7 +2,7 @@ import { RetryErrorInfo, RetryErrorType } from "@aws-sdk/types";
2
2
3
3
import { RETRY_MODES } from "./config" ;
4
4
import { DEFAULT_RETRY_DELAY_BASE , INITIAL_RETRY_TOKENS } from "./constants" ;
5
- import { getDefaultRetryToken } from "./defaultRetryToken" ;
5
+ import { createDefaultRetryToken } from "./defaultRetryToken" ;
6
6
import { StandardRetryStrategy } from "./StandardRetryStrategy" ;
7
7
8
8
jest . mock ( "./defaultRetryToken" ) ;
@@ -18,7 +18,7 @@ describe(StandardRetryStrategy.name, () => {
18
18
const errorInfo = { errorType : "TRANSIENT" } as RetryErrorInfo ;
19
19
20
20
beforeEach ( ( ) => {
21
- ( getDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
21
+ ( createDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
22
22
} ) ;
23
23
24
24
afterEach ( ( ) => {
@@ -37,48 +37,40 @@ describe(StandardRetryStrategy.name, () => {
37
37
expect ( retryStrategy . mode ) . toStrictEqual ( RETRY_MODES . STANDARD ) ;
38
38
} ) ;
39
39
40
- describe ( "retryToken init" , ( ) => {
41
- it ( "sets retryToken" , ( ) => {
42
- const retryStrategy = new StandardRetryStrategy ( ( ) => Promise . resolve ( maxAttempts ) ) ;
43
- expect ( retryStrategy [ "retryToken" ] ) . toBe ( getDefaultRetryToken ( INITIAL_RETRY_TOKENS , DEFAULT_RETRY_DELAY_BASE ) ) ;
44
- } ) ;
45
- } ) ;
46
-
47
40
describe ( "acquireInitialRetryToken" , ( ) => {
48
41
it ( "returns default retryToken" , async ( ) => {
49
42
const retryStrategy = new StandardRetryStrategy ( ( ) => Promise . resolve ( maxAttempts ) ) ;
50
43
const retryToken = await retryStrategy . acquireInitialRetryToken ( retryTokenScope ) ;
51
- expect ( retryToken ) . toEqual ( getDefaultRetryToken ( INITIAL_RETRY_TOKENS , DEFAULT_RETRY_DELAY_BASE ) ) ;
44
+ expect ( retryToken ) . toEqual (
45
+ createDefaultRetryToken ( {
46
+ retryDelay : DEFAULT_RETRY_DELAY_BASE ,
47
+ retryCount : 0 ,
48
+ } )
49
+ ) ;
52
50
} ) ;
53
51
} ) ;
54
52
55
53
describe ( "refreshRetryTokenForRetry" , ( ) => {
56
54
it ( "refreshes the token" , async ( ) => {
57
- const getRetryTokenCount = jest . fn ( ) . mockReturnValue ( 1 ) ;
58
55
const getRetryCount = jest . fn ( ) . mockReturnValue ( 0 ) ;
59
56
const hasRetryTokens = jest . fn ( ) . mockReturnValue ( true ) ;
60
57
const mockRetryToken = {
61
58
getRetryCount,
62
- getRetryTokenCount,
63
59
hasRetryTokens,
64
60
} ;
65
- ( getDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
61
+ ( createDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
66
62
const retryStrategy = new StandardRetryStrategy ( ( ) => Promise . resolve ( maxAttempts ) ) ;
67
63
const token = await retryStrategy . acquireInitialRetryToken ( retryTokenScope ) ;
68
- const refreshedToken = await retryStrategy . refreshRetryTokenForRetry ( token , errorInfo ) ;
69
- expect ( getRetryTokenCount ) . toHaveBeenCalledTimes ( 1 ) ;
70
- expect ( getRetryTokenCount ) . toHaveBeenCalledWith ( errorInfo ) ;
71
- expect ( getRetryCount ) . toHaveBeenCalledTimes ( 1 ) ;
72
- expect ( hasRetryTokens ) . toHaveBeenCalledTimes ( 1 ) ;
73
- expect ( hasRetryTokens ) . toHaveBeenCalledWith ( errorInfo . errorType ) ;
64
+ await retryStrategy . refreshRetryTokenForRetry ( token , errorInfo ) ;
65
+ expect ( getRetryCount ) . toHaveBeenCalledTimes ( 3 ) ;
74
66
} ) ;
75
67
76
68
it ( "throws when attempts exceeds maxAttempts" , async ( ) => {
77
69
const mockRetryToken = {
78
70
getRetryCount : ( ) => 2 ,
79
71
getRetryTokenCount : ( errorInfo : any ) => 1 ,
80
72
} ;
81
- ( getDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
73
+ ( createDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
82
74
const retryStrategy = new StandardRetryStrategy ( ( ) => Promise . resolve ( 1 ) ) ;
83
75
const token = await retryStrategy . acquireInitialRetryToken ( retryTokenScope ) ;
84
76
try {
@@ -93,7 +85,7 @@ describe(StandardRetryStrategy.name, () => {
93
85
getRetryCount : ( ) => 5 ,
94
86
getRetryTokenCount : ( errorInfo : any ) => 1 ,
95
87
} ;
96
- ( getDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
88
+ ( createDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
97
89
const retryStrategy = new StandardRetryStrategy ( ( ) => Promise . resolve ( 5 ) ) ;
98
90
const token = await retryStrategy . acquireInitialRetryToken ( retryTokenScope ) ;
99
91
try {
@@ -109,7 +101,7 @@ describe(StandardRetryStrategy.name, () => {
109
101
getRetryTokenCount : ( errorInfo : any ) => 1 ,
110
102
hasRetryTokens : ( errorType : RetryErrorType ) => false ,
111
103
} ;
112
- ( getDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
104
+ ( createDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
113
105
const retryStrategy = new StandardRetryStrategy ( ( ) => Promise . resolve ( maxAttempts ) ) ;
114
106
const token = await retryStrategy . acquireInitialRetryToken ( retryTokenScope ) ;
115
107
try {
@@ -125,7 +117,7 @@ describe(StandardRetryStrategy.name, () => {
125
117
getRetryTokenCount : ( errorInfo : any ) => 1 ,
126
118
hasRetryTokens : ( errorType : RetryErrorType ) => true ,
127
119
} ;
128
- ( getDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
120
+ ( createDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
129
121
const retryStrategy = new StandardRetryStrategy ( ( ) => Promise . resolve ( maxAttempts ) ) ;
130
122
const token = await retryStrategy . acquireInitialRetryToken ( retryTokenScope ) ;
131
123
const errorInfo = {
@@ -137,24 +129,5 @@ describe(StandardRetryStrategy.name, () => {
137
129
expect ( error ) . toStrictEqual ( noRetryTokenAvailableError ) ;
138
130
}
139
131
} ) ;
140
-
141
- describe ( "recordSuccess" , ( ) => {
142
- it ( "releases tokens" , async ( ) => {
143
- const retryCost = 1 ;
144
- const releaseRetryTokens = jest . fn ( ) ;
145
- const getLastRetryCost = jest . fn ( ) . mockReturnValue ( retryCost ) ;
146
- const mockRetryToken = {
147
- releaseRetryTokens,
148
- getLastRetryCost,
149
- } ;
150
- ( getDefaultRetryToken as jest . Mock ) . mockReturnValue ( mockRetryToken ) ;
151
- const retryStrategy = new StandardRetryStrategy ( ( ) => Promise . resolve ( maxAttempts ) ) ;
152
- const token = await retryStrategy . acquireInitialRetryToken ( retryTokenScope ) ;
153
- retryStrategy . recordSuccess ( token ) ;
154
- expect ( releaseRetryTokens ) . toHaveBeenCalledTimes ( 1 ) ;
155
- expect ( releaseRetryTokens ) . toHaveBeenCalledWith ( retryCost ) ;
156
- expect ( getLastRetryCost ) . toHaveBeenCalledTimes ( 1 ) ;
157
- } ) ;
158
- } ) ;
159
132
} ) ;
160
133
} ) ;
0 commit comments