aboutsummaryrefslogtreecommitdiffstats
path: root/tests/lib/BackgroundJob
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lib/BackgroundJob')
-rw-r--r--tests/lib/BackgroundJob/DummyJobList.php60
-rw-r--r--tests/lib/BackgroundJob/JobListTest.php150
-rw-r--r--tests/lib/BackgroundJob/JobTest.php46
-rw-r--r--tests/lib/BackgroundJob/QueuedJobTest.php45
-rw-r--r--tests/lib/BackgroundJob/TestJob.php22
-rw-r--r--tests/lib/BackgroundJob/TestParallelAwareJob.php39
-rw-r--r--tests/lib/BackgroundJob/TestTimedJobNew.php26
-rw-r--r--tests/lib/BackgroundJob/TimedJobTest.php90
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);
}
}