Skip to content

Commit 1a03ced

Browse files
committed
add spec for ttl and priority
1 parent 15da02d commit 1a03ced

File tree

2 files changed

+123
-0
lines changed

2 files changed

+123
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
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 SendAndReceivePriorityMessagesFromQueueSpec extends TestCase
14+
{
15+
public function test()
16+
{
17+
$context = $this->createContext();
18+
$queue = $this->createQueue($context, 'send_and_receive_priority_messages_from_queue_spec');
19+
20+
$consumer = $context->createConsumer($queue);
21+
22+
// guard
23+
$this->assertNull($consumer->receiveNoWait());
24+
25+
$expectedPriority5Body = __CLASS__.'_priority5_'.time();
26+
$expectedPriority1Body = __CLASS__.'_priority1_'.time();
27+
28+
$producer = $context->createProducer();
29+
30+
$producer->setPriority(1);
31+
$producer->send($queue, $context->createMessage($expectedPriority1Body));
32+
33+
$producer->setPriority(5);
34+
$producer->send($queue, $context->createMessage($expectedPriority5Body));
35+
36+
$message = $consumer->receive(8000); // 8 sec
37+
38+
$this->assertInstanceOf(PsrMessage::class, $message);
39+
$consumer->acknowledge($message);
40+
$this->assertSame($expectedPriority5Body, $message->getBody());
41+
42+
$message = $consumer->receive(8000); // 8 sec
43+
44+
$this->assertInstanceOf(PsrMessage::class, $message);
45+
$consumer->acknowledge($message);
46+
$this->assertSame($expectedPriority1Body, $message->getBody());
47+
}
48+
49+
/**
50+
* @return PsrContext
51+
*/
52+
abstract protected function createContext();
53+
54+
/**
55+
* @param PsrContext $context
56+
* @param string $queueName
57+
*
58+
* @return PsrQueue
59+
*/
60+
protected function createQueue(PsrContext $context, $queueName)
61+
{
62+
return $context->createQueue($queueName);
63+
}
64+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
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 SendAndReceiveTimeToLiveMessagesFromQueueSpec extends TestCase
14+
{
15+
public function test()
16+
{
17+
$context = $this->createContext();
18+
$queue = $this->createQueue($context, 'send_and_receive_time_to_live_messages_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+
29+
$producer->setTimeToLive(2000);
30+
$producer->send($queue, $context->createMessage('it should not be received'));
31+
32+
$producer->setTimeToLive(null);
33+
$producer->send($queue, $context->createMessage($expectedBody));
34+
35+
sleep(3);
36+
37+
$message = $consumer->receive(4000); // 8 sec
38+
39+
$this->assertInstanceOf(PsrMessage::class, $message);
40+
$consumer->acknowledge($message);
41+
$this->assertSame($expectedBody, $message->getBody());
42+
}
43+
44+
/**
45+
* @return PsrContext
46+
*/
47+
abstract protected function createContext();
48+
49+
/**
50+
* @param PsrContext $context
51+
* @param string $queueName
52+
*
53+
* @return PsrQueue
54+
*/
55+
protected function createQueue(PsrContext $context, $queueName)
56+
{
57+
return $context->createQueue($queueName);
58+
}
59+
}

0 commit comments

Comments
 (0)