Skip to content

Latest commit

 

History

History
309 lines (194 loc) · 6.35 KB

File metadata and controls

309 lines (194 loc) · 6.35 KB
layout doc
title AMQP - Codeception - Documentation

AMQP

Installation

If you use Codeception installed using composer, install this module with the following command:

{% highlight yaml %} composer require --dev codeception/module-amqp

{% endhighlight %}

Alternatively, you can enable AMQP module in suite configuration file and run

{% highlight yaml %} codecept init upgrade4

{% endhighlight %}

This module was bundled with Codeception 2 and 3, but since version 4 it is necessary to install it separately.
Some modules are bundled with PHAR files.
Warning. Using PHAR file and composer in the same project can cause unexpected errors.

Description

This module interacts with message broker software that implements the Advanced Message Queuing Protocol (AMQP) standard. For example, RabbitMQ (tested).

To use this module with Composer you need "php-amqplib/php-amqplib": "~2.4" package.

Config

  • host: localhost - host to connect
  • username: guest - username to connect
  • password: guest - password to connect
  • vhost: '/' - vhost to connect
  • cleanup: true - defined queues will be purged before running every test.
  • queues: [mail, twitter] - queues to cleanup
  • single_channel - create and use only one channel during test execution

Example

modules:
    enabled:
        - AMQP:
            host: 'localhost'
            port: '5672'
            username: 'guest'
            password: 'guest'
            vhost: '/'
            queues: [queue1, queue2]
            single_channel: false

Public Properties

  • connection - AMQPStreamConnection - current connection

Actions

bindQueueToExchange

  • param string $queue
  • param string $exchange
  • param string $routing_key
  • param bool $nowait
  • param ?array $arguments
  • param ?int $ticket
  • return mixed

Binds a queue to an exchange

This is an alias of method queue_bind of PhpAmqpLib\Channel\AMQPChannel.

{% highlight php %}

bindQueueToExchange( 'nameOfMyQueueToBind', // name of the queue 'transactionTracking.transaction', // exchange name to bind to 'your.routing.key' // Optionally, provide a binding key ) {% endhighlight %} #### declareExchange * `param string` $exchange * `param string` $type * `param bool` $passive * `param bool` $durable * `param bool` $auto_delete * `param bool` $internal * `param bool` $nowait * `param ?array` $arguments * `param ?int` $ticket * `return mixed` Declares an exchange This is an alias of method `exchange_declare` of `PhpAmqpLib\Channel\AMQPChannel`. {% highlight php %} declareExchange( 'nameOfMyExchange', // exchange name 'topic' // exchange type ) {% endhighlight %} #### declareQueue * `param string` $queue * `param bool` $passive * `param bool` $durable * `param bool` $exclusive * `param bool` $auto_delete * `param bool` $nowait * `param ?array` $arguments * `param ?int` $ticket * `return mixed` Declares queue, creates if needed This is an alias of method `queue_declare` of `PhpAmqpLib\Channel\AMQPChannel`. {% highlight php %} declareQueue( 'nameOfMyQueue', // exchange name ) {% endhighlight %} #### dontSeeQueueIsEmpty * `param string` $queue * `return void` Checks if queue is not empty. {% highlight php %} pushToQueue('queue.emails', 'Hello, davert'); $I->dontSeeQueueIsEmpty('queue.emails'); {% endhighlight %} #### grabMessageFromQueue * `param string` $queue * `return ?\PhpAmqpLib\Message\AMQPMessage` Takes last message from queue. {% highlight php %} grabMessageFromQueue('queue.emails'); {% endhighlight %} #### purgeAllQueues * `return void` Purge all queues defined in config. {% highlight php %} purgeAllQueues(); {% endhighlight %} #### purgeQueue * `param string` $queueName * `return void` Purge a specific queue defined in config. {% highlight php %} purgeQueue('queue.emails'); {% endhighlight %} #### pushToExchange * `param string` $exchange * `param \PhpAmqpLib\Message\AMQPMessage|string` $message * `param ?string` $routing_key * `return void` Sends message to exchange by sending exchange name, message and (optionally) a routing key {% highlight php %} pushToExchange('exchange.emails', 'thanks'); $I->pushToExchange('exchange.emails', new AMQPMessage('Thanks!')); $I->pushToExchange('exchange.emails', new AMQPMessage('Thanks!'), 'severity'); {% endhighlight %} #### pushToQueue * `param string` $queue * `param \PhpAmqpLib\Message\AMQPMessage|string` $message * `return void` Sends message to queue {% highlight php %} pushToQueue('queue.jobs', 'create user'); $I->pushToQueue('queue.jobs', new AMQPMessage('create')); {% endhighlight %} #### scheduleQueueCleanup * `param string` $queue * `return void` Add a queue to purge list #### seeMessageInQueueContainsText * `param string` $queue * `param string` $text * `return void` Checks if message containing text received. **This method drops message from queue** **This method will wait for message. If none is sent the script will stuck**. {% highlight php %} pushToQueue('queue.emails', 'Hello, davert'); $I->seeMessageInQueueContainsText('queue.emails','davert'); {% endhighlight %} #### seeNumberOfMessagesInQueue * `param string` $queue * `param int` $expected * `return void` Checks that queue have expected number of message {% highlight php %} pushToQueue('queue.emails', 'Hello, davert'); $I->seeNumberOfMessagesInQueue('queue.emails',1); {% endhighlight %} #### seeQueueIsEmpty * `param string` $queue * `return void` Checks that queue is empty {% highlight php %} pushToQueue('queue.emails', 'Hello, davert'); $I->purgeQueue('queue.emails'); $I->seeQueueIsEmpty('queue.emails'); {% endhighlight %}

 

Module reference is taken from the source code. Help us to improve documentation. Edit module reference