Ejemplo n.º 1
0
 /**
  * Test method for running cron jobs in the right time
  *
  * @covers \Liebig\Cron\Cron::run
  */
 public function testRunWithTime()
 {
     $i = 0;
     Cron::add('test1', '* * * * *', function () use(&$i) {
         $i++;
         return null;
     });
     $runResult1 = Cron::run();
     $this->assertEquals(1, $i);
     $this->assertEquals(0, $runResult1['errors']);
     $this->assertEquals(1, count($runResult1['crons']));
     $this->assertEquals('test1', $runResult1['crons'][0]['name']);
     $this->assertEquals(null, $runResult1['crons'][0]['return']);
     $this->assertEquals(-1, $runResult1['inTime']);
     Cron::add('test2', '* * * * *', function () {
         return 'return of test2';
     });
     $runResult2 = Cron::run();
     $this->assertEquals(2, $i);
     $this->assertEquals(1, $runResult2['errors']);
     $this->assertEquals(2, count($runResult2['crons']));
     $this->assertEquals('test1', $runResult2['crons'][0]['name']);
     $this->assertEquals(null, $runResult2['crons'][0]['return']);
     $this->assertEquals('test2', $runResult2['crons'][1]['name']);
     $this->assertEquals('return of test2', $runResult2['crons'][1]['return']);
     sleep(60);
     $runResult3 = Cron::run();
     $this->assertEquals(3, $i);
     $this->assertEquals(true, $runResult3['inTime']);
     sleep(25);
     $runResult4 = Cron::run();
     $this->assertEquals(4, $i);
     $this->assertEquals(false, $runResult4['inTime']);
     sleep(95);
     $runResult5 = Cron::run();
     $this->assertEquals($i, 5);
     $this->assertEquals(false, $runResult5['inTime']);
     Cron::setRunInterval(2);
     sleep(120);
     $runResult6 = Cron::run();
     $this->assertEquals($i, 6);
     $this->assertEquals(true, $runResult6['inTime']);
 }