diff options
Diffstat (limited to 'tests/lib/BackgroundJob')
-rw-r--r-- | tests/lib/BackgroundJob/DummyJobList.php | 10 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/JobListTest.php | 64 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/JobTest.php | 8 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/QueuedJobTest.php | 4 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/TestJob.php | 16 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/TestParallelAwareJob.php | 16 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/TestTimedJobNew.php | 26 | ||||
-rw-r--r-- | tests/lib/BackgroundJob/TimedJobTest.php | 18 |
8 files changed, 109 insertions, 53 deletions
diff --git a/tests/lib/BackgroundJob/DummyJobList.php b/tests/lib/BackgroundJob/DummyJobList.php index 7b7fce7e9e8..717db52715f 100644 --- a/tests/lib/BackgroundJob/DummyJobList.php +++ b/tests/lib/BackgroundJob/DummyJobList.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -7,14 +8,17 @@ 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[] */ @@ -38,7 +42,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { 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); @@ -129,7 +133,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList { /** * set the job that was last ran * - * @param \OCP\BackgroundJob\Job $job + * @param Job $job */ public function setLastJob(IJob $job): void { $i = array_search($job, $this->jobs); diff --git a/tests/lib/BackgroundJob/JobListTest.php b/tests/lib/BackgroundJob/JobListTest.php index a9d7df0e6f4..d816bf707e8 100644 --- a/tests/lib/BackgroundJob/JobListTest.php +++ b/tests/lib/BackgroundJob/JobListTest.php @@ -1,4 +1,7 @@ <?php + +declare(strict_types=1); + /** * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -7,10 +10,13 @@ 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,28 +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, - \OC::$server->get(LoggerInterface::class), + Server::get(LoggerInterface::class), ); } @@ -70,7 +76,7 @@ class JobListTest extends TestCase { return $jobs; } - public function argumentProvider() { + public static function argumentProvider(): array { return [ [null], [false], @@ -84,9 +90,9 @@ class JobListTest extends TestCase { } /** - * @dataProvider argumentProvider * @param $argument */ + #[\PHPUnit\Framework\Attributes\DataProvider('argumentProvider')] public function testAddRemove($argument): void { $existingJobs = $this->getAllSorted(); $job = new TestJob(); @@ -106,9 +112,9 @@ class JobListTest extends TestCase { } /** - * @dataProvider argumentProvider * @param $argument */ + #[\PHPUnit\Framework\Attributes\DataProvider('argumentProvider')] public function testRemoveDifferentArgument($argument): void { $existingJobs = $this->getAllSorted(); $job = new TestJob(); @@ -127,9 +133,9 @@ class JobListTest extends TestCase { } /** - * @dataProvider argumentProvider * @param $argument */ + #[\PHPUnit\Framework\Attributes\DataProvider('argumentProvider')] public function testHas($argument): void { $job = new TestJob(); $this->assertFalse($this->instance->has($job, $argument)); @@ -143,9 +149,9 @@ class JobListTest extends TestCase { } /** - * @dataProvider argumentProvider * @param $argument */ + #[\PHPUnit\Framework\Attributes\DataProvider('argumentProvider')] public function testHasDifferentArgument($argument): void { $job = new TestJob(); $this->instance->add($job, $argument); @@ -153,7 +159,11 @@ class JobListTest extends TestCase { $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(); } @@ -163,11 +173,12 @@ 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(): void { @@ -200,6 +211,21 @@ class JobListTest extends TestCase { $this->assertEquals(2, $nextJob->getArgument()); } + 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); @@ -215,9 +241,9 @@ class JobListTest extends TestCase { } /** - * @dataProvider argumentProvider * @param $argument */ + #[\PHPUnit\Framework\Attributes\DataProvider('argumentProvider')] public function testGetById($argument): void { $job = new TestJob(); $this->instance->add($job, $argument); @@ -254,10 +280,10 @@ class JobListTest extends TestCase { ->method('getTime') ->willReturn(123456789); - $job = new TestJob($this->timeFactory, $this, function () { + $job = new TestJob($this->timeFactory, $this, function (): void { }); - $job2 = new TestJob($this->timeFactory, $this, function () { + $job2 = new TestJob($this->timeFactory, $this, function (): void { }); $this->instance->add($job, 1); @@ -287,10 +313,10 @@ class JobListTest extends TestCase { return time(); }); - $job = new TestParallelAwareJob($this->timeFactory, $this, function () { + $job = new TestParallelAwareJob($this->timeFactory, $this, function (): void { }); - $job2 = new TestParallelAwareJob($this->timeFactory, $this, function () { + $job2 = new TestParallelAwareJob($this->timeFactory, $this, function (): void { }); $this->instance->add($job, 1); diff --git a/tests/lib/BackgroundJob/JobTest.php b/tests/lib/BackgroundJob/JobTest.php index 9024742f432..b67059f0380 100644 --- a/tests/lib/BackgroundJob/JobTest.php +++ b/tests/lib/BackgroundJob/JobTest.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -8,6 +9,7 @@ namespace Test\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\Server; use Psr\Log\LoggerInterface; class JobTest extends \Test\TestCase { @@ -18,7 +20,7 @@ class JobTest extends \Test\TestCase { protected function setUp(): void { parent::setUp(); $this->run = false; - $this->timeFactory = \OCP\Server::get(ITimeFactory::class); + $this->timeFactory = Server::get(ITimeFactory::class); $this->logger = $this->createMock(LoggerInterface::class); \OC::$server->registerService(LoggerInterface::class, fn ($c) => $this->logger); @@ -27,7 +29,7 @@ class JobTest extends \Test\TestCase { public function testRemoveAfterException(): void { $jobList = new DummyJobList(); $e = new \Exception(); - $job = new TestJob($this->timeFactory, $this, function () use ($e) { + $job = new TestJob($this->timeFactory, $this, function () use ($e): void { throw $e; }); $jobList->add($job); @@ -43,7 +45,7 @@ class JobTest extends \Test\TestCase { public function testRemoveAfterError(): void { $jobList = new DummyJobList(); - $job = new TestJob($this->timeFactory, $this, function () { + $job = new TestJob($this->timeFactory, $this, function (): void { $test = null; $test->someMethod(); }); diff --git a/tests/lib/BackgroundJob/QueuedJobTest.php b/tests/lib/BackgroundJob/QueuedJobTest.php index 893f476bb5f..1c0946ff2f2 100644 --- a/tests/lib/BackgroundJob/QueuedJobTest.php +++ b/tests/lib/BackgroundJob/QueuedJobTest.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -9,6 +10,7 @@ namespace Test\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; use OCP\BackgroundJob\QueuedJob; +use OCP\Server; class TestQueuedJobNew extends QueuedJob { public bool $ran = false; @@ -28,7 +30,7 @@ class QueuedJobTest extends \Test\TestCase { } public function testJobShouldBeRemovedNew(): void { - $job = new TestQueuedJobNew(\OCP\Server::get(ITimeFactory::class)); + $job = new TestQueuedJobNew(Server::get(ITimeFactory::class)); $job->setId(42); $this->jobList->add($job); diff --git a/tests/lib/BackgroundJob/TestJob.php b/tests/lib/BackgroundJob/TestJob.php index ea0634e63d9..ac18530ac7f 100644 --- a/tests/lib/BackgroundJob/TestJob.php +++ b/tests/lib/BackgroundJob/TestJob.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2020-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -8,10 +9,10 @@ namespace Test\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\Job; +use OCP\Server; -class TestJob extends \OCP\BackgroundJob\Job { - private $testCase; - +class TestJob extends Job { /** * @var callable $callback */ @@ -21,9 +22,12 @@ class TestJob extends \OCP\BackgroundJob\Job { * @param JobTest $testCase * @param callable $callback */ - public function __construct(?ITimeFactory $time = null, $testCase = null, $callback = null) { - parent::__construct($time ?? \OCP\Server::get(ITimeFactory::class)); - $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 index f7a6cf5fa79..6efb1a1fd8d 100644 --- a/tests/lib/BackgroundJob/TestParallelAwareJob.php +++ b/tests/lib/BackgroundJob/TestParallelAwareJob.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors * SPDX-License-Identifier: AGPL-3.0-or-later @@ -7,10 +8,10 @@ namespace Test\BackgroundJob; use OCP\AppFramework\Utility\ITimeFactory; +use OCP\BackgroundJob\Job; +use OCP\Server; -class TestParallelAwareJob extends \OCP\BackgroundJob\Job { - private $testCase; - +class TestParallelAwareJob extends Job { /** * @var callable $callback */ @@ -20,10 +21,13 @@ class TestParallelAwareJob extends \OCP\BackgroundJob\Job { * @param JobTest $testCase * @param callable $callback */ - public function __construct(?ITimeFactory $time = null, $testCase = null, $callback = null) { - parent::__construct($time ?? \OC::$server->get(ITimeFactory::class)); + public function __construct( + ?ITimeFactory $time = null, + private $testCase = null, + $callback = null, + ) { + parent::__construct($time ?? Server::get(ITimeFactory::class)); $this->setAllowParallelRuns(false); - $this->testCase = $testCase; $this->callback = $callback; } 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 ad0f54ebe4a..d56240eb75e 100644 --- a/tests/lib/BackgroundJob/TimedJobTest.php +++ b/tests/lib/BackgroundJob/TimedJobTest.php @@ -1,4 +1,5 @@ <?php + /** * SPDX-FileCopyrightText: 2018-2024 Nextcloud GmbH and Nextcloud contributors * SPDX-FileCopyrightText: 2016 ownCloud, Inc. @@ -8,20 +9,7 @@ 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; - } -} +use OCP\Server; class TimedJobTest extends \Test\TestCase { private DummyJobList $jobList; @@ -31,7 +19,7 @@ class TimedJobTest extends \Test\TestCase { parent::setUp(); $this->jobList = new DummyJobList(); - $this->time = \OCP\Server::get(ITimeFactory::class); + $this->time = Server::get(ITimeFactory::class); } public function testShouldRunAfterIntervalNew(): void { |