@@ -284,17 +284,13 @@ public function hasMaxRetryDuration() {
284284
285285 /**
286286 * @test
287- * @testWith [{"retryCount": 1, "shouldHaveFailed": false}]
288- * [{"retryCount": 2, "shouldHaveFailed": false}]
289- * [{"retryCount": 2, "travelSeconds": 29, "shouldHaveFailed": false}]
290- * [{"retryCount": 2, "travelSeconds": 31, "shouldHaveFailed": true}]
287+ * @dataProvider whenIsJobFailingProvider
291288 */
292289 public function job_max_attempts_is_ignored_if_has_retry_until ($ example )
293290 {
294291 // Arrange
295292 $ this ->request ->headers ->add (['X-CloudTasks-TaskRetryCount ' => $ example ['retryCount ' ]]);
296293
297- $ now = Carbon::now ()->getTimestamp ();
298294 if (array_key_exists ('travelSeconds ' , $ example )) {
299295 Carbon::setTestNow (Carbon::now ()->addSeconds ($ example ['travelSeconds ' ]));
300296 }
@@ -346,6 +342,105 @@ public function getFirstAttempt() {
346342 }
347343 }
348344
345+ public function whenIsJobFailingProvider ()
346+ {
347+ $ this ->createApplication ();
348+
349+ // 8.x behavior: if retryUntil, only check that.
350+ // 6.x behavior: if retryUntil, check that, otherwise check maxAttempts
351+
352+ // max retry count is 3
353+ // max retryUntil is 30 seconds
354+
355+ if (version_compare (app ()->version (), '8.0.0 ' , '>= ' )) {
356+ return [
357+ [
358+ [
359+ 'retryCount ' => 1 ,
360+ 'shouldHaveFailed ' => false ,
361+ ],
362+ ],
363+ [
364+ [
365+ 'retryCount ' => 2 ,
366+ 'shouldHaveFailed ' => false ,
367+ ],
368+ ],
369+ [
370+ [
371+ 'retryCount ' => 1 ,
372+ 'travelSeconds ' => 29 ,
373+ 'shouldHaveFailed ' => false ,
374+ ],
375+ ],
376+ [
377+ [
378+ 'retryCount ' => 1 ,
379+ 'travelSeconds ' => 31 ,
380+ 'shouldHaveFailed ' => true ,
381+ ],
382+ ],
383+ [
384+ [
385+ 'retryCount ' => 1 ,
386+ 'travelSeconds ' => 32 ,
387+ 'shouldHaveFailed ' => true ,
388+ ],
389+ ],
390+ [
391+ [
392+ 'retryCount ' => 1 ,
393+ 'travelSeconds ' => 31 ,
394+ 'shouldHaveFailed ' => true ,
395+ ],
396+ ],
397+ ];
398+ }
399+
400+ return [
401+ [
402+ [
403+ 'retryCount ' => 1 ,
404+ 'shouldHaveFailed ' => false ,
405+ ],
406+ ],
407+ [
408+ [
409+ 'retryCount ' => 2 ,
410+ 'shouldHaveFailed ' => true ,
411+ ],
412+ ],
413+ [
414+ [
415+ 'retryCount ' => 1 ,
416+ 'travelSeconds ' => 29 ,
417+ 'shouldHaveFailed ' => false ,
418+ ],
419+ ],
420+ [
421+ [
422+ 'retryCount ' => 1 ,
423+ 'travelSeconds ' => 31 ,
424+ 'shouldHaveFailed ' => true ,
425+ ],
426+ ],
427+ [
428+ [
429+ 'retryCount ' => 1 ,
430+ 'travelSeconds ' => 32 ,
431+ 'shouldHaveFailed ' => true ,
432+ ],
433+ ],
434+ [
435+ [
436+ 'retryCount ' => 1 ,
437+ 'travelSeconds ' => 32 ,
438+ 'shouldHaveFailed ' => true ,
439+ ],
440+ ],
441+ ];
442+ }
443+
349444 private function simpleJob ()
350445 {
351446 return json_decode (file_get_contents (__DIR__ . '/Support/test-job-payload.json ' ), true );
0 commit comments