Skip to content

Commit b5197c4

Browse files
authored
Merge pull request #273 from php-enqueue/bundle-fix-use-cases-tests
[bundle] Apparently the use case tests have never worked properly.
2 parents 7aac0e2 + 049cb1b commit b5197c4

File tree

4 files changed

+90
-39
lines changed

4 files changed

+90
-39
lines changed

Diff for: pkg/enqueue-bundle/Tests/Functional/App/CustomAppKernel.php

+11-7
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ class CustomAppKernel extends Kernel
1313
{
1414
use MicroKernelTrait;
1515

16+
private $enqueueConfigId;
17+
1618
private $enqueueConfig = [
1719
'client' => [
1820
'prefix' => 'enqueue',
@@ -25,11 +27,13 @@ class CustomAppKernel extends Kernel
2527

2628
public function setEnqueueConfig(array $config)
2729
{
28-
$fs = new Filesystem();
29-
$fs->remove(sys_get_temp_dir().'/EnqueueBundleCustom/cache');
30-
$fs->mkdir(sys_get_temp_dir().'/EnqueueBundleCustom/cache');
31-
3230
$this->enqueueConfig = array_replace_recursive($this->enqueueConfig, $config);
31+
$this->enqueueConfig['client']['app_name'] = str_replace('.', '', uniqid(true));
32+
$this->enqueueConfigId = md5(json_encode($this->enqueueConfig));
33+
34+
$fs = new Filesystem();
35+
$fs->remove(sys_get_temp_dir().'/EnqueueBundleCustom/cache/'.$this->enqueueConfigId);
36+
$fs->mkdir(sys_get_temp_dir().'/EnqueueBundleCustom/cache/'.$this->enqueueConfigId);
3337
}
3438

3539
/**
@@ -52,20 +56,20 @@ public function registerBundles()
5256
*/
5357
public function getCacheDir()
5458
{
55-
return sys_get_temp_dir().'/EnqueueBundleCustom/cache';
59+
return sys_get_temp_dir().'/EnqueueBundleCustom/cache/'.$this->enqueueConfigId;
5660
}
5761

5862
/**
5963
* @return string
6064
*/
6165
public function getLogDir()
6266
{
63-
return sys_get_temp_dir().'/EnqueueBundleCustom/cache/logs';
67+
return sys_get_temp_dir().'/EnqueueBundleCustom/cache/logs/'.$this->enqueueConfigId;
6468
}
6569

6670
protected function getContainerClass()
6771
{
68-
return parent::getContainerClass().'Custom';
72+
return parent::getContainerClass().'Custom'.$this->enqueueConfigId;
6973
}
7074

7175
/**

Diff for: pkg/enqueue-bundle/Tests/Functional/UseCasesTest.php

+67-30
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@
66
use Enqueue\Client\DriverInterface;
77
use Enqueue\Client\Producer;
88
use Enqueue\Client\ProducerInterface;
9+
use Enqueue\Stomp\StompDestination;
910
use Enqueue\Symfony\Client\ConsumeMessagesCommand;
1011
use Enqueue\Symfony\Consumption\ContainerAwareConsumeMessagesCommand;
1112
use Interop\Queue\PsrContext;
1213
use Interop\Queue\PsrMessage;
14+
use Interop\Queue\PsrQueue;
1315
use Symfony\Component\Console\Tester\CommandTester;
16+
use Symfony\Component\Filesystem\Filesystem;
1417
use Symfony\Component\HttpKernel\Kernel;
1518

1619
/**
@@ -24,6 +27,17 @@ public function setUp()
2427
// parent::setUp();
2528
}
2629

30+
public function tearDown()
31+
{
32+
if (static::$kernel) {
33+
$fs = new Filesystem();
34+
$fs->remove(static::$kernel->getLogDir());
35+
$fs->remove(static::$kernel->getCacheDir());
36+
}
37+
38+
parent::tearDown();
39+
}
40+
2741
public function provideEnqueueConfigs()
2842
{
2943
$baseDir = realpath(__DIR__.'/../../../../');
@@ -44,7 +58,8 @@ public function provideEnqueueConfigs()
4458
'user' => getenv('SYMFONY__RABBITMQ__USER'),
4559
'pass' => getenv('SYMFONY__RABBITMQ__PASSWORD'),
4660
'vhost' => getenv('SYMFONY__RABBITMQ__VHOST'),
47-
'lazy' => false,
61+
'lazy' => true,
62+
'persisted' => false,
4863
],
4964
],
5065
]];
@@ -90,15 +105,16 @@ public function provideEnqueueConfigs()
90105
],
91106
]];
92107

93-
yield 'stomp' => [[
108+
yield 'rabbitmq_stomp' => [[
94109
'transport' => [
95-
'default' => 'stomp',
96-
'stomp' => [
110+
'default' => 'rabbitmq_stomp',
111+
'rabbitmq_stomp' => [
97112
'host' => getenv('SYMFONY__RABBITMQ__HOST'),
98113
'port' => getenv('SYMFONY__RABBITMQ__STOMP__PORT'),
99114
'login' => getenv('SYMFONY__RABBITMQ__USER'),
100115
'password' => getenv('SYMFONY__RABBITMQ__PASSWORD'),
101116
'vhost' => getenv('SYMFONY__RABBITMQ__VHOST'),
117+
'management_plugin_installed' => true,
102118
'lazy' => false,
103119
],
104120
],
@@ -184,12 +200,12 @@ public function provideEnqueueConfigs()
184200
],
185201
]];
186202

187-
yield 'gps' => [[
188-
'transport' => [
189-
'default' => 'gps',
190-
'gps' => [],
191-
],
192-
]];
203+
// yield 'gps' => [[
204+
// 'transport' => [
205+
// 'default' => 'gps',
206+
// 'gps' => [],
207+
// ],
208+
// ]];
193209
}
194210

195211
/**
@@ -199,16 +215,17 @@ public function testProducerSendsMessage(array $enqueueConfig)
199215
{
200216
$this->customSetUp($enqueueConfig);
201217

202-
$this->getMessageProducer()->sendEvent(TestProcessor::TOPIC, 'test message body');
218+
$expectedBody = __METHOD__.time();
203219

204-
$queue = $this->getPsrContext()->createQueue('enqueue.test');
220+
$this->getMessageProducer()->sendEvent(TestProcessor::TOPIC, $expectedBody);
205221

206-
$consumer = $this->getPsrContext()->createConsumer($queue);
222+
$consumer = $this->getPsrContext()->createConsumer($this->getTestQueue());
207223

208224
$message = $consumer->receive(100);
209-
210225
$this->assertInstanceOf(PsrMessage::class, $message);
211-
$this->assertSame('test message body', $message->getBody());
226+
$consumer->acknowledge($message);
227+
228+
$this->assertSame($expectedBody, $message->getBody());
212229
}
213230

214231
/**
@@ -222,11 +239,10 @@ public function testProducerSendsCommandMessage(array $enqueueConfig)
222239

223240
$this->getMessageProducer()->sendCommand(TestCommandProcessor::COMMAND, $expectedBody);
224241

225-
$queue = $this->getPsrContext()->createQueue('enqueue.test');
226-
227-
$consumer = $this->getPsrContext()->createConsumer($queue);
242+
$consumer = $this->getPsrContext()->createConsumer($this->getTestQueue());
228243

229244
$message = $consumer->receive(100);
245+
$this->assertInstanceOf(PsrMessage::class, $message);
230246
$consumer->acknowledge($message);
231247

232248
$this->assertInstanceOf(PsrMessage::class, $message);
@@ -265,10 +281,12 @@ public function testClientConsumeMessagesFromExplicitlySetQueue(array $enqueueCo
265281
{
266282
$this->customSetUp($enqueueConfig);
267283

284+
$expectedBody = __METHOD__.time();
285+
268286
$command = $this->container->get(ConsumeMessagesCommand::class);
269287
$processor = $this->container->get('test.message.processor');
270288

271-
$this->getMessageProducer()->sendEvent(TestProcessor::TOPIC, 'test message body');
289+
$this->getMessageProducer()->sendEvent(TestProcessor::TOPIC, $expectedBody);
272290

273291
$tester = new CommandTester($command);
274292
$tester->execute([
@@ -278,7 +296,7 @@ public function testClientConsumeMessagesFromExplicitlySetQueue(array $enqueueCo
278296
]);
279297

280298
$this->assertInstanceOf(PsrMessage::class, $processor->message);
281-
$this->assertEquals('test message body', $processor->message->getBody());
299+
$this->assertEquals($expectedBody, $processor->message->getBody());
282300
}
283301

284302
/**
@@ -288,22 +306,31 @@ public function testTransportConsumeMessagesCommandShouldConsumeMessage(array $e
288306
{
289307
$this->customSetUp($enqueueConfig);
290308

309+
if ($this->getTestQueue() instanceof StompDestination) {
310+
$this->markTestSkipped('The test fails with the exception Stomp\Exception\ErrorFrameException: Error "precondition_failed". '.
311+
'It happens because of the destination options are different from the one used while creating the dest. Nothing to do about it'
312+
);
313+
}
314+
315+
$expectedBody = __METHOD__.time();
316+
291317
$command = $this->container->get(ContainerAwareConsumeMessagesCommand::class);
292318
$command->setContainer($this->container);
293319
$processor = $this->container->get('test.message.processor');
294320

295-
$this->getMessageProducer()->sendEvent(TestProcessor::TOPIC, 'test message body');
321+
$this->getMessageProducer()->sendEvent(TestProcessor::TOPIC, $expectedBody);
296322

297323
$tester = new CommandTester($command);
298324
$tester->execute([
299325
'--message-limit' => 1,
300326
'--time-limit' => '+10sec',
301-
'--queue' => ['enqueue.test'],
327+
'--receive-timeout' => 1000,
328+
'--queue' => [$this->getTestQueue()->getQueueName()],
302329
'processor-service' => 'test.message.processor',
303330
]);
304331

305332
$this->assertInstanceOf(PsrMessage::class, $processor->message);
306-
$this->assertEquals('test message body', $processor->message->getBody());
333+
$this->assertEquals($expectedBody, $processor->message->getBody());
307334
}
308335

309336
/**
@@ -329,16 +356,26 @@ protected function customSetUp(array $enqueueConfig)
329356
$driver = $this->container->get('enqueue.client.driver');
330357
$context = $this->getPsrContext();
331358

332-
$queue = $driver->createQueue('test');
333-
334-
//guard
335-
$this->assertEquals('enqueue.test', $queue->getQueueName());
359+
$driver->setupBroker();
336360

337-
if (method_exists($context, 'deleteQueue')) {
338-
$context->deleteQueue($queue);
361+
try {
362+
if (method_exists($context, 'purgeQueue')) {
363+
$queue = $this->getTestQueue();
364+
$context->purgeQueue($queue);
365+
}
366+
} catch (\Exception $e) {
339367
}
368+
}
340369

341-
$driver->setupBroker();
370+
/**
371+
* @return PsrQueue
372+
*/
373+
protected function getTestQueue()
374+
{
375+
/** @var DriverInterface $driver */
376+
$driver = $this->container->get('enqueue.client.driver');
377+
378+
return $driver->createQueue('test');
342379
}
343380

344381
/**

Diff for: pkg/sqs/SqsContext.php

+11-1
Original file line numberDiff line numberDiff line change
@@ -186,12 +186,22 @@ public function deleteQueue(SqsDestination $dest)
186186
}
187187

188188
/**
189+
* @deprecated since 0.8 will be removed 0.9 use self::purgeQueue()
190+
*
189191
* @param SqsDestination $dest
190192
*/
191193
public function purge(SqsDestination $dest)
194+
{
195+
$this->purgeQueue($dest);
196+
}
197+
198+
/**
199+
* @param SqsDestination $destination
200+
*/
201+
public function purgeQueue(SqsDestination $destination)
192202
{
193203
$this->getClient()->purgeQueue([
194-
'QueueUrl' => $this->getQueueUrl($dest),
204+
'QueueUrl' => $this->getQueueUrl($destination),
195205
]);
196206
}
197207
}

Diff for: pkg/stomp/StompConnectionFactory.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public function createContext()
6464
});
6565
}
6666

67-
return new StompContext($this->stomp);
67+
return new StompContext($this->establishConnection());
6868
}
6969

7070
/**

0 commit comments

Comments
 (0)