119 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
	
<?php
 | 
						|
/**
 | 
						|
 * Copyright © Magento, Inc. All rights reserved.
 | 
						|
 * See COPYING.txt for license details.
 | 
						|
 */
 | 
						|
namespace Magento\Framework;
 | 
						|
 | 
						|
use ReflectionClass;
 | 
						|
 | 
						|
class ProfilerTest extends \PHPUnit\Framework\TestCase
 | 
						|
{
 | 
						|
    protected function tearDown(): void
 | 
						|
    {
 | 
						|
        \Magento\Framework\Profiler::reset();
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @dataProvider applyConfigDataProvider
 | 
						|
     * @param array $config
 | 
						|
     * @param array $expectedDrivers
 | 
						|
     */
 | 
						|
    public function testApplyConfigWithDrivers(array $config, array $expectedDrivers)
 | 
						|
    {
 | 
						|
        $profiler = new \Magento\Framework\Profiler();
 | 
						|
        $profiler::applyConfig($config, '');
 | 
						|
        $this->assertIsObject($profiler);
 | 
						|
        $this->assertTrue(property_exists($profiler, '_drivers'));
 | 
						|
        $object = new ReflectionClass(\Magento\Framework\Profiler::class);
 | 
						|
        $attribute = $object->getProperty('_drivers');
 | 
						|
        $attribute->setAccessible(true);
 | 
						|
        $propertyObject = $attribute->getValue($profiler);
 | 
						|
        $attribute->setAccessible(false);
 | 
						|
        $this->assertEquals($expectedDrivers, $propertyObject);
 | 
						|
    }
 | 
						|
 | 
						|
    /**
 | 
						|
     * @return array
 | 
						|
     */
 | 
						|
    public function applyConfigDataProvider()
 | 
						|
    {
 | 
						|
        return [
 | 
						|
            'Empty config does not create any driver' => ['config' => [], 'drivers' => []],
 | 
						|
            'Integer 0 does not create any driver' => [
 | 
						|
                'config' => ['drivers' => [0]],
 | 
						|
                'drivers' => [],
 | 
						|
            ],
 | 
						|
            'Integer 1 does creates standard driver' => [
 | 
						|
                'config' => ['drivers' => [1]],
 | 
						|
                'drivers' => [new \Magento\Framework\Profiler\Driver\Standard()],
 | 
						|
            ],
 | 
						|
            'Config array key sets driver type' => [
 | 
						|
                'configs' => ['drivers' => ['standard' => 1]],
 | 
						|
                'drivers' => [new \Magento\Framework\Profiler\Driver\Standard()],
 | 
						|
            ],
 | 
						|
            'Config array key ignored when type set' => [
 | 
						|
                'config' => ['drivers' => ['custom' => ['type' => 'standard']]],
 | 
						|
                'drivers' => [new \Magento\Framework\Profiler\Driver\Standard()],
 | 
						|
            ],
 | 
						|
            'Config with outputs element as integer 1 creates output' => [
 | 
						|
                'config' => [
 | 
						|
                    'drivers' => [['outputs' => ['html' => 1]]],
 | 
						|
                    'baseDir' => '/some/base/dir',
 | 
						|
                ],
 | 
						|
                'drivers' => [
 | 
						|
                    new \Magento\Framework\Profiler\Driver\Standard(
 | 
						|
                        ['outputs' => [['type' => 'html', 'baseDir' => '/some/base/dir']]]
 | 
						|
                    ),
 | 
						|
                ],
 | 
						|
            ],
 | 
						|
            'Config with outputs element as integer 0 does not create output' => [
 | 
						|
                'config' => ['drivers' => [['outputs' => ['html' => 0]]]],
 | 
						|
                'drivers' => [new \Magento\Framework\Profiler\Driver\Standard()],
 | 
						|
            ],
 | 
						|
            'Config with shortly defined outputs element' => [
 | 
						|
                'config' => ['drivers' => [['outputs' => ['foo' => 'html']]]],
 | 
						|
                'drivers' => [
 | 
						|
                    new \Magento\Framework\Profiler\Driver\Standard(['outputs' => [['type' => 'html']]]),
 | 
						|
                ],
 | 
						|
            ],
 | 
						|
            'Config with fully defined outputs element options' => [
 | 
						|
                'config' => [
 | 
						|
                    'drivers' => [
 | 
						|
                        [
 | 
						|
                            'outputs' => [
 | 
						|
                                'foo' => [
 | 
						|
                                    'type' => 'html',
 | 
						|
                                    'filterName' => '/someFilter/',
 | 
						|
                                    'thresholds' => ['someKey' => 123],
 | 
						|
                                    'baseDir' => '/custom/dir',
 | 
						|
                                ],
 | 
						|
                            ],
 | 
						|
                        ],
 | 
						|
                    ],
 | 
						|
                ],
 | 
						|
                'drivers' => [
 | 
						|
                    new \Magento\Framework\Profiler\Driver\Standard(
 | 
						|
                        [
 | 
						|
                            'outputs' => [
 | 
						|
                                [
 | 
						|
                                    'type' => 'html',
 | 
						|
                                    'filterName' => '/someFilter/',
 | 
						|
                                    'thresholds' => ['someKey' => 123],
 | 
						|
                                    'baseDir' => '/custom/dir',
 | 
						|
                                ],
 | 
						|
                            ],
 | 
						|
                        ]
 | 
						|
                    ),
 | 
						|
                ],
 | 
						|
            ],
 | 
						|
            'Config with shortly defined output' => [
 | 
						|
                'config' => ['drivers' => [['output' => 'html']]],
 | 
						|
                'drivers' => [
 | 
						|
                    new \Magento\Framework\Profiler\Driver\Standard(['outputs' => [['type' => 'html']]]),
 | 
						|
                ],
 | 
						|
            ]
 | 
						|
        ];
 | 
						|
    }
 | 
						|
}
 |