Skip to content

Commit c3d40c2

Browse files
kardaganNaktibalda
authored andcommitted
[AMQP] Add methods to count and test the number of messages in a queue (#5283)
1 parent d68163c commit c3d40c2

File tree

2 files changed

+81
-1
lines changed

2 files changed

+81
-1
lines changed

src/Codeception/Module/AMQP.php

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,76 @@ public function seeMessageInQueueContainsText($queue, $text)
318318
$this->assertContains($text, $msg->body);
319319
}
320320

321+
/**
322+
* Count messages in queue.
323+
*
324+
* @param string $queue
325+
*
326+
* @return int
327+
*/
328+
public function _countMessage($queue)
329+
{
330+
list($queue, $messageCount) = $this->getChannel()->queue_declare($queue, true);
331+
return $messageCount;
332+
}
333+
334+
/**
335+
* Checks that queue have expected number of message
336+
*
337+
* ``` php
338+
* <?php
339+
* $I->pushToQueue('queue.emails', 'Hello, davert');
340+
* $I->seeNumberOfMessagesInQueue('queue.emails',1);
341+
* ?>
342+
* ```
343+
*
344+
* @param string $queue
345+
* @param int $expected
346+
*/
347+
public function seeNumberOfMessagesInQueue($queue, $expected)
348+
{
349+
$messageCount = $this->_countMessage($queue);
350+
$this->assertEquals($expected, $messageCount);
351+
}
352+
353+
/**
354+
* Checks that queue is empty
355+
*
356+
* ``` php
357+
* <?php
358+
* $I->pushToQueue('queue.emails', 'Hello, davert');
359+
* $I->purgeQueue('queue.emails');
360+
* $I->seeQueueIsEmpty('queue.emails');
361+
* ?>
362+
* ```
363+
*
364+
* @param string $queue
365+
* @param int $expected
366+
*/
367+
public function seeQueueIsEmpty($queue)
368+
{
369+
$messageCount = $this->_countMessage($queue);
370+
$this->assertEquals(0, $messageCount);
371+
}
372+
373+
/**
374+
* Checks if queue is not empty.
375+
*
376+
* ``` php
377+
* <?php
378+
* $I->pushToQueue('queue.emails', 'Hello, davert');
379+
* $I->dontSeeQueueIsEmpty('queue.emails');
380+
* ?>
381+
* ```
382+
*
383+
* @param string $queue
384+
*/
385+
public function dontSeeQueueIsEmpty($queue)
386+
{
387+
$messageCount = $this->_countMessage($queue);
388+
$this->assertNotEquals(0, $messageCount);
389+
}
390+
321391
/**
322392
* Takes last message from queue.
323393
*

tests/unit/Codeception/Module/AMQPTest.php

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,16 @@ public function testPushToQueue()
3838
$this->module->seeMessageInQueueContainsText('queue1', 'hello');
3939
}
4040

41+
public function testCountQueue()
42+
{
43+
$this->module->pushToQueue('queue1', 'hello');
44+
$this->module->pushToQueue('queue1', 'world');
45+
$this->module->dontSeeQueueIsEmpty('queue1');
46+
$this->module->seeNumberOfMessagesInQueue('queue1', 2);
47+
$this->module->purgeAllQueues();
48+
$this->module->seeQueueIsEmpty('queue1');
49+
}
50+
4151
public function testPushToExchange()
4252
{
4353
$queue = 'test-queue';
@@ -50,6 +60,6 @@ public function testPushToExchange()
5060
$this->module->bindQueueToExchange($queue, $exchange, 'test.#');
5161

5262
$this->module->pushToExchange($exchange, $message, $topic);
53-
$this->module->seeMessageInQueueContainsText($queue , $message);
63+
$this->module->seeMessageInQueueContainsText($queue, $message);
5464
}
5565
}

0 commit comments

Comments
 (0)