From 58f7a150ed5314f489145add959b4946fb960d32 Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Fri, 3 Sep 2021 14:13:49 +0200 Subject: [PATCH] Debug log what happens during reminders processing Signed-off-by: Christoph Wurst --- .../lib/CalDAV/Reminder/ReminderService.php | 41 +++++++++++++------ .../CalDAV/Reminder/ReminderServiceTest.php | 30 ++++++++------ 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 = <<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 { -- 2.39.5