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,