chore: Migrate away from internal Job classes

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
pull/43387/head
Côme Chilliet 4 months ago committed by Côme Chilliet
parent 166773879b
commit 65981f99bf

@ -21,7 +21,7 @@
*/
namespace OC\Command;
use OC\BackgroundJob\QueuedJob;
use OCP\BackgroundJob\QueuedJob;
class CallableJob extends QueuedJob {
protected function run($serializedCallable) {

@ -23,7 +23,7 @@
namespace OC\Command;
use Laravel\SerializableClosure\SerializableClosure as LaravelClosure;
use OC\BackgroundJob\QueuedJob;
use OCP\BackgroundJob\QueuedJob;
class ClosureJob extends QueuedJob {
protected function run($argument) {

@ -22,7 +22,7 @@
*/
namespace OC\Command;
use OC\BackgroundJob\QueuedJob;
use OCP\BackgroundJob\QueuedJob;
use OCP\Command\ICommand;
/**

@ -26,31 +26,25 @@
namespace OC\Command;
use Laravel\SerializableClosure\SerializableClosure;
use OCP\BackgroundJob\IJob;
use OCP\BackgroundJob\IJobList;
use OCP\Command\ICommand;
class CronBus extends AsyncBus {
/**
* @var \OCP\BackgroundJob\IJobList
*/
private $jobList;
/**
* @param \OCP\BackgroundJob\IJobList $jobList
*/
public function __construct($jobList) {
$this->jobList = $jobList;
public function __construct(
private IJobList $jobList,
) {
}
protected function queueCommand($command) {
protected function queueCommand($command): void {
$this->jobList->add($this->getJobClass($command), $this->serializeCommand($command));
}
/**
* @param \OCP\Command\ICommand | callable $command
* @return string
* @param ICommand|callable $command
* @return class-string<IJob>
*/
private function getJobClass($command) {
private function getJobClass($command): string {
if ($command instanceof \Closure) {
return ClosureJob::class;
} elseif (is_callable($command)) {
@ -63,10 +57,10 @@ class CronBus extends AsyncBus {
}
/**
* @param \OCP\Command\ICommand | callable $command
* @param ICommand|callable $command
* @return string
*/
private function serializeCommand($command) {
private function serializeCommand($command): string {
if ($command instanceof \Closure) {
return serialize(new SerializableClosure($command));
} elseif (is_callable($command) or $command instanceof ICommand) {

@ -1,4 +1,7 @@
<?php
declare(strict_types=1);
/**
* @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
*
@ -22,9 +25,9 @@
*/
namespace OC\Repair\Owncloud;
use OC\BackgroundJob\QueuedJob;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\IJobList;
use OCP\BackgroundJob\QueuedJob;
use OCP\Files\Folder;
use OCP\Files\IRootFolder;
use OCP\Files\NotFoundException;
@ -33,33 +36,14 @@ use OCP\IUserManager;
use Psr\Log\LoggerInterface;
class CleanPreviewsBackgroundJob extends QueuedJob {
/** @var IRootFolder */
private $rootFolder;
private LoggerInterface $logger;
/** @var IJobList */
private $jobList;
/** @var ITimeFactory */
private $timeFactory;
/** @var IUserManager */
private $userManager;
/**
* CleanPreviewsBackgroundJob constructor.
*/
public function __construct(IRootFolder $rootFolder,
LoggerInterface $logger,
IJobList $jobList,
public function __construct(
private IRootFolder $rootFolder,
private LoggerInterface $logger,
private IJobList $jobList,
ITimeFactory $timeFactory,
IUserManager $userManager) {
$this->rootFolder = $rootFolder;
$this->logger = $logger;
$this->jobList = $jobList;
$this->timeFactory = $timeFactory;
$this->userManager = $userManager;
private IUserManager $userManager,
) {
parent::__construct($timeFactory);
}
public function run($arguments) {
@ -80,10 +64,9 @@ class CleanPreviewsBackgroundJob extends QueuedJob {
}
/**
* @param $uid
* @return bool
* @param string $uid
*/
private function cleanupPreviews($uid) {
private function cleanupPreviews($uid): bool {
try {
$userFolder = $this->rootFolder->getUserFolder($uid);
} catch (NotFoundException $e) {
@ -101,7 +84,7 @@ class CleanPreviewsBackgroundJob extends QueuedJob {
$thumbnails = $thumbnailFolder->getDirectoryListing();
$start = $this->timeFactory->getTime();
$start = $this->time->getTime();
foreach ($thumbnails as $thumbnail) {
try {
$thumbnail->delete();
@ -109,7 +92,7 @@ class CleanPreviewsBackgroundJob extends QueuedJob {
// Ignore
}
if (($this->timeFactory->getTime() - $start) > 15) {
if (($this->time->getTime() - $start) > 15) {
return false;
}
}

@ -1,4 +1,7 @@
<?php
declare(strict_types=1);
/**
* @copyright 2016 Roeland Jago Douma <roeland@famdouma.nl>
*
@ -23,10 +26,11 @@
*/
namespace OC\Repair\Owncloud;
use OC\BackgroundJob\QueuedJob;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\QueuedJob;
use OCP\Files\IRootFolder;
use OCP\Files\NotFoundException;
use OCP\Files\Storage;
use OCP\Files\Storage\IStorage;
use OCP\IAvatarManager;
use OCP\IUser;
use OCP\IUserManager;
@ -34,22 +38,16 @@ use Psr\Log\LoggerInterface;
use function is_resource;
class MoveAvatarsBackgroundJob extends QueuedJob {
/** @var IUserManager */
private $userManager;
/** @var LoggerInterface */
private $logger;
/** @var IAvatarManager */
private $avatarManager;
/** @var Storage */
private $owncloudAvatarStorage;
private ?IStorage $owncloudAvatarStorage = null;
public function __construct(IUserManager $userManager, LoggerInterface $logger, IAvatarManager $avatarManager, IRootFolder $rootFolder) {
$this->userManager = $userManager;
$this->logger = $logger;
$this->avatarManager = $avatarManager;
public function __construct(
private IUserManager $userManager,
private LoggerInterface $logger,
private IAvatarManager $avatarManager,
private IRootFolder $rootFolder,
ITimeFactory $time,
) {
parent::__construct($time);
try {
$this->owncloudAvatarStorage = $rootFolder->get('avatars')->getStorage();
} catch (\Exception $e) {
@ -69,7 +67,7 @@ class MoveAvatarsBackgroundJob extends QueuedJob {
}
$counter = 0;
$this->userManager->callForSeenUsers(function (IUser $user) use ($counter) {
$this->userManager->callForSeenUsers(function (IUser $user) use (&$counter) {
$uid = $user->getUID();
$path = 'avatars/' . $this->buildOwnCloudAvatarPath($uid);

@ -32,8 +32,8 @@ namespace OCP\BackgroundJob;
* This interface provides functions to register background jobs
*
* To create a new background job create a new class that inherits from either
* \OC\BackgroundJob\Job, \OC\BackgroundJob\QueuedJob or
* \OC\BackgroundJob\TimedJob and register it using ->add($job, $argument),
* \OCP\BackgroundJob\Job, \OCP\BackgroundJob\QueuedJob or
* \OCP\BackgroundJob\TimedJob and register it using ->add($job, $argument),
* $argument will be passed to the run() function of the job when the job is
* executed.
*

@ -116,7 +116,7 @@ class DummyJobList extends \OC\BackgroundJob\JobList {
/**
* set the job that was last ran
*
* @param \OC\BackgroundJob\Job $job
* @param \OCP\BackgroundJob\Job $job
*/
public function setLastJob(IJob $job): void {
$i = array_search($job, $this->jobs);

@ -9,16 +9,20 @@
namespace Test\BackgroundJob;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\ILogger;
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 = \OC::$server->get(ITimeFactory::class);
$this->timeFactory = \OCP\Server::get(ITimeFactory::class);
$this->logger = $this->createMock(LoggerInterface::class);
\OC::$server->registerService(LoggerInterface::class, fn ($c) => $this->logger);
}
public function testRemoveAfterException() {
@ -29,14 +33,11 @@ class JobTest extends \Test\TestCase {
});
$jobList->add($job);
$logger = $this->getMockBuilder(ILogger::class)
->disableOriginalConstructor()
->getMock();
$logger->expects($this->once())
$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());
}
@ -49,14 +50,11 @@ class JobTest extends \Test\TestCase {
});
$jobList->add($job);
$logger = $this->getMockBuilder(ILogger::class)
->disableOriginalConstructor()
->getMock();
$logger->expects($this->once())
$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());
}

@ -9,20 +9,10 @@
namespace Test\BackgroundJob;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\QueuedJob;
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 +20,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 +28,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));
$job = new TestQueuedJobNew(\OCP\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);
}
}

@ -23,7 +23,7 @@ class TestJob extends \OCP\BackgroundJob\Job {
* @param callable $callback
*/
public function __construct(ITimeFactory $time = null, $testCase = null, $callback = null) {
parent::__construct($time ?? \OC::$server->get(ITimeFactory::class));
parent::__construct($time ?? \OCP\Server::get(ITimeFactory::class));
$this->testCase = $testCase;
$this->callback = $callback;
}

@ -9,23 +9,10 @@
namespace Test\BackgroundJob;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\BackgroundJob\TimedJob;
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;
class TestTimedJobNew extends TimedJob {
public bool $ran = false;
public function __construct(ITimeFactory $timeFactory) {
parent::__construct($timeFactory);
@ -38,57 +25,23 @@ class TestTimedJobNew extends \OCP\BackgroundJob\TimedJob {
}
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);
}
public function testShouldRunAfterInterval() {
$job = new TestTimedJob();
$this->jobList->add($job);
$job->setLastRun(time() - 12);
$job->execute($this->jobList);
$this->assertTrue($job->ran);
$this->time = \OCP\Server::get(ITimeFactory::class);
}
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() {
$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);
}
@ -98,7 +51,7 @@ class TimedJobTest extends \Test\TestCase {
$this->jobList->add($job);
$job->setLastRun(time() - 5);
$job->execute($this->jobList);
$job->start($this->jobList);
$this->assertFalse($job->ran);
}
@ -108,10 +61,10 @@ class TimedJobTest extends \Test\TestCase {
$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);
}
}

Loading…
Cancel
Save