diff options
Diffstat (limited to 'tests/lib/BackgroundJob')
-rw-r--r-- | tests/lib/BackgroundJob/DummyJobList.php | 60 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/JobListTest.php | 150 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/JobTest.php | 46 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/QueuedJobTest.php | 45 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/TestJob.php | 22 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/TestParallelAwareJob.php | 39 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/TestTimedJobNew.php | 26 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/TimedJobTest.php | 90 |
8 files changed, 298 insertions, 180 deletions
diff --git a/tests/lib/BackgroundJob/DummyJobList.php b/tests/lib/BackgroundJob/DummyJobList.php index be48259789a..717db52715f 100644 --- a/tests/lib/BackgroundJob/DummyJobList.php +++ b/tests/lib/BackgroundJob/DummyJobList.php @@ -1,27 +1,36 @@ <?php + /** - * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace Test\BackgroundJob; +use OC\BackgroundJob\JobList; use OCP\BackgroundJob\IJob; +use OCP\BackgroundJob\Job; +use OCP\Server; /** * Class DummyJobList * * in memory job list for testing purposes */ -class DummyJobList extends \OC\BackgroundJob\JobList { +class DummyJobList extends JobList { /** * @var IJob[] */ private array $jobs = []; + /** + * @var bool[] + */ + private array $reserved = []; + private int $last = 0; + private int $lastId = 0; public function __construct() { } @@ -30,25 +39,42 @@ class DummyJobList extends \OC\BackgroundJob\JobList { * @param IJob|class-string<IJob> $job * @param mixed $argument */ - public function add($job, $argument = null): void { + public function add($job, $argument = null, ?int $firstCheck = null): void { if (is_string($job)) { /** @var IJob $job */ - $job = \OCP\Server::get($job); + $job = Server::get($job); } $job->setArgument($argument); + $job->setId($this->lastId); + $this->lastId++; if (!$this->has($job, null)) { $this->jobs[] = $job; } } + public function scheduleAfter(string $job, int $runAfter, $argument = null): void { + $this->add($job, $argument, $runAfter); + } + /** * @param IJob|string $job * @param mixed $argument */ public function remove($job, $argument = null): void { - $index = array_search($job, $this->jobs); - if ($index !== false) { - unset($this->jobs[$index]); + foreach ($this->jobs as $index => $listJob) { + if (get_class($job) === get_class($listJob) && $job->getArgument() == $listJob->getArgument()) { + unset($this->jobs[$index]); + return; + } + } + } + + public function removeById(int $id): void { + foreach ($this->jobs as $index => $listJob) { + if ($listJob->getId() === $id) { + unset($this->jobs[$index]); + return; + } } } @@ -91,7 +117,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { /** * get the next job in the list */ - public function getNext(bool $onlyTimeSensitive = false): ?IJob { + public function getNext(bool $onlyTimeSensitive = false, ?array $jobClasses = null): ?IJob { if (count($this->jobs) > 0) { if ($this->last < (count($this->jobs) - 1)) { $i = $this->last + 1; @@ -107,7 +133,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { /** * set the job that was last ran * - * @param \OC\BackgroundJob\Job $job + * @param Job $job */ public function setLastJob(IJob $job): void { $i = array_search($job, $this->jobs); @@ -118,7 +144,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { } } - public function getById(int $id): IJob { + public function getById(int $id): ?IJob { foreach ($this->jobs as $job) { if ($job->getId() === $id) { return $job; @@ -135,6 +161,14 @@ class DummyJobList extends \OC\BackgroundJob\JobList { $job->setLastRun(time()); } + public function hasReservedJob(?string $className = null): bool { + return isset($this->reserved[$className ?? '']) && $this->reserved[$className ?? '']; + } + + public function setHasReservedJob(?string $className, bool $hasReserved): void { + $this->reserved[$className ?? ''] = $hasReserved; + } + public function setExecutionTime(IJob $job, $timeTaken): void { } diff --git a/tests/lib/BackgroundJob/JobListTest.php b/tests/lib/BackgroundJob/JobListTest.php index ea02e1cd8b9..d816bf707e8 100644 --- a/tests/lib/BackgroundJob/JobListTest.php +++ b/tests/lib/BackgroundJob/JobListTest.php @@ -1,17 +1,23 @@ <?php + +declare(strict_types=1); + /** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace Test\BackgroundJob; +use OC\BackgroundJob\JobList; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\IJob; use OCP\DB\QueryBuilder\IQueryBuilder; use OCP\IConfig; +use OCP\IDBConnection; +use OCP\Server; +use Psr\Log\LoggerInterface; use Test\TestCase; /** @@ -24,26 +30,28 @@ class JobListTest extends TestCase { /** @var \OC\BackgroundJob\JobList */ protected $instance; - /** @var \OCP\IDBConnection */ + /** @var IDBConnection */ protected $connection; - /** @var \OCP\IConfig|\PHPUnit\Framework\MockObject\MockObject */ + /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ protected $config; - /** @var \OCP\AppFramework\Utility\ITimeFactory|\PHPUnit\Framework\MockObject\MockObject */ + /** @var ITimeFactory|\PHPUnit\Framework\MockObject\MockObject */ protected $timeFactory; + private bool $ran = false; protected function setUp(): void { parent::setUp(); - $this->connection = \OC::$server->getDatabaseConnection(); + $this->connection = Server::get(IDBConnection::class); $this->clearJobsList(); $this->config = $this->createMock(IConfig::class); $this->timeFactory = $this->createMock(ITimeFactory::class); - $this->instance = new \OC\BackgroundJob\JobList( + $this->instance = new JobList( $this->connection, $this->config, - $this->timeFactory + $this->timeFactory, + Server::get(LoggerInterface::class), ); } @@ -68,7 +76,7 @@ class JobListTest extends TestCase { return $jobs; } - public function argumentProvider() { + public static function argumentProvider(): array { return [ [null], [false], @@ -82,10 +90,10 @@ class JobListTest extends TestCase { } /** - * @dataProvider argumentProvider * @param $argument */ - public function testAddRemove($argument) { + #[\PHPUnit\Framework\Attributes\DataProvider('argumentProvider')] + public function testAddRemove($argument): void { $existingJobs = $this->getAllSorted(); $job = new TestJob(); $this->instance->add($job, $argument); @@ -104,10 +112,10 @@ class JobListTest extends TestCase { } /** - * @dataProvider argumentProvider * @param $argument */ - public function testRemoveDifferentArgument($argument) { + #[\PHPUnit\Framework\Attributes\DataProvider('argumentProvider')] + public function testRemoveDifferentArgument($argument): void { $existingJobs = $this->getAllSorted(); $job = new TestJob(); $this->instance->add($job, $argument); @@ -125,10 +133,10 @@ class JobListTest extends TestCase { } /** - * @dataProvider argumentProvider * @param $argument */ - public function testHas($argument) { + #[\PHPUnit\Framework\Attributes\DataProvider('argumentProvider')] + public function testHas($argument): void { $job = new TestJob(); $this->assertFalse($this->instance->has($job, $argument)); $this->instance->add($job, $argument); @@ -141,17 +149,21 @@ class JobListTest extends TestCase { } /** - * @dataProvider argumentProvider * @param $argument */ - public function testHasDifferentArgument($argument) { + #[\PHPUnit\Framework\Attributes\DataProvider('argumentProvider')] + public function testHasDifferentArgument($argument): void { $job = new TestJob(); $this->instance->add($job, $argument); $this->assertFalse($this->instance->has($job, 10)); } - protected function createTempJob($class, $argument, $reservedTime = 0, $lastChecked = 0) { + protected function createTempJob($class, + $argument, + int $reservedTime = 0, + int $lastChecked = 0, + int $lastRun = 0): int { if ($lastChecked === 0) { $lastChecked = time(); } @@ -161,14 +173,15 @@ class JobListTest extends TestCase { ->values([ 'class' => $query->createNamedParameter($class), 'argument' => $query->createNamedParameter($argument), - 'last_run' => $query->createNamedParameter(0, IQueryBuilder::PARAM_INT), + 'last_run' => $query->createNamedParameter($lastRun, IQueryBuilder::PARAM_INT), 'last_checked' => $query->createNamedParameter($lastChecked, IQueryBuilder::PARAM_INT), 'reserved_at' => $query->createNamedParameter($reservedTime, IQueryBuilder::PARAM_INT), ]); - $query->execute(); + $query->executeStatement(); + return $query->getLastInsertId(); } - public function testGetNext() { + public function testGetNext(): void { $job = new TestJob(); $this->createTempJob(get_class($job), 1, 0, 12345); $this->createTempJob(get_class($job), 2, 0, 12346); @@ -184,7 +197,7 @@ class JobListTest extends TestCase { $this->assertEquals($savedJob1, $nextJob); } - public function testGetNextSkipReserved() { + public function testGetNextSkipReserved(): void { $job = new TestJob(); $this->createTempJob(get_class($job), 1, 123456789, 12345); $this->createTempJob(get_class($job), 2, 0, 12346); @@ -198,7 +211,22 @@ class JobListTest extends TestCase { $this->assertEquals(2, $nextJob->getArgument()); } - public function testGetNextSkipNonExisting() { + public function testGetNextSkipTimed(): void { + $job = new TestTimedJobNew($this->timeFactory); + $jobId = $this->createTempJob(get_class($job), 1, 123456789, 12345, 123456789 - 5); + $this->timeFactory->expects(self::atLeastOnce()) + ->method('getTime') + ->willReturn(123456789); + + $nextJob = $this->instance->getNext(); + + self::assertNull($nextJob); + $job = $this->instance->getById($jobId); + self::assertInstanceOf(TestTimedJobNew::class, $job); + self::assertEquals(123456789 - 5, $job->getLastRun()); + } + + public function testGetNextSkipNonExisting(): void { $job = new TestJob(); $this->createTempJob('\OC\Non\Existing\Class', 1, 0, 12345); $this->createTempJob(get_class($job), 2, 0, 12346); @@ -213,10 +241,10 @@ class JobListTest extends TestCase { } /** - * @dataProvider argumentProvider * @param $argument */ - public function testGetById($argument) { + #[\PHPUnit\Framework\Attributes\DataProvider('argumentProvider')] + public function testGetById($argument): void { $job = new TestJob(); $this->instance->add($job, $argument); @@ -227,7 +255,7 @@ class JobListTest extends TestCase { $this->assertEquals($addedJob, $this->instance->getById($addedJob->getId())); } - public function testSetLastRun() { + public function testSetLastRun(): void { $job = new TestJob(); $this->instance->add($job); @@ -244,4 +272,70 @@ class JobListTest extends TestCase { $this->assertGreaterThanOrEqual($timeStart, $addedJob->getLastRun()); $this->assertLessThanOrEqual($timeEnd, $addedJob->getLastRun()); } + + public function testHasReservedJobs(): void { + $this->clearJobsList(); + + $this->timeFactory->expects($this->atLeastOnce()) + ->method('getTime') + ->willReturn(123456789); + + $job = new TestJob($this->timeFactory, $this, function (): void { + }); + + $job2 = new TestJob($this->timeFactory, $this, function (): void { + }); + + $this->instance->add($job, 1); + $this->instance->add($job2, 2); + + $this->assertCount(2, iterator_to_array($this->instance->getJobsIterator(null, 10, 0))); + + $this->assertFalse($this->instance->hasReservedJob()); + $this->assertFalse($this->instance->hasReservedJob(TestJob::class)); + + $job = $this->instance->getNext(); + $this->assertNotNull($job); + $this->assertTrue($this->instance->hasReservedJob()); + $this->assertTrue($this->instance->hasReservedJob(TestJob::class)); + $job = $this->instance->getNext(); + $this->assertNotNull($job); + $this->assertTrue($this->instance->hasReservedJob()); + $this->assertTrue($this->instance->hasReservedJob(TestJob::class)); + } + + public function testHasReservedJobsAndParallelAwareJob(): void { + $this->clearJobsList(); + + $this->timeFactory->expects($this->atLeastOnce()) + ->method('getTime') + ->willReturnCallback(function () use (&$time) { + return time(); + }); + + $job = new TestParallelAwareJob($this->timeFactory, $this, function (): void { + }); + + $job2 = new TestParallelAwareJob($this->timeFactory, $this, function (): void { + }); + + $this->instance->add($job, 1); + $this->instance->add($job2, 2); + + $this->assertCount(2, iterator_to_array($this->instance->getJobsIterator(null, 10, 0))); + + $this->assertFalse($this->instance->hasReservedJob()); + $this->assertFalse($this->instance->hasReservedJob(TestParallelAwareJob::class)); + + $job = $this->instance->getNext(); + $this->assertNotNull($job); + $this->assertTrue($this->instance->hasReservedJob()); + $this->assertTrue($this->instance->hasReservedJob(TestParallelAwareJob::class)); + $job = $this->instance->getNext(); + $this->assertNull($job); // Job doesn't allow parallel runs + } + + public function markRun() { + $this->ran = true; + } } diff --git a/tests/lib/BackgroundJob/JobTest.php b/tests/lib/BackgroundJob/JobTest.php index b4048aa1c22..b67059f0380 100644 --- a/tests/lib/BackgroundJob/JobTest.php +++ b/tests/lib/BackgroundJob/JobTest.php @@ -1,61 +1,61 @@ <?php + /** - * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. + * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace Test\BackgroundJob; -use OCP\ILogger; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Server; +use Psr\Log\LoggerInterface; class JobTest extends \Test\TestCase { private $run = false; + private ITimeFactory $timeFactory; + private LoggerInterface $logger; protected function setUp(): void { parent::setUp(); $this->run = false; + $this->timeFactory = Server::get(ITimeFactory::class); + $this->logger = $this->createMock(LoggerInterface::class); + + \OC::$server->registerService(LoggerInterface::class, fn ($c) => $this->logger); } - public function testRemoveAfterException() { + public function testRemoveAfterException(): void { $jobList = new DummyJobList(); $e = new \Exception(); - $job = new TestJob($this, function () use ($e) { + $job = new TestJob($this->timeFactory, $this, function () use ($e): void { throw $e; }); $jobList->add($job); - $logger = $this->getMockBuilder(ILogger::class) - ->disableOriginalConstructor() - ->getMock(); - $logger->expects($this->once()) - ->method('logException') - ->with($e); + $this->logger->expects($this->once()) + ->method('error'); $this->assertCount(1, $jobList->getAll()); - $job->execute($jobList, $logger); + $job->start($jobList); $this->assertTrue($this->run); $this->assertCount(1, $jobList->getAll()); } - public function testRemoveAfterError() { + public function testRemoveAfterError(): void { $jobList = new DummyJobList(); - $job = new TestJob($this, function () { + $job = new TestJob($this->timeFactory, $this, function (): void { $test = null; $test->someMethod(); }); $jobList->add($job); - $logger = $this->getMockBuilder(ILogger::class) - ->disableOriginalConstructor() - ->getMock(); - $logger->expects($this->once()) - ->method('logException') - ->with($this->isInstanceOf(\Throwable::class)); + $this->logger->expects($this->once()) + ->method('error'); $this->assertCount(1, $jobList->getAll()); - $job->execute($jobList, $logger); + $job->start($jobList); $this->assertTrue($this->run); $this->assertCount(1, $jobList->getAll()); } diff --git a/tests/lib/BackgroundJob/QueuedJobTest.php b/tests/lib/BackgroundJob/QueuedJobTest.php index 9378816ce61..1c0946ff2f2 100644 --- a/tests/lib/BackgroundJob/QueuedJobTest.php +++ b/tests/lib/BackgroundJob/QueuedJobTest.php @@ -1,28 +1,19 @@ <?php + /** - * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace Test\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\QueuedJob; +use OCP\Server; -class TestQueuedJob extends \OC\BackgroundJob\QueuedJob { - public $ran = false; - - - public function run($argument) { - $this->ran = true; - } -} - - -class TestQueuedJobNew extends \OCP\BackgroundJob\QueuedJob { - public $ran = false; - +class TestQueuedJobNew extends QueuedJob { + public bool $ran = false; public function run($argument) { $this->ran = true; @@ -30,10 +21,7 @@ class TestQueuedJobNew extends \OCP\BackgroundJob\QueuedJob { } class QueuedJobTest extends \Test\TestCase { - /** - * @var DummyJobList $jobList - */ - private $jobList; + private DummyJobList $jobList; protected function setUp(): void { parent::setUp(); @@ -41,22 +29,13 @@ class QueuedJobTest extends \Test\TestCase { $this->jobList = new DummyJobList(); } - public function testJobShouldBeRemoved() { - $job = new TestQueuedJob(); - $this->jobList->add($job); - - $this->assertTrue($this->jobList->has($job, null)); - $job->execute($this->jobList); - $this->assertTrue($job->ran); - } - - public function testJobShouldBeRemovedNew() { - $job = new TestQueuedJobNew(\OC::$server->query(ITimeFactory::class)); + public function testJobShouldBeRemovedNew(): void { + $job = new TestQueuedJobNew(Server::get(ITimeFactory::class)); $job->setId(42); $this->jobList->add($job); $this->assertTrue($this->jobList->has($job, null)); - $job->execute($this->jobList); + $job->start($this->jobList); $this->assertTrue($job->ran); } } diff --git a/tests/lib/BackgroundJob/TestJob.php b/tests/lib/BackgroundJob/TestJob.php index e15c7e86c99..ac18530ac7f 100644 --- a/tests/lib/BackgroundJob/TestJob.php +++ b/tests/lib/BackgroundJob/TestJob.php @@ -1,16 +1,18 @@ <?php + /** - * Copyright (c) 2014 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. + * SPDX-FileCopyrightText: 2020-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace Test\BackgroundJob; -class TestJob extends \OC\BackgroundJob\Job { - private $testCase; +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\Job; +use OCP\Server; +class TestJob extends Job { /** * @var callable $callback */ @@ -20,8 +22,12 @@ class TestJob extends \OC\BackgroundJob\Job { * @param JobTest $testCase * @param callable $callback */ - public function __construct($testCase = null, $callback = null) { - $this->testCase = $testCase; + public function __construct( + ?ITimeFactory $time = null, + private $testCase = null, + $callback = null, + ) { + parent::__construct($time ?? Server::get(ITimeFactory::class)); $this->callback = $callback; } diff --git a/tests/lib/BackgroundJob/TestParallelAwareJob.php b/tests/lib/BackgroundJob/TestParallelAwareJob.php new file mode 100644 index 00000000000..6efb1a1fd8d --- /dev/null +++ b/tests/lib/BackgroundJob/TestParallelAwareJob.php @@ -0,0 +1,39 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +namespace Test\BackgroundJob; + +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\Job; +use OCP\Server; + +class TestParallelAwareJob extends Job { + /** + * @var callable $callback + */ + private $callback; + + /** + * @param JobTest $testCase + * @param callable $callback + */ + public function __construct( + ?ITimeFactory $time = null, + private $testCase = null, + $callback = null, + ) { + parent::__construct($time ?? Server::get(ITimeFactory::class)); + $this->setAllowParallelRuns(false); + $this->callback = $callback; + } + + public function run($argument) { + $this->testCase->markRun(); + $callback = $this->callback; + $callback($argument); + } +} diff --git a/tests/lib/BackgroundJob/TestTimedJobNew.php b/tests/lib/BackgroundJob/TestTimedJobNew.php new file mode 100644 index 00000000000..a40c4033655 --- /dev/null +++ b/tests/lib/BackgroundJob/TestTimedJobNew.php @@ -0,0 +1,26 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +namespace Test\BackgroundJob; + +use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\TimedJob; + +class TestTimedJobNew extends TimedJob { + public bool $ran = false; + + public function __construct(ITimeFactory $timeFactory) { + parent::__construct($timeFactory); + $this->setInterval(10); + } + + public function run($argument) { + $this->ran = true; + } +} diff --git a/tests/lib/BackgroundJob/TimedJobTest.php b/tests/lib/BackgroundJob/TimedJobTest.php index 12f1c43adde..d56240eb75e 100644 --- a/tests/lib/BackgroundJob/TimedJobTest.php +++ b/tests/lib/BackgroundJob/TimedJobTest.php @@ -1,117 +1,57 @@ <?php + /** - * Copyright (c) 2013 Robin Appelman <icewind@owncloud.com> - * This file is licensed under the Affero General Public License version 3 or - * later. - * See the COPYING-README file. + * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-or-later */ namespace Test\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; - -class TestTimedJob extends \OC\BackgroundJob\TimedJob { - /** @var bool */ - public $ran = false; - - public function __construct() { - $this->setInterval(10); - } - - public function run($argument) { - $this->ran = true; - } -} - -class TestTimedJobNew extends \OCP\BackgroundJob\TimedJob { - /** @var bool */ - public $ran = false; - - public function __construct(ITimeFactory $timeFactory) { - parent::__construct($timeFactory); - $this->setInterval(10); - } - - public function run($argument) { - $this->ran = true; - } -} +use OCP\Server; class TimedJobTest extends \Test\TestCase { - /** @var DummyJobList $jobList */ - private $jobList; - - /** @var ITimeFactory */ - private $time; + private DummyJobList $jobList; + private ITimeFactory $time; protected function setUp(): void { parent::setUp(); $this->jobList = new DummyJobList(); - $this->time = \OC::$server->query(ITimeFactory::class); + $this->time = Server::get(ITimeFactory::class); } - public function testShouldRunAfterInterval() { - $job = new TestTimedJob(); - $this->jobList->add($job); - - $job->setLastRun(time() - 12); - $job->execute($this->jobList); - $this->assertTrue($job->ran); - } - - public function testShouldNotRunWithinInterval() { - $job = new TestTimedJob(); - $this->jobList->add($job); - - $job->setLastRun(time() - 5); - $job->execute($this->jobList); - $this->assertFalse($job->ran); - } - - public function testShouldNotTwice() { - $job = new TestTimedJob(); - $this->jobList->add($job); - - $job->setLastRun(time() - 15); - $job->execute($this->jobList); - $this->assertTrue($job->ran); - $job->ran = false; - $job->execute($this->jobList); - $this->assertFalse($job->ran); - } - - - public function testShouldRunAfterIntervalNew() { + public function testShouldRunAfterIntervalNew(): void { $job = new TestTimedJobNew($this->time); $job->setId(42); $this->jobList->add($job); $job->setLastRun(time() - 12); - $job->execute($this->jobList); + $job->start($this->jobList); $this->assertTrue($job->ran); } - public function testShouldNotRunWithinIntervalNew() { + public function testShouldNotRunWithinIntervalNew(): void { $job = new TestTimedJobNew($this->time); $job->setId(42); $this->jobList->add($job); $job->setLastRun(time() - 5); - $job->execute($this->jobList); + $job->start($this->jobList); $this->assertFalse($job->ran); } - public function testShouldNotTwiceNew() { + public function testShouldNotTwiceNew(): void { $job = new TestTimedJobNew($this->time); $job->setId(42); $this->jobList->add($job); $job->setLastRun(time() - 15); - $job->execute($this->jobList); + $job->start($this->jobList); $this->assertTrue($job->ran); $job->ran = false; - $job->execute($this->jobList); + $job->start($this->jobList); $this->assertFalse($job->ran); } } |