Skip to content

Commit 7ad07e0

Browse files
committed
add spec for delayed messages
1 parent 77b3905 commit 7ad07e0

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?php
2+
3+
namespace Interop\Queue\Spec;
4+
5+
use Interop\Queue\PsrContext;
6+
use Interop\Queue\PsrMessage;
7+
use Interop\Queue\PsrQueue;
8+
use PHPUnit\Framework\TestCase;
9+
10+
/**
11+
* @group functional
12+
*/
13+
abstract class SendAndReceiveDelayedMessageFromQueueSpec extends TestCase
14+
{
15+
public function test()
16+
{
17+
$context = $this->createContext();
18+
$queue = $this->createQueue($context, 'send_and_receive_delayed_message_from_queue_spec');
19+
20+
$consumer = $context->createConsumer($queue);
21+
22+
// guard
23+
$this->assertNull($consumer->receiveNoWait());
24+
25+
$expectedBody = __CLASS__.time();
26+
27+
$producer = $context->createProducer();
28+
$producer->setDeliveryDelay(5000); // 5sec
29+
$producer->send($queue, $context->createMessage($expectedBody));
30+
31+
$sendAt = microtime(true);
32+
33+
$message = $consumer->receive(8000); // 8 sec
34+
35+
$this->assertInstanceOf(PsrMessage::class, $message);
36+
$consumer->acknowledge($message);
37+
$this->assertSame($expectedBody, $message->getBody());
38+
39+
$this->assertGreaterThanOrEqual(5, microtime(true) - $sendAt);
40+
}
41+
42+
/**
43+
* @return PsrContext
44+
*/
45+
abstract protected function createContext();
46+
47+
/**
48+
* @param PsrContext $context
49+
* @param string $queueName
50+
*
51+
* @return PsrQueue
52+
*/
53+
protected function createQueue(PsrContext $context, $queueName)
54+
{
55+
return $context->createQueue($queueName);
56+
}
57+
}

0 commit comments

Comments
 (0)