Skip to content

Commit 5c89dc9

Browse files
committed
ACP2E-1973: Adobe Commerce Cloud cannot use GET_LOCK in the database because of Galera cluster limitation
- Add test coverage
1 parent d14ac4a commit 5c89dc9

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
7+
namespace Magento\Framework\Cache;
8+
9+
use Magento\Framework\Lock\Backend\Database;
10+
use Magento\Framework\ObjectManagerInterface;
11+
use Magento\TestFramework\Helper\Bootstrap;
12+
13+
class LockGuardedCacheLoaderTest extends \PHPUnit\Framework\TestCase
14+
{
15+
/**
16+
* @var ObjectManagerInterface
17+
*/
18+
private ObjectManagerInterface $om;
19+
20+
/**
21+
* @var LockGuardedCacheLoader|null
22+
*/
23+
private ?LockGuardedCacheLoader $lockGuardedCacheLoader;
24+
25+
/**
26+
* @param string|null $name
27+
* @param array $data
28+
* @param $dataName
29+
*/
30+
public function __construct(?string $name = null, array $data = [], $dataName = '')
31+
{
32+
$this->om = Bootstrap::getObjectManager();
33+
34+
parent::__construct($name, $data, $dataName);
35+
}
36+
37+
protected function setUp(): void
38+
{
39+
$this->lockGuardedCacheLoader = $this->om
40+
->create(
41+
LockGuardedCacheLoader::class,
42+
[
43+
'locker' => $this->om->get(Database::class)
44+
]
45+
);
46+
}
47+
48+
/**
49+
* @dataProvider dataProviderLockGuardedCacheLoader
50+
*
51+
* @param $lockName
52+
* @param $dataLoader
53+
* @param $dataCollector
54+
* @param $dataSaver
55+
* @param $expected
56+
* @return void
57+
*/
58+
public function testLockedLoadData(
59+
$lockName, $dataLoader, $dataCollector, $dataSaver, $expected
60+
) {
61+
$result = $this->lockGuardedCacheLoader->lockedLoadData(
62+
$lockName,
63+
$dataLoader,
64+
$dataCollector,
65+
$dataSaver
66+
);
67+
68+
$this->assertEquals($expected, $result);
69+
}
70+
71+
/**
72+
* @return array[]
73+
*/
74+
public function dataProviderLockGuardedCacheLoader(): array
75+
{
76+
return [
77+
'Data loader read' => [
78+
'lockName',
79+
function () {return ['data1', 'data2'];},
80+
function () {return ['data3', 'data4'];},
81+
function () {return new \stdClass();},
82+
['data1', 'data2'],
83+
],
84+
'Data collector read' => [
85+
'lockName',
86+
function () {return false;},
87+
function () {return ['data3', 'data4'];},
88+
function () {return new \stdClass();},
89+
['data3', 'data4'],
90+
],
91+
];
92+
}
93+
}

0 commit comments

Comments
 (0)