From 3b3e25d0e776a22adc01ef97de306a8095d72385 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Tue, 21 Jan 2025 17:20:21 +0100 Subject: [PATCH 1/5] feat: Add FPM statistics MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Côme Chilliet --- lib/Controller/ApiController.php | 52 ++++++++++-------------------- lib/FpmStatistics.php | 50 +++++++++++++++++++++++++++++ lib/Settings/AdminSettings.php | 40 +++++++---------------- templates/settings-admin.php | 55 ++++++++++++++++++++++++++++++++ 4 files changed, 133 insertions(+), 64 deletions(-) create mode 100644 lib/FpmStatistics.php diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 91c10f44..6ebe791e 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -12,6 +12,7 @@ use OCA\ServerInfo\DatabaseStatistics; use OCA\ServerInfo\Os; use OCA\ServerInfo\PhpStatistics; +use OCA\ServerInfo\FpmStatistics; use OCA\ServerInfo\SessionStatistics; use OCA\ServerInfo\ShareStatistics; use OCA\ServerInfo\StorageStatistics; @@ -25,44 +26,22 @@ use OCP\IUserSession; class ApiController extends OCSController { - private Os $os; - private IConfig $config; - private IGroupManager $groupManager; - private ?IUserSession $userSession; - private SystemStatistics $systemStatistics; - private StorageStatistics $storageStatistics; - private PhpStatistics $phpStatistics; - private DatabaseStatistics $databaseStatistics; - private ShareStatistics $shareStatistics; - private SessionStatistics $sessionStatistics; - - /** - * ApiController constructor. - */ - public function __construct(string $appName, + public function __construct( + string $appName, IRequest $request, - IConfig $config, - IGroupManager $groupManager, - ?IUserSession $userSession, - Os $os, - SystemStatistics $systemStatistics, - StorageStatistics $storageStatistics, - PhpStatistics $phpStatistics, - DatabaseStatistics $databaseStatistics, - ShareStatistics $shareStatistics, - SessionStatistics $sessionStatistics) { + private IConfig $config, + private IGroupManager $groupManager, + private ?IUserSession $userSession, + private Os $os, + private SystemStatistics $systemStatistics, + private StorageStatistics $storageStatistics, + private PhpStatistics $phpStatistics, + private FpmStatistics $fpmStatistics, + private DatabaseStatistics $databaseStatistics, + private ShareStatistics $shareStatistics, + private SessionStatistics $sessionStatistics, + ) { parent::__construct($appName, $request); - - $this->config = $config; - $this->groupManager = $groupManager; - $this->userSession = $userSession; - $this->os = $os; - $this->systemStatistics = $systemStatistics; - $this->storageStatistics = $storageStatistics; - $this->phpStatistics = $phpStatistics; - $this->databaseStatistics = $databaseStatistics; - $this->shareStatistics = $shareStatistics; - $this->sessionStatistics = $sessionStatistics; } /** @@ -114,6 +93,7 @@ public function info(bool $skipApps = true, bool $skipUpdate = true): DataRespon 'server' => [ 'webserver' => $this->getWebserver(), 'php' => $this->phpStatistics->getPhpStatistics(), + 'fpm' => $this->fpmStatistics->getFpmStatistics(), 'database' => $this->databaseStatistics->getDatabaseStatistics() ], 'activeUsers' => $this->sessionStatistics->getSessionStatistics() diff --git a/lib/FpmStatistics.php b/lib/FpmStatistics.php new file mode 100644 index 00000000..ccdf2c20 --- /dev/null +++ b/lib/FpmStatistics.php @@ -0,0 +1,50 @@ +dateTimeFormatter->formatDateTime($status['start-time']); + unset($status['procs']); + return $status; + } +} diff --git a/lib/Settings/AdminSettings.php b/lib/Settings/AdminSettings.php index 0eb9817a..fa776a3a 100644 --- a/lib/Settings/AdminSettings.php +++ b/lib/Settings/AdminSettings.php @@ -13,6 +13,7 @@ use OCA\ServerInfo\DatabaseStatistics; use OCA\ServerInfo\Os; use OCA\ServerInfo\PhpStatistics; +use OCA\ServerInfo\FpmStatistics; use OCA\ServerInfo\SessionStatistics; use OCA\ServerInfo\ShareStatistics; use OCA\ServerInfo\StorageStatistics; @@ -24,37 +25,19 @@ use OCP\Settings\ISettings; class AdminSettings implements ISettings { - private Os $os; - private IL10N $l; - private IURLGenerator $urlGenerator; - private StorageStatistics $storageStatistics; - private PhpStatistics $phpStatistics; - private DatabaseStatistics $databaseStatistics; - private ShareStatistics $shareStatistics; - private SessionStatistics $sessionStatistics; - private SystemStatistics $systemStatistics; - public function __construct( - Os $os, - IL10N $l, - IURLGenerator $urlGenerator, - StorageStatistics $storageStatistics, - PhpStatistics $phpStatistics, - DatabaseStatistics $databaseStatistics, - ShareStatistics $shareStatistics, - SessionStatistics $sessionStatistics, - SystemStatistics $systemStatistics, + private Os $os, + private IL10N $l, + private IURLGenerator $urlGenerator, + private StorageStatistics $storageStatistics, + private PhpStatistics $phpStatistics, + private FpmStatistics $fpmStatistics, + private DatabaseStatistics $databaseStatistics, + private ShareStatistics $shareStatistics, + private SessionStatistics $sessionStatistics, + private SystemStatistics $systemStatistics, private IConfig $config, ) { - $this->os = $os; - $this->l = $l; - $this->urlGenerator = $urlGenerator; - $this->storageStatistics = $storageStatistics; - $this->phpStatistics = $phpStatistics; - $this->databaseStatistics = $databaseStatistics; - $this->shareStatistics = $shareStatistics; - $this->sessionStatistics = $sessionStatistics; - $this->systemStatistics = $systemStatistics; } public function getForm(): TemplateResponse { @@ -71,6 +54,7 @@ public function getForm(): TemplateResponse { 'storage' => $this->storageStatistics->getStorageStatistics(), 'shares' => $this->shareStatistics->getShareStatistics(), 'php' => $this->phpStatistics->getPhpStatistics(), + 'fpm' => $this->fpmStatistics->getFpmStatistics(), 'database' => $this->databaseStatistics->getDatabaseStatistics(), 'activeUsers' => $this->sessionStatistics->getSessionStatistics(), 'system' => $this->systemStatistics->getSystemStatistics(true, true), diff --git a/templates/settings-admin.php b/templates/settings-admin.php index cbd5df21..dfed0117 100644 --- a/templates/settings-admin.php +++ b/templates/settings-admin.php @@ -369,6 +369,61 @@ function FormatMegabytes(int $byte): string {

+ +
+
+

t('FPM')); ?>

+

+ t('Pool:')); ?> + +

+

+ t('Type:')); ?> + +

+

+ t('Start time:')); ?> + +

+

+ t('Accepted connections:')); ?> + +

+

+ t('Total processes:')); ?> + +

+

+ t('Active processes:')); ?> + +

+

+ t('Idle processes:')); ?> + +

+

+ t('Listen queue:')); ?> + +

+

+ t('Slow requests:')); ?> + +

+

+ t('Max listen queue reached:')); ?> + +

+

+ t('Max active processes:')); ?> + +

+

+ t('Max children reached:')); ?> + +

+
+
+ From 7ecf444df8e1569de2e0d5c1292aa386dbea140c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Thu, 23 Jan 2025 16:52:34 +0100 Subject: [PATCH 2/5] fix: Improve rendering of FPM data MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Côme Chilliet --- templates/settings-admin.php | 108 +++++++++++++++++------------------ 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/templates/settings-admin.php b/templates/settings-admin.php index dfed0117..6d7b1b35 100644 --- a/templates/settings-admin.php +++ b/templates/settings-admin.php @@ -369,62 +369,62 @@ function FormatMegabytes(int $byte): string {

- -
-
-

t('FPM')); ?>

-

- t('Pool:')); ?> - -

-

- t('Type:')); ?> - -

-

- t('Start time:')); ?> - -

-

- t('Accepted connections:')); ?> - -

-

- t('Total processes:')); ?> - -

-

- t('Active processes:')); ?> - -

-

- t('Idle processes:')); ?> - -

-

- t('Listen queue:')); ?> - -

-

- t('Slow requests:')); ?> - -

-

- t('Max listen queue reached:')); ?> - -

-

- t('Max active processes:')); ?> - -

-

- t('Max children reached:')); ?> - -

-
+
+ +

t('FPM worker pool')); ?>

+
+
+

+ t('Pool name:')); ?> + +

+

+ t('Pool type:')); ?> + +

+

+ t('Start time:')); ?> + +

+

+ t('Accepted connections:')); ?> + +

+

+ t('Total processes:')); ?> + +

+

+ t('Active processes:')); ?> + +

+

+ t('Idle processes:')); ?> + +

+

+ t('Listen queue:')); ?> + +

+

+ t('Slow requests:')); ?> + +

+

+ t('Max listen queue:')); ?> + +

+

+ t('Max active processes:')); ?> + +

+

+ t('Max children reached:')); ?> + +

-
+
From 88aeedd2b7c9b50574a2dc7b89401d2d3b7a6e78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Thu, 30 Jan 2025 15:37:33 +0100 Subject: [PATCH 3/5] chore: Fix codestyle and adapt tests to new constructor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Côme Chilliet --- lib/Controller/ApiController.php | 2 +- lib/Settings/AdminSettings.php | 2 +- tests/lib/ApiControllerTest.php | 44 +++++++++++--------------------- 3 files changed, 17 insertions(+), 31 deletions(-) diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 6ebe791e..7abc6653 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -10,9 +10,9 @@ namespace OCA\ServerInfo\Controller; use OCA\ServerInfo\DatabaseStatistics; +use OCA\ServerInfo\FpmStatistics; use OCA\ServerInfo\Os; use OCA\ServerInfo\PhpStatistics; -use OCA\ServerInfo\FpmStatistics; use OCA\ServerInfo\SessionStatistics; use OCA\ServerInfo\ShareStatistics; use OCA\ServerInfo\StorageStatistics; diff --git a/lib/Settings/AdminSettings.php b/lib/Settings/AdminSettings.php index fa776a3a..ea24c43f 100644 --- a/lib/Settings/AdminSettings.php +++ b/lib/Settings/AdminSettings.php @@ -11,9 +11,9 @@ namespace OCA\ServerInfo\Settings; use OCA\ServerInfo\DatabaseStatistics; +use OCA\ServerInfo\FpmStatistics; use OCA\ServerInfo\Os; use OCA\ServerInfo\PhpStatistics; -use OCA\ServerInfo\FpmStatistics; use OCA\ServerInfo\SessionStatistics; use OCA\ServerInfo\ShareStatistics; use OCA\ServerInfo\StorageStatistics; diff --git a/tests/lib/ApiControllerTest.php b/tests/lib/ApiControllerTest.php index 72b471c2..490b8577 100644 --- a/tests/lib/ApiControllerTest.php +++ b/tests/lib/ApiControllerTest.php @@ -11,6 +11,7 @@ use OCA\ServerInfo\Controller\ApiController; use OCA\ServerInfo\DatabaseStatistics; +use OCA\ServerInfo\FpmStatistics; use OCA\ServerInfo\Os; use OCA\ServerInfo\PhpStatistics; use OCA\ServerInfo\SessionStatistics; @@ -23,37 +24,20 @@ use OCP\IRequest; use OCP\IUser; use OCP\IUserSession; +use PHPUnit\Framework\MockObject\MockObject; class ApiControllerTest extends \Test\TestCase { - /** @var Os|\PHPUnit\Framework\MockObject\MockObject */ - private $os; - - /** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */ - private $request; - - /** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */ - private $config; - - /** @var IGroupManager|\PHPUnit\Framework\MockObject\MockObject */ - private $groupManager; - - /** @var SystemStatistics|\PHPUnit\Framework\MockObject\MockObject */ - private $systemStatistics; - - /** @var StorageStatistics|\PHPUnit\Framework\MockObject\MockObject */ - private $storageStatistics; - - /** @var PhpStatistics|\PHPUnit\Framework\MockObject\MockObject */ - private $phpStatistics; - - /** @var DatabaseStatistics|\PHPUnit\Framework\MockObject\MockObject */ - private $databaseStatistics; - - /** @var ShareStatistics|\PHPUnit\Framework\MockObject\MockObject */ - private $shareStatistics; - - /** @var SessionStatistics|\PHPUnit\Framework\MockObject\MockObject */ - private $sessionStatistics; + private Os&MockObject $os; + private IRequest&MockObject $request; + private IConfig&MockObject $config; + private IGroupManager&MockObject $groupManager; + private SystemStatistics&MockObject $systemStatistics; + private StorageStatistics&MockObject $storageStatistics; + private PhpStatistics&MockObject $phpStatistics; + private FpmStatistics&MockObject $fpmStatistics; + private DatabaseStatistics&MockObject $databaseStatistics; + private ShareStatistics&MockObject $shareStatistics; + private SessionStatistics&MockObject $sessionStatistics; protected function setUp(): void { parent::setUp(); @@ -65,6 +49,7 @@ protected function setUp(): void { $this->systemStatistics = $this->createMock(SystemStatistics::class); $this->storageStatistics = $this->createMock(StorageStatistics::class); $this->phpStatistics = $this->createMock(PhpStatistics::class); + $this->fpmStatistics = $this->createMock(FpmStatistics::class); $this->databaseStatistics = $this->createMock(DatabaseStatistics::class); $this->shareStatistics = $this->createMock(ShareStatistics::class); $this->sessionStatistics = $this->createMock(SessionStatistics::class); @@ -81,6 +66,7 @@ private function getController($userSession) { $this->systemStatistics, $this->storageStatistics, $this->phpStatistics, + $this->fpmStatistics, $this->databaseStatistics, $this->shareStatistics, $this->sessionStatistics From 0b8c0b1fc700ae1df3d93cd5acdad1d7e22f93a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Thu, 30 Jan 2025 15:57:35 +0100 Subject: [PATCH 4/5] chore: Add missing key in test expected output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Côme Chilliet --- tests/lib/ApiControllerTest.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/lib/ApiControllerTest.php b/tests/lib/ApiControllerTest.php index 490b8577..9a559da1 100644 --- a/tests/lib/ApiControllerTest.php +++ b/tests/lib/ApiControllerTest.php @@ -189,6 +189,9 @@ public function testInfo() { $this->phpStatistics->expects($this->once()) ->method('getPhpStatistics') ->willReturn(['some_php' => 'some_value']); + $this->fpmStatistics->expects($this->once()) + ->method('getFpmStatistics') + ->willReturn(['some_fpm' => 'some_value']); $this->databaseStatistics->expects($this->once()) ->method('getDatabaseStatistics') ->willReturn(['some_database' => 'some_value']); @@ -209,6 +212,7 @@ public function testInfo() { 'server' => [ 'webserver' => 'unknown', 'php' => ['some_php' => 'some_value'], + 'fpm' => ['some_fpm' => 'some_value'], 'database' => ['some_database' => 'some_value'], ], 'activeUsers' => ['some_user' => 'some_value'], From eab2f898a06371201ed60f3788d371107f32b56d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=B4me=20Chilliet?= Date: Thu, 30 Jan 2025 16:12:06 +0100 Subject: [PATCH 5/5] chore: Remove erronous package annotation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Côme Chilliet --- lib/FpmStatistics.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/FpmStatistics.php b/lib/FpmStatistics.php index ccdf2c20..18b1fc00 100644 --- a/lib/FpmStatistics.php +++ b/lib/FpmStatistics.php @@ -11,9 +11,6 @@ use OCP\IDateTimeFormatter; -/** - * @package OCA\Survey_Client\Categories - */ class FpmStatistics { public function __construct( private IDateTimeFormatter $dateTimeFormatter,