Gracias a un nuevo feature propuesto en la comunidad, podemos crear plugins independientes del código de Tempest para correr test cases personalizados en Openstack, este método se llama “Tempest Test Plugin Interface”. Con esto cualquier proyecto podrá correr un conjunto de pruebas externas como parte de una corrida de Tempest, ahora solo nos debemos de preocupar por crear el plugin para agrupar nuestros test cases y olvidarnos de la complejidad de integrarlos en la estructura del código de Tempest. Mas independencia!
Estructura del plugin
Básicamente el plugin es un Python package que contiene test cases y se instala en tu ambiente local o virtual (venv), entonces al momento de instalar el paquete, Tempest los auto-descubrirá y registrará sin tener que hacer algo extra.
setup.cfg setup.py README.rst plugin_dir/ __init__.py config.py plugin.py tests/ __init__.py api/ __init__.py base.py test_something.py scenario/ __init__.py
A continuación explico la función de cada archivo para que programes el plugin acorde a tus necesidades:
- setup.cfg: Describe los metadatos de tu package, como: nombre, versión, autor, etc. Lo mas importante en este archivo es especificar el entrypoint, que es la ubicacion de la clase principal para que Tempest pueda registrarla.Veamos el siguiente ejemplo, donde my-plugin es el nombre que le darás a tu plugin, plugin_dir es el nombre de la carpeta en la estructura de archivos y MyTempestPlugin es el nombre que le des a tu clase principal en el archivo de plugin.py
[entry_points] tempest.test_plugins = my-plugin = plugin_dir.plugin:MyTempestPlugin
- setup.py: Se especifican los requerimientos globales del plugin, en este caso solo es necesario pbr.
- README.rst: Información acerca del proyecto.
- plugin_dir: Carpeta principal, generalmente se usa que lleve el nombre del plugin. Ejemplo: my_plugin.
- config.py: Contiene variables de configuracion que las pruebas del plugin necesiten.
- plugin.py: Es la clase del plugin, usada como entrypoint por Tempest.
- tests: Aquí es donde vivirán los test cases.
- api: Todos los test cases relacionados con pruebas de api.
- scenario: Todos los test cases relacionados con pruebas de escenario.
En mi Github tengo un repositorio de un plugin básico que corre un “Hello World” test case, puedes revisarlo como referencia.
Instalación
Cuando corramos Tempest, automáticamente descubrirá los plugins instalados. Entonces lo único que necesitamos es instalar el Python package que contiene a nuestro plugin.
- Actualizar pip y setuptools:
$ pip install -U pip
- Instalar el package desde su carpeta raíz:
$ sudo pip install -e .
Instalación en virtual environments
Si vas a correr Tempest desde un virtualenv debes de asegurarte de que el Python package que contiene al plugin esta instalado en el venv.
$ . ~/tempest/.venv/bin/activate
$ ~/tempest/.venv/bin/pip install -e ~/my_plugin/
Validar que el plugin se instaló en el virtual environment:
$ ~/tempest/.venv/bin/pip list
Como correr los tests?
Para correr las pruebas usaremos el test runner de Openstack, testr.
- Validemos que Tempest descubrió el plugin:
$ testr list-tests | grep mi_plugin
Este comando mostrará una lista de todos los test cases dentro del plugin.
- Para correr los test cases lo puedes hacer por su nombre (de uno por uno), usando expresiones regulares o corriendo algún set donde los test cases usen ese nombre como decorador (smoke, telemetry, volume, etc).
$ testr run mi_plugin.tests.api.test_something.TestSomething.test_something_status
$ testr run --subunit smoke | subunit-2to1 | ./tools/colorizer.py
May 22, 2016 at 2:41 am
Hi,
Thank you very much for the article. Its very helpful.
Could you please share the tempest config file for this plugin.
Regards,
Siddiq
June 8, 2019 at 2:57 am
There is a fine offers for victory. blog.mbonell.com
http://bit.ly/2Kyv1df
July 15, 2019 at 4:21 am
Look at enjoyably characterize of the department anyhow outrageously seeking your team. blog.mbonell.com
http://bit.ly/2NINAyx
July 22, 2019 at 1:33 am
Look at a tangibles amputate drag in compensation victory. blog.mbonell.com
http://bit.ly/2NIZzfC
September 26, 2019 at 2:18 pm
Excelente post!!
January 2, 2021 at 1:52 am
Europe, and in Ancient Russia
January 15, 2021 at 3:55 pm
or their samples written