Skip to content

Commit 5439d55

Browse files
ENGCOM-8350: Use Logger implementation based on deployment configuration #27379
- Merge Pull Request #27379 from kandy/magento2:Logger - Merged commits: 1. 28d2a5b
2 parents f8dd0b5 + 28d2a5b commit 5439d55

File tree

17 files changed

+405
-122
lines changed

17 files changed

+405
-122
lines changed

app/etc/di.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
99
<preference for="DateTimeInterface" type="DateTime" />
10-
<preference for="Psr\Log\LoggerInterface" type="Magento\Framework\Logger\Monolog" />
10+
<preference for="Psr\Log\LoggerInterface" type="Magento\Framework\Logger\LoggerProxy" />
1111
<preference for="Magento\Framework\EntityManager\EntityMetadataInterface" type="Magento\Framework\EntityManager\EntityMetadata" />
1212
<preference for="Magento\Framework\EntityManager\HydratorInterface" type="Magento\Framework\EntityManager\Hydrator" />
1313
<preference for="Magento\Framework\View\Template\Html\MinifierInterface" type="Magento\Framework\View\Template\Html\Minifier" />

dev/tests/integration/etc/di/preferences/ce.php

Lines changed: 20 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,26 @@
55
* Copyright © Magento, Inc. All rights reserved.
66
* See COPYING.txt for license details.
77
*/
8+
use \Magento\Framework\App;
9+
use \Magento\Framework as MF;
10+
use \Magento\TestFramework as TF;
811

912
return [
10-
\Magento\Framework\Stdlib\CookieManagerInterface::class => \Magento\TestFramework\CookieManager::class,
11-
\Magento\Framework\ObjectManager\DynamicConfigInterface::class =>
12-
\Magento\TestFramework\ObjectManager\Configurator::class,
13-
\Magento\Framework\App\RequestInterface::class => \Magento\TestFramework\Request::class,
14-
\Magento\Framework\App\Request\Http::class => \Magento\TestFramework\Request::class,
15-
\Magento\Framework\App\ResponseInterface::class => \Magento\TestFramework\Response::class,
16-
\Magento\Framework\App\Response\Http::class => \Magento\TestFramework\Response::class,
17-
\Magento\Framework\Interception\PluginListInterface::class =>
18-
\Magento\TestFramework\Interception\PluginList::class,
19-
\Magento\Framework\Interception\ObjectManager\ConfigInterface::class =>
20-
\Magento\TestFramework\ObjectManager\Config::class,
21-
\Magento\Framework\Interception\ObjectManager\Config\Developer::class =>
22-
\Magento\TestFramework\ObjectManager\Config::class,
23-
\Magento\Framework\View\LayoutInterface::class => \Magento\TestFramework\View\Layout::class,
24-
\Magento\Framework\App\ResourceConnection\ConnectionAdapterInterface::class =>
25-
\Magento\TestFramework\Db\ConnectionAdapter::class,
26-
\Magento\Framework\Filesystem\DriverInterface::class => \Magento\Framework\Filesystem\Driver\File::class,
27-
\Magento\Framework\App\Config\ScopeConfigInterface::class => \Magento\TestFramework\App\Config::class,
28-
\Magento\Framework\App\ResourceConnection\ConfigInterface::class =>
29-
\Magento\Framework\App\ResourceConnection\Config::class,
30-
\Magento\Framework\Lock\Backend\Database::class =>
31-
\Magento\TestFramework\Lock\Backend\DummyLocker::class,
32-
\Magento\Framework\Session\SessionStartChecker::class => \Magento\TestFramework\Session\SessionStartChecker::class,
33-
\Magento\Framework\HTTP\AsyncClientInterface::class => \Magento\TestFramework\HTTP\AsyncClientInterfaceMock::class
13+
MF\Stdlib\CookieManagerInterface::class => TF\CookieManager::class,
14+
MF\ObjectManager\DynamicConfigInterface::class => TF\ObjectManager\Configurator::class,
15+
App\RequestInterface::class => TF\Request::class,
16+
App\Request\Http::class => TF\Request::class,
17+
App\ResponseInterface::class => TF\Response::class,
18+
App\Response\Http::class => TF\Response::class,
19+
MF\Interception\PluginListInterface::class => TF\Interception\PluginList::class,
20+
MF\Interception\ObjectManager\ConfigInterface::class => TF\ObjectManager\Config::class,
21+
MF\Interception\ObjectManager\Config\Developer::class => TF\ObjectManager\Config::class,
22+
MF\View\LayoutInterface::class => TF\View\Layout::class,
23+
App\ResourceConnection\ConnectionAdapterInterface::class => TF\Db\ConnectionAdapter::class,
24+
MF\Filesystem\DriverInterface::class => MF\Filesystem\Driver\File::class,
25+
App\Config\ScopeConfigInterface::class => TF\App\Config::class,
26+
App\ResourceConnection\ConfigInterface::class => App\ResourceConnection\Config::class,
27+
MF\Lock\Backend\Database::class => TF\Lock\Backend\DummyLocker::class,
28+
MF\Session\SessionStartChecker::class => TF\Session\SessionStartChecker::class,
29+
MF\HTTP\AsyncClientInterface::class => TF\HTTP\AsyncClientInterfaceMock::class
3430
];

dev/tests/integration/framework/Magento/TestFramework/Application.php

Lines changed: 38 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@
55
*/
66
namespace Magento\TestFramework;
77

8-
use Magento\Framework\Autoload\AutoloaderInterface;
9-
use Magento\Framework\App\Filesystem\DirectoryList;
108
use Magento\Framework\App\DeploymentConfig;
11-
use Magento\Framework\Config\ConfigOptionsListConstants;
129
use Magento\Framework\App\DeploymentConfig\Reader;
10+
use Magento\Framework\App\Filesystem\DirectoryList;
11+
use Magento\Framework\Autoload\AutoloaderInterface;
12+
use Magento\Framework\Config\ConfigOptionsListConstants;
1313
use Magento\Framework\Filesystem\Glob;
14+
use Magento\Framework\Mail;
15+
use Magento\TestFramework;
16+
use Psr\Log\LoggerInterface;
1417

1518
/**
1619
* Encapsulates application installation, initialization and uninstall.
@@ -28,7 +31,7 @@ class Application
2831
/**
2932
* DB vendor adapter instance.
3033
*
31-
* @var \Magento\TestFramework\Db\AbstractDb
34+
* @var TestFramework\Db\AbstractDb
3235
*/
3336
protected $_db;
3437

@@ -105,14 +108,14 @@ class Application
105108
/**
106109
* Object manager factory.
107110
*
108-
* @var \Magento\TestFramework\ObjectManagerFactory
111+
* @var TestFramework\ObjectManagerFactory
109112
*/
110113
protected $_factory;
111114

112115
/**
113116
* Directory list.
114117
*
115-
* @var \Magento\Framework\App\Filesystem\DirectoryList
118+
* @var DirectoryList
116119
*/
117120
protected $dirList;
118121

@@ -180,7 +183,7 @@ public function __construct(
180183
$this->loadTestExtensionAttributes = $loadTestExtensionAttributes;
181184

182185
$customDirs = $this->getCustomDirs();
183-
$this->dirList = new \Magento\Framework\App\Filesystem\DirectoryList(BP, $customDirs);
186+
$this->dirList = new DirectoryList(BP, $customDirs);
184187
\Magento\Framework\Autoload\Populator::populateMappings(
185188
$autoloadWrapper,
186189
$this->dirList
@@ -189,9 +192,9 @@ public function __construct(
189192
\Magento\Framework\App\Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS => $customDirs,
190193
\Magento\Framework\App\State::PARAM_MODE => $appMode
191194
];
192-
$driverPool = new \Magento\Framework\Filesystem\DriverPool;
193-
$configFilePool = new \Magento\Framework\Config\File\ConfigFilePool;
194-
$this->_factory = new \Magento\TestFramework\ObjectManagerFactory($this->dirList, $driverPool, $configFilePool);
195+
$driverPool = new \Magento\Framework\Filesystem\DriverPool();
196+
$configFilePool = new \Magento\Framework\Config\File\ConfigFilePool();
197+
$this->_factory = new TestFramework\ObjectManagerFactory($this->dirList, $driverPool, $configFilePool);
195198

196199
$this->_configDir = $this->dirList->getPath(DirectoryList::CONFIG);
197200
$this->globalConfigFile = $globalConfigFile;
@@ -200,7 +203,7 @@ public function __construct(
200203
/**
201204
* Retrieve the database adapter instance.
202205
*
203-
* @return \Magento\TestFramework\Db\AbstractDb
206+
* @return TestFramework\Db\AbstractDb
204207
*/
205208
public function getDbInstance()
206209
{
@@ -310,7 +313,7 @@ private function initLogger()
310313
$objectManager = Helper\Bootstrap::getObjectManager();
311314
/** @var \Psr\Log\LoggerInterface $logger */
312315
$logger = $objectManager->create(
313-
\Magento\TestFramework\ErrorLog\Logger::class,
316+
TestFramework\ErrorLog\Logger::class,
314317
[
315318
'name' => 'integration-tests',
316319
'handlers' => [
@@ -331,9 +334,8 @@ private function initLogger()
331334
]
332335
]
333336
);
334-
335-
$objectManager->removeSharedInstance(\Magento\Framework\Logger\Monolog::class);
336-
$objectManager->addSharedInstance($logger, \Magento\Framework\Logger\Monolog::class);
337+
$objectManager->removeSharedInstance(LoggerInterface::class, true);
338+
$objectManager->addSharedInstance($logger, LoggerInterface::class, true);
337339
return $logger;
338340
}
339341

@@ -351,31 +353,35 @@ public function initialize($overriddenParams = [])
351353
? $overriddenParams[\Magento\Framework\App\Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS]
352354
: [];
353355
$directoryList = new DirectoryList(BP, $directories);
354-
/** @var \Magento\TestFramework\ObjectManager $objectManager */
356+
/** @var TestFramework\ObjectManager $objectManager */
355357
$objectManager = Helper\Bootstrap::getObjectManager();
356358
if (!$objectManager) {
357359
$objectManager = $this->_factory->create($overriddenParams);
358-
$objectManager->addSharedInstance($directoryList, \Magento\Framework\App\Filesystem\DirectoryList::class);
359-
$objectManager->addSharedInstance($directoryList, \Magento\Framework\Filesystem\DirectoryList::class);
360+
$objectManager->addSharedInstance(
361+
$directoryList,
362+
DirectoryList::class
363+
);
364+
$objectManager->addSharedInstance(
365+
$directoryList,
366+
\Magento\Framework\Filesystem\DirectoryList::class
367+
);
360368
} else {
361369
$objectManager = $this->_factory->restore($objectManager, $directoryList, $overriddenParams);
362370
}
363-
/** @var \Magento\TestFramework\App\Filesystem $filesystem */
364-
$filesystem = $objectManager->get(\Magento\TestFramework\App\Filesystem::class);
371+
/** @var TestFramework\App\Filesystem $filesystem */
372+
$filesystem = $objectManager->get(TestFramework\App\Filesystem::class);
365373
$objectManager->removeSharedInstance(\Magento\Framework\Filesystem::class);
366374
$objectManager->addSharedInstance($filesystem, \Magento\Framework\Filesystem::class);
367375
Helper\Bootstrap::setObjectManager($objectManager);
368376
$this->initLogger();
369-
$sequenceBuilder = $objectManager->get(\Magento\TestFramework\Db\Sequence\Builder::class);
377+
$sequenceBuilder = $objectManager->get(TestFramework\Db\Sequence\Builder::class);
370378
$objectManager->addSharedInstance($sequenceBuilder, \Magento\SalesSequence\Model\Builder::class);
371379

372380
$objectManagerConfiguration = [
373381
'preferences' => [
374-
\Magento\Framework\App\State::class => \Magento\TestFramework\App\State::class,
375-
\Magento\Framework\Mail\TransportInterface::class =>
376-
\Magento\TestFramework\Mail\TransportInterfaceMock::class,
377-
\Magento\Framework\Mail\Template\TransportBuilder::class
378-
=> \Magento\TestFramework\Mail\Template\TransportBuilderMock::class,
382+
\Magento\Framework\App\State::class => TestFramework\App\State::class,
383+
Mail\TransportInterface::class => TestFramework\Mail\TransportInterfaceMock::class,
384+
Mail\Template\TransportBuilder::class => TestFramework\Mail\Template\TransportBuilderMock::class,
379385
]
380386
];
381387
if ($this->loadTestExtensionAttributes) {
@@ -385,7 +391,7 @@ public function initialize($overriddenParams = [])
385391
\Magento\Framework\Api\ExtensionAttribute\Config\Reader::class => [
386392
'arguments' => [
387393
'fileResolver' => [
388-
'instance' => \Magento\TestFramework\Api\Config\Reader\FileResolver::class
394+
'instance' => TestFramework\Api\Config\Reader\FileResolver::class
389395
],
390396
],
391397
],
@@ -400,26 +406,26 @@ public function initialize($overriddenParams = [])
400406
[
401407
'core_app_init_current_store_after' => [
402408
'integration_tests' => [
403-
'instance' => \Magento\TestFramework\Event\Magento::class,
409+
'instance' => TestFramework\Event\Magento::class,
404410
'name' => 'integration_tests'
405411
]
406412
]
407413
]
408414
);
409415

410416
if ($this->canLoadArea) {
411-
$this->loadArea(\Magento\TestFramework\Application::DEFAULT_APP_AREA);
417+
$this->loadArea(TestFramework\Application::DEFAULT_APP_AREA);
412418
}
413419

414-
\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->configure(
420+
TestFramework\Helper\Bootstrap::getObjectManager()->configure(
415421
$objectManager->get(\Magento\Framework\ObjectManager\DynamicConfigInterface::class)->getConfiguration()
416422
);
417423
\Magento\Framework\Phrase::setRenderer(
418424
$objectManager->get(\Magento\Framework\Phrase\Renderer\Placeholder::class)
419425
);
420426

421427
if ($this->canInstallSequence) {
422-
/** @var \Magento\TestFramework\Db\Sequence $sequence */
428+
/** @var TestFramework\Db\Sequence $sequence */
423429
$sequence = $objectManager->get(\Magento\TestFramework\Db\Sequence::class);
424430
$sequence->generateSequences();
425431
}
@@ -649,7 +655,7 @@ protected function _ensureDirExists($dir)
649655
// phpcs:ignore Magento2.Functions.DiscouragedFunction
650656
mkdir($dir, 0777, true);
651657
umask($old);
652-
// phpcs:ignore Magento2.Functions.DiscouragedFunction
658+
// phpcs:ignore Magento2.Functions.DiscouragedFunction
653659
} elseif (!is_dir($dir)) {
654660
throw new \Magento\Framework\Exception\LocalizedException(__("'%1' is not a directory.", $dir));
655661
}

dev/tests/integration/framework/Magento/TestFramework/ObjectManager.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,21 +85,25 @@ private function clearMappedTableNames()
8585
*
8686
* @param mixed $instance
8787
* @param string $className
88+
* @param bool $forPreference Resolve preference for class
8889
* @return void
8990
*/
90-
public function addSharedInstance($instance, $className)
91+
public function addSharedInstance($instance, $className, $forPreference = false)
9192
{
93+
$className = $forPreference ? $this->_config->getPreference($className) : $className;
9294
$this->_sharedInstances[$className] = $instance;
9395
}
9496

9597
/**
9698
* Remove shared instance.
9799
*
98100
* @param string $className
101+
* @param bool $forPreference Resolve preference for class
99102
* @return void
100103
*/
101-
public function removeSharedInstance($className)
104+
public function removeSharedInstance($className, $forPreference = false)
102105
{
106+
$className = $forPreference ? $this->_config->getPreference($className) : $className;
103107
unset($this->_sharedInstances[$className]);
104108
}
105109

@@ -115,6 +119,8 @@ public static function setInstance(\Magento\Framework\ObjectManagerInterface $ob
115119
}
116120

117121
/**
122+
* Get object factory
123+
*
118124
* @return \Magento\Framework\ObjectManager\FactoryInterface|\Magento\Framework\ObjectManager\Factory\Factory
119125
*/
120126
public function getFactory()

dev/tests/integration/framework/Magento/TestFramework/ObjectManagerFactory.php

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,18 @@
55
*/
66
namespace Magento\TestFramework;
77

8+
use Magento\Framework\App\DeploymentConfig;
89
use Magento\Framework\App\Filesystem\DirectoryList;
10+
use Magento\Framework\App\ObjectManager\ConfigLoader;
911
use Magento\Framework\Exception\LocalizedException;
1012
use Magento\Framework\Filesystem\DriverPool;
13+
use Magento\Framework\Interception\PluginListInterface;
14+
use Magento\Framework\ObjectManager\ConfigLoaderInterface;
15+
use Magento\TestFramework\App\EnvironmentFactory;
16+
use Magento\TestFramework\Db\ConnectionAdapter;
1117

1218
/**
13-
* Class ObjectManagerFactory
19+
* Configure ObjectManagerFactory for testing purpose
1420
*
1521
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
1622
*/
@@ -21,7 +27,7 @@ class ObjectManagerFactory extends \Magento\Framework\App\ObjectManagerFactory
2127
*
2228
* @var string
2329
*/
24-
protected $_locatorClassName = \Magento\TestFramework\ObjectManager::class;
30+
protected $_locatorClassName = ObjectManager::class;
2531

2632
/**
2733
* Config class name
@@ -33,7 +39,7 @@ class ObjectManagerFactory extends \Magento\Framework\App\ObjectManagerFactory
3339
/**
3440
* @var string
3541
*/
36-
protected $envFactoryClassName = \Magento\TestFramework\App\EnvironmentFactory::class;
42+
protected $envFactoryClassName = EnvironmentFactory::class;
3743

3844
/**
3945
* @var array
@@ -50,21 +56,25 @@ class ObjectManagerFactory extends \Magento\Framework\App\ObjectManagerFactory
5056
*/
5157
public function restore(ObjectManager $objectManager, $directoryList, array $arguments)
5258
{
53-
\Magento\TestFramework\ObjectManager::setInstance($objectManager);
59+
ObjectManager::setInstance($objectManager);
5460
$this->directoryList = $directoryList;
5561
$objectManager->configure($this->_primaryConfigData);
56-
$objectManager->addSharedInstance($this->directoryList, \Magento\Framework\App\Filesystem\DirectoryList::class);
57-
$objectManager->addSharedInstance($this->directoryList, \Magento\Framework\Filesystem\DirectoryList::class);
62+
$objectManager->addSharedInstance($this->directoryList, DirectoryList::class);
63+
$objectManager->addSharedInstance(
64+
$this->directoryList,
65+
\Magento\Framework\Filesystem\DirectoryList::class
66+
);
5867
$deploymentConfig = $this->createDeploymentConfig($directoryList, $this->configFilePool, $arguments);
5968
$this->factory->setArguments($arguments);
60-
$objectManager->addSharedInstance($deploymentConfig, \Magento\Framework\App\DeploymentConfig::class);
69+
$objectManager->addSharedInstance($deploymentConfig, DeploymentConfig::class);
6170
$objectManager->addSharedInstance(
62-
$objectManager->get(\Magento\Framework\App\ObjectManager\ConfigLoader::class),
63-
\Magento\Framework\ObjectManager\ConfigLoaderInterface::class
71+
$objectManager->get(ConfigLoader::class),
72+
ConfigLoaderInterface::class,
73+
true
6474
);
65-
$objectManager->get(\Magento\Framework\Interception\PluginListInterface::class)->reset();
75+
$objectManager->get(PluginListInterface::class)->reset();
6676
$objectManager->configure(
67-
$objectManager->get(\Magento\Framework\App\ObjectManager\ConfigLoader::class)->load('global')
77+
$objectManager->get(ConfigLoader::class)->load('global')
6878
);
6979

7080
return $objectManager;
@@ -73,7 +83,7 @@ public function restore(ObjectManager $objectManager, $directoryList, array $arg
7383
/**
7484
* Load primary config
7585
*
76-
* @param \Magento\Framework\App\Filesystem\DirectoryList $directoryList
86+
* @param DirectoryList $directoryList
7787
* @param DriverPool $driverPool
7888
* @param mixed $argumentMapper
7989
* @param string $appMode
@@ -85,7 +95,7 @@ protected function _loadPrimaryConfig(DirectoryList $directoryList, $driverPool,
8595
$this->_primaryConfigData = array_replace(
8696
parent::_loadPrimaryConfig($directoryList, $driverPool, $argumentMapper, $appMode),
8797
[
88-
'default_setup' => ['type' => \Magento\TestFramework\Db\ConnectionAdapter::class]
98+
'default_setup' => ['type' => ConnectionAdapter::class]
8999
]
90100
);
91101
$diPreferences = [];

0 commit comments

Comments
 (0)