diff --git a/lib/Controller/ApiController.php b/lib/Controller/ApiController.php index 91c10f44..7abc6653 100644 --- a/lib/Controller/ApiController.php +++ b/lib/Controller/ApiController.php @@ -10,6 +10,7 @@ namespace OCA\ServerInfo\Controller; use OCA\ServerInfo\DatabaseStatistics; +use OCA\ServerInfo\FpmStatistics; use OCA\ServerInfo\Os; use OCA\ServerInfo\PhpStatistics; use OCA\ServerInfo\SessionStatistics; @@ -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..18b1fc00 --- /dev/null +++ b/lib/FpmStatistics.php @@ -0,0 +1,47 @@ +dateTimeFormatter->formatDateTime($status['start-time']); + unset($status['procs']); + return $status; + } +} diff --git a/lib/Settings/AdminSettings.php b/lib/Settings/AdminSettings.php index 0eb9817a..ea24c43f 100644 --- a/lib/Settings/AdminSettings.php +++ b/lib/Settings/AdminSettings.php @@ -11,6 +11,7 @@ namespace OCA\ServerInfo\Settings; use OCA\ServerInfo\DatabaseStatistics; +use OCA\ServerInfo\FpmStatistics; use OCA\ServerInfo\Os; use OCA\ServerInfo\PhpStatistics; use OCA\ServerInfo\SessionStatistics; @@ -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..6d7b1b35 100644 --- a/templates/settings-admin.php +++ b/templates/settings-admin.php @@ -370,6 +370,61 @@ function FormatMegabytes(int $byte): string { + +

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:')); ?> + +

+
+
+
diff --git a/tests/lib/ApiControllerTest.php b/tests/lib/ApiControllerTest.php index 72b471c2..9a559da1 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 @@ -203,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']); @@ -223,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'],