Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorChristoph Wurst <ChristophWurst@users.noreply.github.com>2022-06-02 15:29:58 +0300
committerGitHub <noreply@github.com>2022-06-02 15:29:58 +0300
commitca45e6a0640cc1bc758da38629d6f5741df511de (patch)
treeef2d6acbeb22da6121c86c896752b1275fe3c127 /apps
parent1d1b9d936b461ee9ae7242a692fce443e452e84b (diff)
parent58f7a150ed5314f489145add959b4946fb960d32 (diff)
Merge pull request #28703 from nextcloud/enhancement/caldav-reminders-logging
Debug log what happens during reminders processing
Diffstat (limited to 'apps')
-rw-r--r--apps/dav/lib/CalDAV/Reminder/ReminderService.php41
-rw-r--r--apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php30
2 files changed, 46 insertions, 25 deletions
diff --git a/apps/dav/lib/CalDAV/Reminder/ReminderService.php b/apps/dav/lib/CalDAV/Reminder/ReminderService.php
index b33bc8a175a..2a065469052 100644
--- a/apps/dav/lib/CalDAV/Reminder/ReminderService.php
+++ b/apps/dav/lib/CalDAV/Reminder/ReminderService.php
@@ -38,6 +38,7 @@ use OCP\IGroup;
use OCP\IGroupManager;
use OCP\IUser;
use OCP\IUserManager;
+use Psr\Log\LoggerInterface;
use Sabre\VObject;
use Sabre\VObject\Component\VAlarm;
use Sabre\VObject\Component\VEvent;
@@ -46,6 +47,7 @@ use Sabre\VObject\ParseException;
use Sabre\VObject\Recur\EventIterator;
use Sabre\VObject\Recur\MaxInstancesExceededException;
use Sabre\VObject\Recur\NoInstancesException;
+use function count;
use function strcasecmp;
class ReminderService {
@@ -71,6 +73,9 @@ class ReminderService {
/** @var IConfig */
private $config;
+ /** @var LoggerInterface */
+ private $logger;
+
public const REMINDER_TYPE_EMAIL = 'EMAIL';
public const REMINDER_TYPE_DISPLAY = 'DISPLAY';
public const REMINDER_TYPE_AUDIO = 'AUDIO';
@@ -86,24 +91,14 @@ class ReminderService {
self::REMINDER_TYPE_AUDIO
];
- /**
- * ReminderService constructor.
- *
- * @param Backend $backend
- * @param NotificationProviderManager $notificationProviderManager
- * @param IUserManager $userManager
- * @param IGroupManager $groupManager
- * @param CalDavBackend $caldavBackend
- * @param ITimeFactory $timeFactory
- * @param IConfig $config
- */
public function __construct(Backend $backend,
NotificationProviderManager $notificationProviderManager,
IUserManager $userManager,
IGroupManager $groupManager,
CalDavBackend $caldavBackend,
ITimeFactory $timeFactory,
- IConfig $config) {
+ IConfig $config,
+ LoggerInterface $logger) {
$this->backend = $backend;
$this->notificationProviderManager = $notificationProviderManager;
$this->userManager = $userManager;
@@ -111,6 +106,7 @@ class ReminderService {
$this->caldavBackend = $caldavBackend;
$this->timeFactory = $timeFactory;
$this->config = $config;
+ $this->logger = $logger;
}
/**
@@ -119,8 +115,11 @@ class ReminderService {
* @throws NotificationProvider\ProviderNotAvailableException
* @throws NotificationTypeDoesNotExistException
*/
- public function processReminders():void {
+ public function processReminders() :void {
$reminders = $this->backend->getRemindersToProcess();
+ $this->logger->debug('{numReminders} reminders to process', [
+ 'numReminders' => count($reminders),
+ ]);
foreach ($reminders as $reminder) {
$calendarData = is_resource($reminder['calendardata'])
@@ -133,22 +132,34 @@ class ReminderService {
$vcalendar = $this->parseCalendarData($calendarData);
if (!$vcalendar) {
+ $this->logger->debug('Reminder {id} does not belong to a valid calendar', [
+ 'id' => $reminder['id'],
+ ]);
$this->backend->removeReminder($reminder['id']);
continue;
}
$vevent = $this->getVEventByRecurrenceId($vcalendar, $reminder['recurrence_id'], $reminder['is_recurrence_exception']);
if (!$vevent) {
+ $this->logger->debug('Reminder {id} does not belong to a valid event', [
+ 'id' => $reminder['id'],
+ ]);
$this->backend->removeReminder($reminder['id']);
continue;
}
if ($this->wasEventCancelled($vevent)) {
+ $this->logger->debug('Reminder {id} belongs to a cancelled event', [
+ 'id' => $reminder['id'],
+ ]);
$this->deleteOrProcessNext($reminder, $vevent);
continue;
}
if (!$this->notificationProviderManager->hasProvider($reminder['type'])) {
+ $this->logger->debug('Reminder {id} does not belong to a valid notification provider', [
+ 'id' => $reminder['id'],
+ ]);
$this->deleteOrProcessNext($reminder, $vevent);
continue;
}
@@ -164,6 +175,10 @@ class ReminderService {
$users[] = $user;
}
+ $this->logger->debug('Reminder {id} will be sent to {numUsers} users', [
+ 'id' => $reminder['id'],
+ 'numUsers' => count($users),
+ ]);
$notificationProvider = $this->notificationProviderManager->getProvider($reminder['type']);
$notificationProvider->send($vevent, $reminder['displayname'], $users);
diff --git a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
index 39fbf1c79ff..6242e8d0355 100644
--- a/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
+++ b/apps/dav/tests/unit/CalDAV/Reminder/ReminderServiceTest.php
@@ -39,37 +39,39 @@ use OCP\IGroupManager;
use OCP\IUser;
use OCP\IUserManager;
use OCP\IUserSession;
+use PHPUnit\Framework\MockObject\MockObject;
+use Psr\Log\LoggerInterface;
use Test\TestCase;
class ReminderServiceTest extends TestCase {
- /** @var Backend|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var Backend|MockObject */
private $backend;
- /** @var NotificationProviderManager|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var NotificationProviderManager|MockObject */
private $notificationProviderManager;
- /** @var IUserManager|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var IUserManager|MockObject */
private $userManager;
- /** @var IGroupManager|\PHPUnit\Framework\MockObject\MockObject*/
+ /** @var IGroupManager|MockObject*/
private $groupManager;
- /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */
- private $userSession;
-
- /** @var CalDavBackend|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var CalDavBackend|MockObject */
private $caldavBackend;
- /** @var ITimeFactory|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var ITimeFactory|MockObject */
private $timeFactory;
- /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
+ /** @var IConfig|MockObject */
private $config;
/** @var ReminderService */
private $reminderService;
+ /** @var MockObject|LoggerInterface */
+ private $logger;
+
public const CALENDAR_DATA = <<<EOD
BEGIN:VCALENDAR
PRODID:-//Nextcloud calendar v1.6.4
@@ -199,16 +201,20 @@ EOD;
$this->caldavBackend = $this->createMock(CalDavBackend::class);
$this->timeFactory = $this->createMock(ITimeFactory::class);
$this->config = $this->createMock(IConfig::class);
+ $this->logger = $this->createMock(LoggerInterface::class);
$this->caldavBackend->method('getShares')->willReturn([]);
- $this->reminderService = new ReminderService($this->backend,
+ $this->reminderService = new ReminderService(
+ $this->backend,
$this->notificationProviderManager,
$this->userManager,
$this->groupManager,
$this->caldavBackend,
$this->timeFactory,
- $this->config);
+ $this->config,
+ $this->logger,
+ );
}
public function testOnCalendarObjectDelete():void {