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
138138 {
139139 if (null !== $ after = $ headers ['retry-after ' ][0 ] ?? null ) {
140140 if (is_numeric ($ after )) {
141- return (int ) $ after * 1000 ;
141+ return (int ) ( $ after * 1000 ) ;
142142 }
143143
144144 if (false !== $ time = strtotime ($ after )) {
Original file line number Diff line number Diff line change @@ -187,4 +187,42 @@ public function testCancelOnTimeout()
187187 $ response ->cancel ();
188188 }
189189 }
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+ }
190228}
You can’t perform that action at this time.
0 commit comments