Skip to content

Commit cd208e3

Browse files
committed
Merge branch 'B2B-2175' into foxes-pr
2 parents 61a1b8b + c92e759 commit cd208e3

File tree

17 files changed

+195
-107
lines changed

17 files changed

+195
-107
lines changed

dev/tests/integration/_files/Magento/TestModuleMessageQueueConfiguration/etc/queue.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<broker topic="deprecated.config.sync.bool.topic" type="db" exchange="customExchange">
1717
<queue consumer="deprecatedConfigSyncBoolConsumer" name="deprecated.config.queue.4"/>
1818
</broker>
19-
<broker topic="overlapping.topic.declaration" type="db" exchange="overlappingDeprecatedExchange">
19+
<broker topic="overlapping.topic.declaration" exchange="overlappingDeprecatedExchange">
2020
<queue consumer="overlappingConsumerDeclaration" name="consumer.config.queue" consumerInstance="Magento\Framework\MessageQueue\BatchConsumer" maxMessages="222" handler="Magento\TestModuleMessageQueueConfiguration\AsyncHandler::methodWithMixedParam"/>
2121
</broker>
2222
</config>

dev/tests/integration/etc/post-install-setup-command-config.php.dist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,19 @@
66

77
// List of bin/magento setup CLI commands to run after setup:install
88
return [
9+
/*
910
[
1011
'command' => 'setup:config:set',
1112
'config' => [
1213
'--queue-default-connection' => 'db'
13-
/*
1414
'--remote-storage-driver' => 'aws-s3',
1515
'--remote-storage-bucket' => 'myBucket',
1616
'--remote-storage-region' => 'us-east-1'
17-
*/
1817
]
1918
],
2019
[
2120
'command' => 'setup:upgrade',
2221
'config' => []
2322
]
23+
*/
2424
];

dev/tests/integration/testsuite/Magento/Catalog/Model/Attribute/Backend/ConsumerWebsiteAssignTest.php

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414
use Magento\Framework\Bulk\OperationInterface;
1515
use Magento\Framework\DB\Adapter\DeadlockException;
1616
use Magento\Framework\Exception\NoSuchEntityException;
17+
use Magento\Framework\MessageQueue\ConsumerFactory;
1718
use Magento\Framework\MessageQueue\MessageEncoder;
1819
use Magento\Framework\ObjectManagerInterface;
19-
use Magento\MysqlMq\Model\Driver\Queue;
2020
use Magento\Store\Api\WebsiteRepositoryInterface;
2121
use Magento\TestFramework\Helper\Bootstrap;
22-
use Magento\TestFramework\MysqlMq\DeleteTopicRelatedMessages;
22+
use Magento\TestFramework\MessageQueue\ClearQueueProcessor;
2323
use PHPUnit\Framework\TestCase;
2424

2525
/**
@@ -29,23 +29,21 @@
2929
*
3030
* @magentoDbIsolation disabled
3131
* @magentoAppArea adminhtml
32+
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
3233
*/
3334
class ConsumerWebsiteAssignTest extends TestCase
3435
{
3536
private const TOPIC_NAME = 'product_action_attribute.website.update';
3637

37-
/** @var DeleteTopicRelatedMessages */
38-
private static $deleteTopicRelatedMessages;
38+
/** @var ClearQueueProcessor */
39+
private static $clearQueueProcessor;
3940

4041
/** @var ObjectManagerInterface */
4142
private $objectManager;
4243

4344
/** @var ConsumerWebsiteAssign */
4445
private $consumer;
4546

46-
/** @var Queue */
47-
private $queue;
48-
4947
/** @var MessageEncoder */
5048
private $messageEncoder;
5149

@@ -58,6 +56,9 @@ class ConsumerWebsiteAssignTest extends TestCase
5856
/** @var CollectionFactory */
5957
private $operationCollectionFactory;
6058

59+
/** @var ConsumerFactory */
60+
private $consumerFactory;
61+
6162
/**
6263
* @inheritdoc
6364
*/
@@ -66,8 +67,8 @@ public static function setUpBeforeClass(): void
6667
parent::setUpBeforeClass();
6768

6869
$objectManager = Bootstrap::getObjectManager();
69-
self::$deleteTopicRelatedMessages = $objectManager->get(DeleteTopicRelatedMessages::class);
70-
self::$deleteTopicRelatedMessages->execute(self::TOPIC_NAME);
70+
self::$clearQueueProcessor = $objectManager->get(ClearQueueProcessor::class);
71+
self::$clearQueueProcessor->execute('product_action_attribute.website.update');
7172
}
7273

7374
/**
@@ -79,14 +80,11 @@ protected function setUp(): void
7980

8081
$this->objectManager = Bootstrap::getObjectManager();
8182
$this->consumer = $this->objectManager->get(ConsumerWebsiteAssign::class);
82-
$this->queue = $this->objectManager->create(
83-
Queue::class,
84-
['queueName' => 'product_action_attribute.website.update']
85-
);
8683
$this->messageEncoder = $this->objectManager->get(MessageEncoder::class);
8784
$this->productRepository = $this->objectManager->get(ProductRepositoryInterface::class);
8885
$this->websiteRepository = $this->objectManager->get(WebsiteRepositoryInterface::class);
8986
$this->operationCollectionFactory = $this->objectManager->get(CollectionFactory::class);
87+
$this->consumerFactory = $this->objectManager->get(ConsumerFactory::class);
9088
}
9189

9290
/**
@@ -95,7 +93,7 @@ protected function setUp(): void
9593
protected function tearDown(): void
9694
{
9795
$this->objectManager->removeSharedInstance(Action::class);
98-
self::$deleteTopicRelatedMessages->execute(self::TOPIC_NAME);
96+
self::$clearQueueProcessor->execute('product_action_attribute.website.update');
9997

10098
parent::tearDown();
10199
}
@@ -212,9 +210,8 @@ private function assertProductWebsites(string $sku, array $expectedWebsites): vo
212210
*/
213211
private function processMessages(): void
214212
{
215-
$envelope = $this->queue->dequeue();
216-
$decodedMessage = $this->messageEncoder->decode(self::TOPIC_NAME, $envelope->getBody());
217-
$this->consumer->process($decodedMessage);
213+
$consumer = $this->consumerFactory->get('product_action_attribute.website.update');
214+
$consumer->process(1);
218215
}
219216

220217
/**

dev/tests/integration/testsuite/Magento/Catalog/_files/detach_product_website_quene_data_rollback.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
*/
66
declare(strict_types=1);
77

8-
use Magento\TestFramework\MysqlMq\DeleteTopicRelatedMessages;
8+
use Magento\TestFramework\MessageQueue\ClearQueueProcessor;
99
use Magento\TestFramework\Helper\Bootstrap;
1010
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
1111

1212
$objectManager = Bootstrap::getObjectManager();
13-
/** @var DeleteTopicRelatedMessages $deleteTopicRelatedMessages */
14-
$deleteTopicRelatedMessages = $objectManager->get(DeleteTopicRelatedMessages::class);
15-
$deleteTopicRelatedMessages->execute('product_action_attribute.website.update');
13+
/** @var ClearQueueProcessor $clearQueueProcessor */
14+
$clearQueueProcessor = $objectManager->get(ClearQueueProcessor::class);
15+
$clearQueueProcessor->execute('product_action_attribute.website.update');
1616

1717
Resolver::getInstance()->requireDataFixture('Magento/Catalog/_files/product_with_two_websites_rollback.php');

dev/tests/integration/testsuite/Magento/Catalog/_files/update_product_website_quene_data_rollback.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@
55
*/
66
declare(strict_types=1);
77

8-
use Magento\TestFramework\MysqlMq\DeleteTopicRelatedMessages;
8+
use Magento\TestFramework\MessageQueue\ClearQueueProcessor;
99
use Magento\TestFramework\Helper\Bootstrap;
1010
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
1111

1212
$objectManager = Bootstrap::getObjectManager();
13-
/** @var DeleteTopicRelatedMessages $deleteTopicRelatedMessages */
14-
$deleteTopicRelatedMessages = $objectManager->get(DeleteTopicRelatedMessages::class);
15-
$deleteTopicRelatedMessages->execute('product_action_attribute.website.update');
13+
/** @var ClearQueueProcessor $clearQueueProcessor */
14+
$clearQueueProcessor = $objectManager->get(ClearQueueProcessor::class);
15+
$clearQueueProcessor->execute('product_action_attribute.website.update');
1616

1717
Resolver::getInstance()->requireDataFixture('Magento/Catalog/_files/second_product_simple_rollback.php');
1818
Resolver::getInstance()->requireDataFixture('Magento/Store/_files/second_website_with_two_stores_rollback.php');

dev/tests/integration/testsuite/Magento/CatalogImportExport/Model/Import/ImportWithNotExistImagesTest.php

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,25 @@
77

88
namespace Magento\CatalogImportExport\Model\Import;
99

10+
use Magento\Catalog\Api\Data\ProductAttributeInterface;
11+
use Magento\Catalog\Api\Data\ProductInterface;
1012
use Magento\Catalog\Api\ProductRepositoryInterface;
1113
use Magento\Catalog\Model\Product;
1214
use Magento\CatalogImportExport\Model\Import\Product\RowValidatorInterface;
1315
use Magento\CatalogImportExport\Model\Import\ProductImport;
1416
use Magento\Framework\App\Filesystem\DirectoryList;
15-
use Magento\Framework\File\Csv;
1617
use Magento\Framework\Filesystem;
1718
use Magento\Framework\Filesystem\Directory\Write;
18-
use Magento\Framework\MessageQueue\MessageEncoder;
19+
use Magento\Framework\MessageQueue\ConsumerFactory;
20+
use Magento\Framework\MessageQueue\PublisherInterface;
1921
use Magento\Framework\ObjectManagerInterface;
20-
use Magento\ImportExport\Model\Export\Consumer;
22+
use Magento\ImportExport\Model\Export\Entity\ExportInfo;
23+
use Magento\ImportExport\Model\Export\Entity\ExportInfoFactory;
2124
use Magento\ImportExport\Model\Import as ImportModel;
2225
use Magento\ImportExport\Model\Import\Source\Csv as CsvSource;
2326
use Magento\ImportExport\Model\Import\Source\CsvFactory;
24-
use Magento\MysqlMq\Model\Driver\Queue;
2527
use Magento\TestFramework\Helper\Bootstrap;
26-
use Magento\TestFramework\MysqlMq\DeleteTopicRelatedMessages;
28+
use Magento\TestFramework\MessageQueue\ClearQueueProcessor;
2729
use PHPUnit\Framework\TestCase;
2830

2931
/**
@@ -42,17 +44,8 @@ class ImportWithNotExistImagesTest extends TestCase
4244
/** @var ObjectManagerInterface */
4345
private $objectManager;
4446

45-
/** @var MessageEncoder */
46-
private $messageEncoder;
47-
48-
/** @var Consumer */
49-
private $consumer;
50-
51-
/** @var Queue */
52-
private $queue;
53-
54-
/** @var Csv */
55-
private $csvReader;
47+
/** @var ConsumerFactory */
48+
private $consumerFactory;
5649

5750
/** @var Write */
5851
private $directory;
@@ -80,9 +73,9 @@ public static function setUpBeforeClass(): void
8073
parent::setUpBeforeClass();
8174

8275
$objectManager = Bootstrap::getObjectManager();
83-
/** @var DeleteTopicRelatedMessages $deleteMessages */
84-
$deleteMessages = $objectManager->get(DeleteTopicRelatedMessages::class);
85-
$deleteMessages->execute(self::TOPIC);
76+
/** @var ClearQueueProcessor $clearQueueProcessor */
77+
$clearQueueProcessor = $objectManager->get(ClearQueueProcessor::class);
78+
$clearQueueProcessor->execute('exportProcessor');
8679
}
8780

8881
/**
@@ -93,10 +86,7 @@ protected function setUp(): void
9386
parent::setUp();
9487

9588
$this->objectManager = Bootstrap::getObjectManager();
96-
$this->queue = $this->objectManager->create(Queue::class, ['queueName' => 'export']);
97-
$this->messageEncoder = $this->objectManager->get(MessageEncoder::class);
98-
$this->consumer = $this->objectManager->get(Consumer::class);
99-
$this->csvReader = $this->objectManager->get(Csv::class);
89+
$this->consumerFactory = $this->objectManager->get(ConsumerFactory::class);
10090
$this->import = $this->objectManager->get(ProductFactory::class)->create();
10191
$this->csvFactory = $this->objectManager->get(CsvFactory::class);
10292
$this->fileSystem = $this->objectManager->get(Filesystem::class);
@@ -118,13 +108,27 @@ protected function tearDown(): void
118108
}
119109

120110
/**
121-
* @magentoDataFixture Magento/CatalogImportExport/_files/export_queue_product_with_images.php
111+
* @magentoDataFixture Magento/Catalog/_files/product_with_image.php
122112
*
123113
* @return void
124114
*/
125115
public function testImportWithUnexistingImages(): void
126116
{
117+
$cache = $this->objectManager->get(\Magento\Framework\App\Cache::class);
118+
$cache->clean();
119+
/** @var ExportInfoFactory $exportInfoFactory */
120+
$exportInfoFactory = $this->objectManager->get(ExportInfoFactory::class);
121+
$messagePublisher = $this->objectManager->get(PublisherInterface::class);
122+
/** @var ExportInfo $dataObject */
123+
$dataObject = $exportInfoFactory->create(
124+
'csv',
125+
ProductAttributeInterface::ENTITY_TYPE_CODE,
126+
[ProductInterface::SKU => 'simple'],
127+
[]
128+
);
129+
$messagePublisher->publish(self::TOPIC, $dataObject);
127130
$this->exportProducts();
131+
$this->filePath = 'export/' . $dataObject->getFileName();
128132
$this->assertTrue($this->directory->isExist($this->filePath), 'Products were not imported to file');
129133
$fileContent = $this->getCsvData($this->directory->getAbsolutePath($this->filePath));
130134
$this->assertCount(2, $fileContent);
@@ -147,10 +151,8 @@ public function testImportWithUnexistingImages(): void
147151
*/
148152
private function exportProducts(): void
149153
{
150-
$envelope = $this->queue->dequeue();
151-
$decodedMessage = $this->messageEncoder->decode(self::TOPIC, $envelope->getBody());
152-
$this->consumer->process($decodedMessage);
153-
$this->filePath = 'export/' . $decodedMessage->getFileName();
154+
$consumer = $this->consumerFactory->get('exportProcessor');
155+
$consumer->process(1);
154156
}
155157

156158
/**

dev/tests/integration/testsuite/Magento/CatalogImportExport/_files/export_queue_product_with_images_rollback.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
*/
66
declare(strict_types=1);
77

8-
use Magento\TestFramework\MysqlMq\DeleteTopicRelatedMessages;
8+
use Magento\TestFramework\MessageQueue\ClearQueueProcessor;
99
use Magento\TestFramework\Helper\Bootstrap;
1010
use Magento\TestFramework\Workaround\Override\Fixture\Resolver;
1111

1212
$objectManager = Bootstrap::getObjectManager();
13-
/** @var DeleteTopicRelatedMessages $deleteTopicRelatedMessages */
14-
$deleteTopicRelatedMessages = $objectManager->get(DeleteTopicRelatedMessages::class);
15-
$deleteTopicRelatedMessages->execute('import_export.export');
13+
/** @var ClearQueueProcessor $clearQueueProcessor */
14+
$clearQueueProcessor = $objectManager->get(ClearQueueProcessor::class);
15+
$clearQueueProcessor->execute('exportProcessor');
1616

1717
Resolver::getInstance()->requireDataFixture('Magento/Catalog/_files/product_with_image_rollback.php');

dev/tests/integration/testsuite/Magento/Framework/MessageQueue/Consumer/ConfigTest.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Magento\Framework\MessageQueue\Consumer;
77

88
use Magento\Framework\MessageQueue\Consumer\Config\ConsumerConfigItem\Handler\Iterator as HandlerIterator;
9+
use Magento\Framework\MessageQueue\DefaultValueProvider;
910

1011
/**
1112
* Test of queue consumer configuration reading and parsing.
@@ -19,9 +20,15 @@ class ConfigTest extends \PHPUnit\Framework\TestCase
1920
*/
2021
private $objectManager;
2122

23+
/**
24+
* @var DefaultValueProvider
25+
*/
26+
private $defaultValueProvider;
27+
2228
protected function setUp(): void
2329
{
2430
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
31+
$this->defaultValueProvider = $this->objectManager->get(DefaultValueProvider::class);
2532
}
2633

2734
public function testGetConsumers()
@@ -59,7 +66,7 @@ public function testGetConsumerWithDefaultValues()
5966

6067
$this->assertEquals('consumer5', $consumer->getName());
6168
$this->assertEquals('queue5', $consumer->getQueue());
62-
$this->assertEquals('db', $consumer->getConnection());
69+
$this->assertEquals($this->defaultValueProvider->getConnection(), $consumer->getConnection());
6370
$this->assertEquals(\Magento\Framework\MessageQueue\ConsumerInterface::class, $consumer->getConsumerInstance());
6471
$this->assertNull($consumer->getMaxMessages());
6572
$handlers = $consumer->getHandlers();

dev/tests/integration/testsuite/Magento/Framework/MessageQueue/Consumer/DeprecatedConfigTest.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
namespace Magento\Framework\MessageQueue\Consumer;
77

88
use Magento\Framework\MessageQueue\Consumer\Config\ConsumerConfigItem\Handler\Iterator as HandlerIterator;
9+
use Magento\Framework\MessageQueue\DefaultValueProvider;
910

1011
/**
1112
* Test access to consumer configuration declared in deprecated queue.xml configs using Consumer\ConfigInterface.
@@ -19,9 +20,15 @@ class DeprecatedConfigTest extends \PHPUnit\Framework\TestCase
1920
*/
2021
private $objectManager;
2122

23+
/**
24+
* @var DefaultValueProvider
25+
*/
26+
private $defaultValueProvider;
27+
2228
protected function setUp(): void
2329
{
2430
$this->objectManager = \Magento\TestFramework\Helper\Bootstrap::getObjectManager();
31+
$this->defaultValueProvider = $this->objectManager->get(DefaultValueProvider::class);
2532
}
2633

2734
public function testGetConsumerMultipleHandlersFromCommunicationConfig()
@@ -53,7 +60,7 @@ public function testGetConsumerCustomHandler()
5360

5461
$this->assertEquals('deprecatedConfigAsyncMixedConsumer', $consumer->getName());
5562
$this->assertEquals('deprecated.config.queue.3', $consumer->getQueue());
56-
$this->assertEquals('db', $consumer->getConnection());
63+
$this->assertEquals($this->defaultValueProvider->getConnection(), $consumer->getConnection());
5764
$this->assertEquals(\Magento\Framework\MessageQueue\ConsumerInterface::class, $consumer->getConsumerInstance());
5865
$this->assertNull($consumer->getMaxMessages());
5966

@@ -91,7 +98,7 @@ public function testGetConsumerCustomConsumerAndMaxMessages()
9198

9299
$this->assertEquals('deprecatedConfigAsyncStringConsumer', $consumer->getName());
93100
$this->assertEquals('deprecated.config.queue.1', $consumer->getQueue());
94-
$this->assertEquals('db', $consumer->getConnection());
101+
$this->assertEquals($this->defaultValueProvider->getConnection(), $consumer->getConnection());
95102
$this->assertEquals(\Magento\Framework\MessageQueue\BatchConsumer::class, $consumer->getConsumerInstance());
96103
$this->assertEquals(200, $consumer->getMaxMessages());
97104

0 commit comments

Comments
 (0)