Skip to content

Use Logger implementation based on deployment configuration #27379

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 13, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/etc/di.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="DateTimeInterface" type="DateTime" />
<preference for="Psr\Log\LoggerInterface" type="Magento\Framework\Logger\Monolog" />
<preference for="Psr\Log\LoggerInterface" type="Magento\Framework\Logger\LoggerProxy" />
<preference for="Magento\Framework\EntityManager\EntityMetadataInterface" type="Magento\Framework\EntityManager\EntityMetadata" />
<preference for="Magento\Framework\EntityManager\HydratorInterface" type="Magento\Framework\EntityManager\Hydrator" />
<preference for="Magento\Framework\View\Template\Html\MinifierInterface" type="Magento\Framework\View\Template\Html\Minifier" />
Expand Down
44 changes: 20 additions & 24 deletions dev/tests/integration/etc/di/preferences/ce.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,30 +5,26 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
use \Magento\Framework\App;
use \Magento\Framework as MF;
use \Magento\TestFramework as TF;

return [
\Magento\Framework\Stdlib\CookieManagerInterface::class => \Magento\TestFramework\CookieManager::class,
\Magento\Framework\ObjectManager\DynamicConfigInterface::class =>
\Magento\TestFramework\ObjectManager\Configurator::class,
\Magento\Framework\App\RequestInterface::class => \Magento\TestFramework\Request::class,
\Magento\Framework\App\Request\Http::class => \Magento\TestFramework\Request::class,
\Magento\Framework\App\ResponseInterface::class => \Magento\TestFramework\Response::class,
\Magento\Framework\App\Response\Http::class => \Magento\TestFramework\Response::class,
\Magento\Framework\Interception\PluginListInterface::class =>
\Magento\TestFramework\Interception\PluginList::class,
\Magento\Framework\Interception\ObjectManager\ConfigInterface::class =>
\Magento\TestFramework\ObjectManager\Config::class,
\Magento\Framework\Interception\ObjectManager\Config\Developer::class =>
\Magento\TestFramework\ObjectManager\Config::class,
\Magento\Framework\View\LayoutInterface::class => \Magento\TestFramework\View\Layout::class,
\Magento\Framework\App\ResourceConnection\ConnectionAdapterInterface::class =>
\Magento\TestFramework\Db\ConnectionAdapter::class,
\Magento\Framework\Filesystem\DriverInterface::class => \Magento\Framework\Filesystem\Driver\File::class,
\Magento\Framework\App\Config\ScopeConfigInterface::class => \Magento\TestFramework\App\Config::class,
\Magento\Framework\App\ResourceConnection\ConfigInterface::class =>
\Magento\Framework\App\ResourceConnection\Config::class,
\Magento\Framework\Lock\Backend\Database::class =>
\Magento\TestFramework\Lock\Backend\DummyLocker::class,
\Magento\Framework\Session\SessionStartChecker::class => \Magento\TestFramework\Session\SessionStartChecker::class,
\Magento\Framework\HTTP\AsyncClientInterface::class => \Magento\TestFramework\HTTP\AsyncClientInterfaceMock::class
MF\Stdlib\CookieManagerInterface::class => TF\CookieManager::class,
MF\ObjectManager\DynamicConfigInterface::class => TF\ObjectManager\Configurator::class,
App\RequestInterface::class => TF\Request::class,
App\Request\Http::class => TF\Request::class,
App\ResponseInterface::class => TF\Response::class,
App\Response\Http::class => TF\Response::class,
MF\Interception\PluginListInterface::class => TF\Interception\PluginList::class,
MF\Interception\ObjectManager\ConfigInterface::class => TF\ObjectManager\Config::class,
MF\Interception\ObjectManager\Config\Developer::class => TF\ObjectManager\Config::class,
MF\View\LayoutInterface::class => TF\View\Layout::class,
App\ResourceConnection\ConnectionAdapterInterface::class => TF\Db\ConnectionAdapter::class,
MF\Filesystem\DriverInterface::class => MF\Filesystem\Driver\File::class,
App\Config\ScopeConfigInterface::class => TF\App\Config::class,
App\ResourceConnection\ConfigInterface::class => App\ResourceConnection\Config::class,
MF\Lock\Backend\Database::class => TF\Lock\Backend\DummyLocker::class,
MF\Session\SessionStartChecker::class => TF\Session\SessionStartChecker::class,
MF\HTTP\AsyncClientInterface::class => TF\HTTP\AsyncClientInterfaceMock::class
];
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,15 @@
*/
namespace Magento\TestFramework;

use Magento\Framework\Autoload\AutoloaderInterface;
use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Framework\App\DeploymentConfig;
use Magento\Framework\Config\ConfigOptionsListConstants;
use Magento\Framework\App\DeploymentConfig\Reader;
use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Framework\Autoload\AutoloaderInterface;
use Magento\Framework\Config\ConfigOptionsListConstants;
use Magento\Framework\Filesystem\Glob;
use Magento\Framework\Mail;
use Magento\TestFramework;
use Psr\Log\LoggerInterface;

/**
* Encapsulates application installation, initialization and uninstall.
Expand All @@ -28,7 +31,7 @@ class Application
/**
* DB vendor adapter instance.
*
* @var \Magento\TestFramework\Db\AbstractDb
* @var TestFramework\Db\AbstractDb
*/
protected $_db;

Expand Down Expand Up @@ -105,14 +108,14 @@ class Application
/**
* Object manager factory.
*
* @var \Magento\TestFramework\ObjectManagerFactory
* @var TestFramework\ObjectManagerFactory
*/
protected $_factory;

/**
* Directory list.
*
* @var \Magento\Framework\App\Filesystem\DirectoryList
* @var DirectoryList
*/
protected $dirList;

Expand Down Expand Up @@ -180,7 +183,7 @@ public function __construct(
$this->loadTestExtensionAttributes = $loadTestExtensionAttributes;

$customDirs = $this->getCustomDirs();
$this->dirList = new \Magento\Framework\App\Filesystem\DirectoryList(BP, $customDirs);
$this->dirList = new DirectoryList(BP, $customDirs);
\Magento\Framework\Autoload\Populator::populateMappings(
$autoloadWrapper,
$this->dirList
Expand All @@ -189,9 +192,9 @@ public function __construct(
\Magento\Framework\App\Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS => $customDirs,
\Magento\Framework\App\State::PARAM_MODE => $appMode
];
$driverPool = new \Magento\Framework\Filesystem\DriverPool;
$configFilePool = new \Magento\Framework\Config\File\ConfigFilePool;
$this->_factory = new \Magento\TestFramework\ObjectManagerFactory($this->dirList, $driverPool, $configFilePool);
$driverPool = new \Magento\Framework\Filesystem\DriverPool();
$configFilePool = new \Magento\Framework\Config\File\ConfigFilePool();
$this->_factory = new TestFramework\ObjectManagerFactory($this->dirList, $driverPool, $configFilePool);

$this->_configDir = $this->dirList->getPath(DirectoryList::CONFIG);
$this->globalConfigFile = $globalConfigFile;
Expand All @@ -200,7 +203,7 @@ public function __construct(
/**
* Retrieve the database adapter instance.
*
* @return \Magento\TestFramework\Db\AbstractDb
* @return TestFramework\Db\AbstractDb
*/
public function getDbInstance()
{
Expand Down Expand Up @@ -310,7 +313,7 @@ private function initLogger()
$objectManager = Helper\Bootstrap::getObjectManager();
/** @var \Psr\Log\LoggerInterface $logger */
$logger = $objectManager->create(
\Magento\TestFramework\ErrorLog\Logger::class,
TestFramework\ErrorLog\Logger::class,
[
'name' => 'integration-tests',
'handlers' => [
Expand All @@ -331,9 +334,8 @@ private function initLogger()
]
]
);

$objectManager->removeSharedInstance(\Magento\Framework\Logger\Monolog::class);
$objectManager->addSharedInstance($logger, \Magento\Framework\Logger\Monolog::class);
$objectManager->removeSharedInstance(LoggerInterface::class, true);
$objectManager->addSharedInstance($logger, LoggerInterface::class, true);
return $logger;
}

Expand All @@ -351,31 +353,35 @@ public function initialize($overriddenParams = [])
? $overriddenParams[\Magento\Framework\App\Bootstrap::INIT_PARAM_FILESYSTEM_DIR_PATHS]
: [];
$directoryList = new DirectoryList(BP, $directories);
/** @var \Magento\TestFramework\ObjectManager $objectManager */
/** @var TestFramework\ObjectManager $objectManager */
$objectManager = Helper\Bootstrap::getObjectManager();
if (!$objectManager) {
$objectManager = $this->_factory->create($overriddenParams);
$objectManager->addSharedInstance($directoryList, \Magento\Framework\App\Filesystem\DirectoryList::class);
$objectManager->addSharedInstance($directoryList, \Magento\Framework\Filesystem\DirectoryList::class);
$objectManager->addSharedInstance(
$directoryList,
DirectoryList::class
);
$objectManager->addSharedInstance(
$directoryList,
\Magento\Framework\Filesystem\DirectoryList::class
);
} else {
$objectManager = $this->_factory->restore($objectManager, $directoryList, $overriddenParams);
}
/** @var \Magento\TestFramework\App\Filesystem $filesystem */
$filesystem = $objectManager->get(\Magento\TestFramework\App\Filesystem::class);
/** @var TestFramework\App\Filesystem $filesystem */
$filesystem = $objectManager->get(TestFramework\App\Filesystem::class);
$objectManager->removeSharedInstance(\Magento\Framework\Filesystem::class);
$objectManager->addSharedInstance($filesystem, \Magento\Framework\Filesystem::class);
Helper\Bootstrap::setObjectManager($objectManager);
$this->initLogger();
$sequenceBuilder = $objectManager->get(\Magento\TestFramework\Db\Sequence\Builder::class);
$sequenceBuilder = $objectManager->get(TestFramework\Db\Sequence\Builder::class);
$objectManager->addSharedInstance($sequenceBuilder, \Magento\SalesSequence\Model\Builder::class);

$objectManagerConfiguration = [
'preferences' => [
\Magento\Framework\App\State::class => \Magento\TestFramework\App\State::class,
\Magento\Framework\Mail\TransportInterface::class =>
\Magento\TestFramework\Mail\TransportInterfaceMock::class,
\Magento\Framework\Mail\Template\TransportBuilder::class
=> \Magento\TestFramework\Mail\Template\TransportBuilderMock::class,
\Magento\Framework\App\State::class => TestFramework\App\State::class,
Mail\TransportInterface::class => TestFramework\Mail\TransportInterfaceMock::class,
Mail\Template\TransportBuilder::class => TestFramework\Mail\Template\TransportBuilderMock::class,
]
];
if ($this->loadTestExtensionAttributes) {
Expand All @@ -385,7 +391,7 @@ public function initialize($overriddenParams = [])
\Magento\Framework\Api\ExtensionAttribute\Config\Reader::class => [
'arguments' => [
'fileResolver' => [
'instance' => \Magento\TestFramework\Api\Config\Reader\FileResolver::class
'instance' => TestFramework\Api\Config\Reader\FileResolver::class
],
],
],
Expand All @@ -400,26 +406,26 @@ public function initialize($overriddenParams = [])
[
'core_app_init_current_store_after' => [
'integration_tests' => [
'instance' => \Magento\TestFramework\Event\Magento::class,
'instance' => TestFramework\Event\Magento::class,
'name' => 'integration_tests'
]
]
]
);

if ($this->canLoadArea) {
$this->loadArea(\Magento\TestFramework\Application::DEFAULT_APP_AREA);
$this->loadArea(TestFramework\Application::DEFAULT_APP_AREA);
}

\Magento\TestFramework\Helper\Bootstrap::getObjectManager()->configure(
TestFramework\Helper\Bootstrap::getObjectManager()->configure(
$objectManager->get(\Magento\Framework\ObjectManager\DynamicConfigInterface::class)->getConfiguration()
);
\Magento\Framework\Phrase::setRenderer(
$objectManager->get(\Magento\Framework\Phrase\Renderer\Placeholder::class)
);

if ($this->canInstallSequence) {
/** @var \Magento\TestFramework\Db\Sequence $sequence */
/** @var TestFramework\Db\Sequence $sequence */
$sequence = $objectManager->get(\Magento\TestFramework\Db\Sequence::class);
$sequence->generateSequences();
}
Expand Down Expand Up @@ -649,7 +655,7 @@ protected function _ensureDirExists($dir)
// phpcs:ignore Magento2.Functions.DiscouragedFunction
mkdir($dir, 0777, true);
umask($old);
// phpcs:ignore Magento2.Functions.DiscouragedFunction
// phpcs:ignore Magento2.Functions.DiscouragedFunction
} elseif (!is_dir($dir)) {
throw new \Magento\Framework\Exception\LocalizedException(__("'%1' is not a directory.", $dir));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,21 +85,25 @@ private function clearMappedTableNames()
*
* @param mixed $instance
* @param string $className
* @param bool $forPreference Resolve preference for class
* @return void
*/
public function addSharedInstance($instance, $className)
public function addSharedInstance($instance, $className, $forPreference = false)
{
$className = $forPreference ? $this->_config->getPreference($className) : $className;
$this->_sharedInstances[$className] = $instance;
}

/**
* Remove shared instance.
*
* @param string $className
* @param bool $forPreference Resolve preference for class
* @return void
*/
public function removeSharedInstance($className)
public function removeSharedInstance($className, $forPreference = false)
{
$className = $forPreference ? $this->_config->getPreference($className) : $className;
unset($this->_sharedInstances[$className]);
}

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

/**
* Get object factory
*
* @return \Magento\Framework\ObjectManager\FactoryInterface|\Magento\Framework\ObjectManager\Factory\Factory
*/
public function getFactory()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,18 @@
*/
namespace Magento\TestFramework;

use Magento\Framework\App\DeploymentConfig;
use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Framework\App\ObjectManager\ConfigLoader;
use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\Filesystem\DriverPool;
use Magento\Framework\Interception\PluginListInterface;
use Magento\Framework\ObjectManager\ConfigLoaderInterface;
use Magento\TestFramework\App\EnvironmentFactory;
use Magento\TestFramework\Db\ConnectionAdapter;

/**
* Class ObjectManagerFactory
* Configure ObjectManagerFactory for testing purpose
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
Expand All @@ -21,7 +27,7 @@ class ObjectManagerFactory extends \Magento\Framework\App\ObjectManagerFactory
*
* @var string
*/
protected $_locatorClassName = \Magento\TestFramework\ObjectManager::class;
protected $_locatorClassName = ObjectManager::class;

/**
* Config class name
Expand All @@ -33,7 +39,7 @@ class ObjectManagerFactory extends \Magento\Framework\App\ObjectManagerFactory
/**
* @var string
*/
protected $envFactoryClassName = \Magento\TestFramework\App\EnvironmentFactory::class;
protected $envFactoryClassName = EnvironmentFactory::class;

/**
* @var array
Expand All @@ -50,21 +56,25 @@ class ObjectManagerFactory extends \Magento\Framework\App\ObjectManagerFactory
*/
public function restore(ObjectManager $objectManager, $directoryList, array $arguments)
{
\Magento\TestFramework\ObjectManager::setInstance($objectManager);
ObjectManager::setInstance($objectManager);
$this->directoryList = $directoryList;
$objectManager->configure($this->_primaryConfigData);
$objectManager->addSharedInstance($this->directoryList, \Magento\Framework\App\Filesystem\DirectoryList::class);
$objectManager->addSharedInstance($this->directoryList, \Magento\Framework\Filesystem\DirectoryList::class);
$objectManager->addSharedInstance($this->directoryList, DirectoryList::class);
$objectManager->addSharedInstance(
$this->directoryList,
\Magento\Framework\Filesystem\DirectoryList::class
);
$deploymentConfig = $this->createDeploymentConfig($directoryList, $this->configFilePool, $arguments);
$this->factory->setArguments($arguments);
$objectManager->addSharedInstance($deploymentConfig, \Magento\Framework\App\DeploymentConfig::class);
$objectManager->addSharedInstance($deploymentConfig, DeploymentConfig::class);
$objectManager->addSharedInstance(
$objectManager->get(\Magento\Framework\App\ObjectManager\ConfigLoader::class),
\Magento\Framework\ObjectManager\ConfigLoaderInterface::class
$objectManager->get(ConfigLoader::class),
ConfigLoaderInterface::class,
true
);
$objectManager->get(\Magento\Framework\Interception\PluginListInterface::class)->reset();
$objectManager->get(PluginListInterface::class)->reset();
$objectManager->configure(
$objectManager->get(\Magento\Framework\App\ObjectManager\ConfigLoader::class)->load('global')
$objectManager->get(ConfigLoader::class)->load('global')
);

return $objectManager;
Expand All @@ -73,7 +83,7 @@ public function restore(ObjectManager $objectManager, $directoryList, array $arg
/**
* Load primary config
*
* @param \Magento\Framework\App\Filesystem\DirectoryList $directoryList
* @param DirectoryList $directoryList
* @param DriverPool $driverPool
* @param mixed $argumentMapper
* @param string $appMode
Expand All @@ -85,7 +95,7 @@ protected function _loadPrimaryConfig(DirectoryList $directoryList, $driverPool,
$this->_primaryConfigData = array_replace(
parent::_loadPrimaryConfig($directoryList, $driverPool, $argumentMapper, $appMode),
[
'default_setup' => ['type' => \Magento\TestFramework\Db\ConnectionAdapter::class]
'default_setup' => ['type' => ConnectionAdapter::class]
]
);
$diPreferences = [];
Expand Down
Loading