Signed-off-by: joshvanl <me@joshvanl.dev> Co-authored-by: Bernd Verst <github@bernd.dev> |
||
---|---|---|
.. | ||
components | ||
mtls_sasl_external | ||
README.md | ||
config.yaml | ||
docker-compose.yml | ||
rabbitmq_test.go |
README.md
RabbitMQ certification testing
This project aims to test the RabbitMQ Pub/Sub component under various conditions.
Test plan
- Bring up a RabbitMQ cluster
- Test single publisher / single subscriber
- Start an app with one publisher and one subscriber
- The publisher advertises to 3 topic
- The subscriber is subscribed to 2 topics
- Test: Sends 1000+ unique messages with keys set
- App: Simulates periodic errors
- Component: Retries on error
- App: Observes successful messages
- Test: Confirms that all expected messages were received
- Test: Confirms that subscriber does not receive messages from the non-subscribed topic
- Test single publisher / multiple subscribers with same consumer ID
- Start one publisher and one subscriber with consumer ID "A"
- Verify equality between sent and received messages
- Start second subscriber with consumer ID "A"
- Verify that total number of received messages by both subscribers equals to the number of successfully published messages
- Test single publisher / multiple subscribers with distinct consumer IDs
- Start one publisher, one subscriber with consumer ID "A", and two subscribers with consumer ID "B"
- Verify that the number of published messages equals to the sum of:
- the number of messages received by subscriber "A"
- the total number of the messages received by subscribers "B"
- App: Simulates periodic errors
- Component: Retries on error
- Test TTL is regarded.
- Setting a large TTL only at the message level but not component level, wait for a small period, and verify that the message is received.
- Setting a TTL only at the message level but not component level expires messages correctly
- Setting a default TTL at the component level expires messages correctly
- Create component spec with the field
ttlInSeconds
. - Run dapr application with component.
- Send a message, wait TTL seconds, and verify the message is deleted/expired.
- Create component spec with the field
- Setting a TTL at the component level and message level ignores the default component level TTL and always uses the message level TTL specified
- Test mTLS External Authentication
- Being able to connect to the RabbitMQ
- Test priority queues
- Being able to publish and subscribe to priority messages/topics