mirror of
https://github.com/getgrav/grav.git
synced 2026-05-07 01:46:47 +02:00
Revert "Added 'outdated' option to scheduler command (#3771)"
This reverts commit a71403f158.
# Conflicts:
# tests/unit/Grav/Common/Scheduler/SchedulerTest.php
This commit is contained in:
@@ -200,28 +200,6 @@ class Job
|
||||
return $this->executionTime->isDue($date);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the Job should have run previously.
|
||||
*
|
||||
* @param DateTime|null $date
|
||||
* @return bool
|
||||
*/
|
||||
public function isOverdue(?DateTime $date = null, ?DateTime $lastRun = null)
|
||||
{
|
||||
// If the time elapsed since the creation is inferior to the interval, it's not overdue
|
||||
if ($this->creationTime > $this->executionTime->getPreviousRunDate($date)) {
|
||||
return false;
|
||||
}
|
||||
// Else, if the job has never run, it's overdue
|
||||
if (null === $lastRun) {
|
||||
return true;
|
||||
}
|
||||
$date = $date ?? new DateTime('now');
|
||||
|
||||
// Else if the last run time is inferior to the previous scheduled time, it's overdue
|
||||
return $lastRun < $this->executionTime->getPreviousRunDate($date);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the Job is overlapping.
|
||||
*
|
||||
|
||||
@@ -188,7 +188,7 @@ class Scheduler
|
||||
* @param DateTime|null $runTime Optional, run at specific moment
|
||||
* @param bool $force force run even if not due
|
||||
*/
|
||||
public function run(DateTime $runTime = null, $force = false, $overdue = false)
|
||||
public function run(DateTime $runTime = null, $force = false)
|
||||
{
|
||||
$this->loadSavedJobs();
|
||||
|
||||
@@ -199,17 +199,9 @@ class Scheduler
|
||||
$runTime = new DateTime('now');
|
||||
}
|
||||
|
||||
if ($overdue) {
|
||||
$lastRuns = [];
|
||||
foreach ($this->getJobStates()->content() as $id => $state) {
|
||||
$timestamp = $state['last-run'] ?? time();
|
||||
$lastRuns[$id] = DateTime::createFromFormat('U',$timestamp);
|
||||
}
|
||||
}
|
||||
|
||||
// Star processing jobs
|
||||
foreach ($alljobs as $job) {
|
||||
if ($job->isDue($runTime) || $force || ($overdue && $job->isOverdue($runTime, $lastRuns[$job->getId()] ?? null))) {
|
||||
if ($job->isDue($runTime) || $force) {
|
||||
$job->run();
|
||||
$this->jobs_run[] = $job;
|
||||
}
|
||||
|
||||
@@ -1,82 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace unit\Grav\Common\Scheduler;
|
||||
|
||||
use Grav\Common\Scheduler\Job;
|
||||
|
||||
class JobTest extends \Codeception\Test\Unit
|
||||
{
|
||||
/**
|
||||
* @dataProvider dataProviderForTestIsOverdue
|
||||
*/
|
||||
public function testIsOverdue($job, $date, $lastRun, $expected)
|
||||
{
|
||||
$this->assertEquals($expected, $job->isOverdue($date, $lastRun));
|
||||
}
|
||||
|
||||
public function dataProviderForTestIsOverdue()
|
||||
{
|
||||
return [
|
||||
'New Job' => [
|
||||
'job' => (new Job('ls'))->at('* * * * *'),
|
||||
'date' => null,
|
||||
'lastRun' => null,
|
||||
'expected' => false
|
||||
],
|
||||
'New Job created 1 hour ago' => [
|
||||
'job' => (new Job('ls'))->at('* * * * *'),
|
||||
'date' => new \DateTime('+1 hour'),
|
||||
'lastRun' => null,
|
||||
'expected' => true
|
||||
],
|
||||
'New Job created 1 minute ago' => [
|
||||
'job' => (new Job('ls'))->at('* * * * *'),
|
||||
'date' => new \DateTime('+1 minute'),
|
||||
'lastRun' => null,
|
||||
'expected' => false
|
||||
],
|
||||
'New Job created 2 minutes ago' => [
|
||||
'job' => (new Job('ls'))->at('* * * * *'),
|
||||
'date' => new \DateTime('+2 minutes'),
|
||||
'lastRun' => null,
|
||||
'expected' => true
|
||||
],
|
||||
'Job created 1 hour ago and last run 1 mn ago' => [
|
||||
'job' => (new Job('ls'))->at('* * * * *'),
|
||||
'date' => new \DateTime('+1 hour'),
|
||||
'lastRun' => new \DateTime('+1 minutes'),
|
||||
'expected' => true
|
||||
],
|
||||
'Job created 1 hour ago and last run 30 mn ago' => [
|
||||
'job' => (new Job('ls'))->at('* * * * *'),
|
||||
'date' => new \DateTime('+1 hour'),
|
||||
'lastRun' => new \DateTime('+30 minutes'),
|
||||
'expected' => true
|
||||
],
|
||||
'Job created 30 minutes ago and last run 1 hour ago' => [
|
||||
'job' => (new Job('ls'))->at('* * * * *'),
|
||||
'date' => new \DateTime('+30 minutes'),
|
||||
'lastRun' => new \DateTime('+1 hour'),
|
||||
'expected' => false
|
||||
],
|
||||
'New hourly Job' => [
|
||||
'job' => (new Job('ls'))->at('0 * * * *'),
|
||||
'date' => null,
|
||||
'lastRun' => null,
|
||||
'expected' => false
|
||||
],
|
||||
'New hourly Job created at 2 hours ago' => [
|
||||
'job' => (new Job('ls'))->at('0 * * * *'),
|
||||
'date' => new \DateTime('+2 hours'),
|
||||
'lastRun' => null,
|
||||
'expected' => true
|
||||
],
|
||||
'Hourly Job created 1 hour ago and last run 30 mn ago' => [
|
||||
'job' => (new Job('ls'))->at('0 * * * *'),
|
||||
'date' => new \DateTime('+1 hour'),
|
||||
'lastRun' => new \DateTime('+30 minutes'),
|
||||
'expected' => true
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user