testcontainers / testcontainers-python

Testcontainers is a Python library that providing a friendly API to run Docker container. It is designed to create runtime environment to use during your automatic tests.
https://testcontainers-python.readthedocs.io/en/latest/
Apache License 2.0
1.44k stars 271 forks source link

Feature: add MosquittoContainer (mqtt) #568

Open f18m opened 2 months ago

f18m commented 2 months ago

What are you trying to do?

I'm writing integration tests for a Python project (https://github.com/f18m/ha-alarm-raspy2mqtt) that publishes messages to an MQTT broker. I would like to use testcontainers to create the integration tests and noticed that there is no specialization available for MQTT and for its most-used broker which is Mosquitto. So I'd like to propose the addition of a MosquittoContainer class to testcontainers-python.

Why should it be done this way?

There are a number of helpers that could be provided out of the box to ease integration testing of MQTT applications.

I can provide a PR to add my own MosquittoContainer implementation if there is interest by the project maintainers...

alexanderankin commented 2 months ago

sure, i cant promise it will be a priority but we've been merging a bunch of these. the hivemq seems to be king in the enterprise world with this so id say if we do merge a mqtt one it has to be this one:

https://java.testcontainers.org/modules/hivemq/

f18m commented 2 months ago

hi @alexanderankin , thanks for the reply. Actually I've been developing the specialization of DockerContainer for the Mosquitto broker (https://mosquitto.org/) which is a very popular choice at least in home automation environment... I could contribute that if there's interest...

alexanderankin commented 2 months ago

hm, i suppose we could have a module with multiple classes in it

f18m commented 1 month ago

hi @alexanderankin , I opened PR #599 to propose my implementation of a MosquittoContainer class. Several usage examples can be found at https://github.com/f18m/rpi2home-assistant/blob/main/tests/test_integration.py