![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/dev/tests/integration/testsuite/Magento/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento; class MemoryUsageTest extends \PHPUnit\Framework\TestCase { /** * Number of application reinitialization iterations to be conducted by tests */ const APP_REINITIALIZATION_LOOPS = 20; /** * @var \Magento\TestFramework\Helper\Memory */ protected $_helper; protected function setUp(): void { if (defined('HHVM_VERSION')) { $this->markTestSkipped("Test not relevant because no gc in HHVM."); } $this->_helper = new \Magento\TestFramework\Helper\Memory( new \Magento\Framework\Shell(new \Magento\Framework\Shell\CommandRenderer()) ); } /** * Test that application reinitialization produces no memory leaks */ public function testAppReinitializationNoMemoryLeak() { $this->markTestSkipped('Skipped until MAGETWO-47111'); $this->_deallocateUnusedMemory(); $actualMemoryUsage = $this->_helper->getRealMemoryUsage(); for ($i = 0; $i < self::APP_REINITIALIZATION_LOOPS; $i++) { \Magento\TestFramework\Helper\Bootstrap::getInstance()->reinitialize(); $this->_deallocateUnusedMemory(); } $actualMemoryUsage = $this->_helper->getRealMemoryUsage() - $actualMemoryUsage; $this->assertLessThanOrEqual( $this->_getAllowedMemoryUsage(), $actualMemoryUsage, sprintf( "Application reinitialization causes the memory leak of %u bytes per %u iterations.", $actualMemoryUsage, self::APP_REINITIALIZATION_LOOPS ) ); } /** * Force to deallocate no longer used memory */ protected function _deallocateUnusedMemory() { gc_collect_cycles(); } /** * Retrieve the allowed memory usage in bytes, depending on the environment * * @return int */ protected function _getAllowedMemoryUsage() { // Memory usage limits should not be further increased, corresponding memory leaks have to be fixed instead! // @todo fix memory leak and decrease limit to 1 M (in scope of MAGETWO-47693 limit was temporary increased) return \Magento\TestFramework\Helper\Memory::convertToBytes('2M'); } }