File tree Expand file tree Collapse file tree 2 files changed +39
-1
lines changed Expand file tree Collapse file tree 2 files changed +39
-1
lines changed Original file line number Diff line number Diff line change @@ -138,7 +138,7 @@ private function getDelayFromHeader(array $headers): ?int
138
138
{
139
139
if (null !== $ after = $ headers ['retry-after ' ][0 ] ?? null ) {
140
140
if (is_numeric ($ after )) {
141
- return (int ) $ after * 1000 ;
141
+ return (int ) ( $ after * 1000 ) ;
142
142
}
143
143
144
144
if (false !== $ time = strtotime ($ after )) {
Original file line number Diff line number Diff line change @@ -187,4 +187,42 @@ public function testCancelOnTimeout()
187
187
$ response ->cancel ();
188
188
}
189
189
}
190
+
191
+ public function testRetryWithDelay ()
192
+ {
193
+ $ retryAfter = '0.46 ' ;
194
+
195
+ $ client = new RetryableHttpClient (
196
+ new MockHttpClient ([
197
+ new MockResponse ('' , [
198
+ 'http_code ' => 503 ,
199
+ 'response_headers ' => [
200
+ 'retry-after ' => $ retryAfter ,
201
+ ],
202
+ ]),
203
+ new MockResponse ('' , [
204
+ 'http_code ' => 200 ,
205
+ ]),
206
+ ]),
207
+ new GenericRetryStrategy (),
208
+ 1 ,
209
+ $ logger = new class () extends TestLogger {
210
+ public array $ context = [];
211
+
212
+ public function log ($ level , $ message , array $ context = []): void
213
+ {
214
+ $ this ->context = $ context ;
215
+ parent ::log ($ level , $ message , $ context );
216
+ }
217
+ },
218
+ );
219
+
220
+ $ client ->request ('GET ' , 'http://example.com/foo-bar ' )->getContent ();
221
+
222
+ $ delay = $ logger ->context ['delay ' ] ?? null ;
223
+
224
+ $ this ->assertArrayHasKey ('delay ' , $ logger ->context );
225
+ $ this ->assertNotNull ($ delay );
226
+ $ this ->assertSame ((int ) ($ retryAfter * 1000 ), $ delay );
227
+ }
190
228
}
You can’t perform that action at this time.
0 commit comments