Skip to content

Commit 2b9e36f

Browse files
committed
MC-18948: Switch default search engine from MySQL to ElasticSearch
- add default engine
1 parent 3018af3 commit 2b9e36f

File tree

5 files changed

+59
-16
lines changed

5 files changed

+59
-16
lines changed

app/code/Magento/Elasticsearch/etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@
227227
<argument name="engines" xsi:type="array">
228228
<item name="elasticsearch5" xsi:type="string">elasticsearch5</item>
229229
</argument>
230+
<argument name="defaultEngine" xsi:type="string">elasticsearch5</argument>
230231
</arguments>
231232
</type>
232233
<virtualType name="Magento\Elasticsearch\SearchAdapter\ProductEntityMetadata" type="Magento\Framework\Search\EntityMetadata">

app/code/Magento/Elasticsearch6/etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
<argument name="engines" xsi:type="array">
7878
<item name="elasticsearch6" xsi:type="string">elasticsearch6</item>
7979
</argument>
80+
<argument name="defaultEngine" xsi:type="string">elasticsearch6</argument>
8081
</arguments>
8182
</type>
8283

app/code/Magento/Elasticsearch7/etc/di.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
<argument name="engines" xsi:type="array">
8686
<item name="elasticsearch7" xsi:type="string">elasticsearch7</item>
8787
</argument>
88+
<argument name="defaultEngine" xsi:type="string">elasticsearch7</argument>
8889
</arguments>
8990
</type>
9091

app/code/Magento/Search/Model/EngineResolver.php

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,28 +61,36 @@ class EngineResolver implements EngineResolverInterface
6161
*/
6262
private $logger;
6363

64+
/**
65+
* @var string
66+
*/
67+
private $defaultEngine;
68+
6469
/**
6570
* @param ScopeConfigInterface $scopeConfig
6671
* @param array $engines
6772
* @param LoggerInterface $logger
6873
* @param string $path
6974
* @param string $scopeType
7075
* @param string|null $scopeCode
76+
* @param string|null $defaultEngine
7177
*/
7278
public function __construct(
7379
ScopeConfigInterface $scopeConfig,
7480
array $engines,
7581
LoggerInterface $logger,
7682
$path,
7783
$scopeType,
78-
$scopeCode = null
84+
$scopeCode = null,
85+
$defaultEngine = null
7986
) {
8087
$this->scopeConfig = $scopeConfig;
8188
$this->path = $path;
8289
$this->scopeType = $scopeType;
8390
$this->scopeCode = $scopeCode;
8491
$this->engines = $engines;
8592
$this->logger = $logger;
93+
$this->defaultEngine = $defaultEngine;
8694
}
8795

8896
/**
@@ -105,15 +113,16 @@ public function getCurrentSearchEngine()
105113
return $engine;
106114
} else {
107115
//get default engine from default scope
108-
$defaultEngine = $this->scopeConfig->getValue(
109-
$this->path
110-
);
111-
if (in_array($defaultEngine, $this->engines)) {
116+
if ($this->defaultEngine && in_array($this->defaultEngine, $this->engines)) {
117+
$this->logger->error(
118+
$engine . ' search engine doesn\'t exist. Falling back to ' . $this->defaultEngine
119+
);
120+
} else {
112121
$this->logger->error(
113-
$engine . ' search engine doesn\'t exist. Falling back to ' . $defaultEngine
122+
'Default search engine is not configured, fallback is not possible'
114123
);
115124
}
116-
return $defaultEngine;
125+
return $this->defaultEngine;
117126
}
118127
}
119128
}

app/code/Magento/Search/Test/Unit/Model/EngineResolverTest.php

Lines changed: 40 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ class EngineResolverTest extends \PHPUnit\Framework\TestCase
4646
*/
4747
private $loggerMock;
4848

49+
/**
50+
* @var string
51+
*/
52+
private $defaultEngine = 'defaultentengine';
53+
4954
/**
5055
* Setup
5156
*
@@ -70,7 +75,8 @@ protected function setUp()
7075
$this->loggerMock,
7176
$this->path,
7277
$this->scopeType,
73-
$this->scopeCode
78+
$this->scopeCode,
79+
$this->defaultEngine
7480
);
7581
}
7682

@@ -93,23 +99,48 @@ public function testGetCurrentSearchEngine()
9399
*/
94100
public function testGetCurrentSearchEngineDefaultEngine()
95101
{
96-
$engine = 'nonexistentengine';
97-
$defaultEngine = 'defaultentengine';
102+
$configEngine = 'nonexistentengine';
98103

99-
$this->scopeConfig->expects($this->at(0))
104+
$this->scopeConfig->expects($this->any())
100105
->method('getValue')
101-
->willReturn($engine);
106+
->willReturn($configEngine);
107+
108+
$this->loggerMock->expects($this->any())
109+
->method('error')
110+
->with(
111+
"{$configEngine} search engine doesn't exist. Falling back to {$this->defaultEngine}"
112+
);
113+
114+
$this->assertEquals($this->defaultEngine, $this->model->getCurrentSearchEngine());
115+
}
102116

103-
$this->scopeConfig->expects($this->at(1))
117+
/**
118+
* Test getCurrentSearchEngine
119+
*/
120+
public function testGetCurrentSearchEngineDefaultEngineNonExistent()
121+
{
122+
$configEngine = 'nonexistentengine';
123+
$this->defaultEngine = 'nonexistenddefaultengine';
124+
125+
$this->scopeConfig->expects($this->any())
104126
->method('getValue')
105-
->willReturn($defaultEngine);
127+
->willReturn($configEngine);
106128

107129
$this->loggerMock->expects($this->any())
108130
->method('error')
109131
->with(
110-
"{$engine} search engine doesn't exist. Falling back to {$defaultEngine}"
132+
'Default search engine is not configured, fallback is not possible'
111133
);
112134

113-
$this->assertEquals($defaultEngine, $this->model->getCurrentSearchEngine());
135+
$model = new EngineResolver(
136+
$this->scopeConfig,
137+
$this->engines,
138+
$this->loggerMock,
139+
$this->path,
140+
$this->scopeType,
141+
$this->scopeCode,
142+
$this->defaultEngine
143+
);
144+
$this->assertEquals($this->defaultEngine, $model->getCurrentSearchEngine());
114145
}
115146
}

0 commit comments

Comments
 (0)