![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/dev/tests/integration/testsuite/Magento/Framework/MessageQueue/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Framework\MessageQueue; use Magento\TestFramework\Helper\Amqp; use Magento\TestFramework\Helper\Bootstrap; use PHPUnit\Framework\TestCase; /** * @see dev/tests/integration/_files/Magento/TestModuleMessageQueueConfiguration * @see dev/tests/integration/_files/Magento/TestModuleMessageQueueConfigOverride */ class TopologyTest extends TestCase { /** * List of declared exchanges. * * @var array */ private $declaredExchanges; /** * @var Amqp */ private $helper; /** * @return void */ protected function setUp(): void { $this->helper = Bootstrap::getObjectManager()->create(Amqp::class); if (!$this->helper->isAvailable()) { $this->fail('This test relies on RabbitMQ Management Plugin.'); } $this->declaredExchanges = $this->helper->getExchanges(); } /** * @dataProvider exchangeDataProvider * @param array $expectedConfig * @param array $bindingConfig */ public function testTopologyInstallation(array $expectedConfig, array $bindingConfig): void { $name = $expectedConfig['name']; $this->assertArrayHasKey($name, $this->declaredExchanges); unset( $this->declaredExchanges[$name]['message_stats'], $this->declaredExchanges[$name]['user_who_performed_action'], $this->declaredExchanges[$name]['policy'] ); $this->assertEquals( $expectedConfig, $this->declaredExchanges[$name], 'Invalid exchange configuration: ' . $name ); $bindings = $this->helper->getExchangeBindings($name); $bindings = array_map(static function ($value) { unset($value['properties_key']); return $value; }, $bindings); $this->assertEquals( $bindingConfig, $bindings, 'Invalid exchange bindings configuration: ' . $name ); } /** * @return array * @SuppressWarnings(PHPMD.ExcessiveMethodLength) */ public function exchangeDataProvider(): array { $virtualHost = defined('RABBITMQ_VIRTUALHOST') ? RABBITMQ_VIRTUALHOST : Amqp::DEFAULT_VIRTUALHOST; return [ 'magento-topic-based-exchange1' => [ 'exchangeConfig' => [ 'name' => 'magento-topic-based-exchange1', 'vhost' => $virtualHost, 'type' => 'topic', 'durable' => true, 'auto_delete' => false, 'internal' => false, 'arguments' => [ 'alternate-exchange' => 'magento-log-exchange' ], ], 'bindingConfig' => [ [ 'source' => 'magento-topic-based-exchange1', 'vhost' => $virtualHost, 'destination' => 'topic-queue1', 'destination_type' => 'queue', 'routing_key' => 'anotherTopic1', 'arguments' => [ 'argument1' => 'value' ], ], ] ], 'magento-topic-based-exchange2' => [ 'exchangeConfig' => [ 'name' => 'magento-topic-based-exchange2', 'vhost' => $virtualHost, 'type' => 'topic', 'durable' => true, 'auto_delete' => false, 'internal' => false, 'arguments' => [ 'alternate-exchange' => 'magento-log-exchange', 'arrayValue' => ['10', '20'] ], ], 'bindingConfig' => [ [ 'source' => 'magento-topic-based-exchange2', 'vhost' => $virtualHost, 'destination' => 'topic-queue2', 'destination_type' => 'queue', 'routing_key' => 'anotherTopic2', 'arguments' => [ 'argument1' => 'value', 'argument2' => true, 'argument3' => 150, ], ], ] ], 'magento-topic-based-exchange3' => [ 'exchangeConfig' => [ 'name' => 'magento-topic-based-exchange3', 'vhost' => $virtualHost, 'type' => 'topic', 'durable' => false, 'auto_delete' => true, 'internal' => true, 'arguments' => [], ], 'bindingConfig' => [], ], 'magento-topic-based-exchange4' => [ 'exchangeConfig' => [ 'name' => 'magento-topic-based-exchange4', 'vhost' => $virtualHost, 'type' => 'topic', 'durable' => true, 'auto_delete' => false, 'internal' => false, 'arguments' => [], ], 'bindingConfig' => [ [ 'source' => 'magento-topic-based-exchange4', 'vhost' => $virtualHost, 'destination' => 'topic-queue1', 'destination_type' => 'queue', 'routing_key' => '#', 'arguments' => [ 'test' => 'one' ], ], [ 'source' => 'magento-topic-based-exchange4', 'vhost' => $virtualHost, 'destination' => 'topic-queue2', 'destination_type' => 'queue', 'routing_key' => '*.*.*', 'arguments' => [], ], ] ], ]; } }