Ejecutando SOAP-UI mockservicerunner en modo servidor (Linux)

Ejecutando SOAP-UI mockservicerunner en modo servidor (Linux)

[:es]La ejecución de servicios mock (simulados) es una de las características mas potentes de SoapUI, hemos explorado en este post, un conjunto de tips que pueden ser útiles en la generación de los mismos. El propósito de esta publicación es compartir la forma cómo hemos automatizado la ejecución de servicios mock en modo servidor.

SoapUI cuenta con un script llamado mockservicerunner.sh el cual permite la ejecución de mock services previamente configurados en un proyecto mediante línea de comandos, lo cual se hace tremendamente útil para disponibilizar un conjunto de mocks en modo servidor, y acceder a estos mismos mediante los endpoints configurados previamente. El uso de la shell es como sigue:

usage: mockservicerunner [options] <soapui-project-file>
-a <arg> Sets the url path to listen on
-b Turns off blocking read for termination
-D <arg> Sets system property with name=value
-G <arg> Sets global property with name=value
-m <arg> Specified the name of the MockService to run
-p <arg> Sets the local port to listen on
-P <arg> Sets or overrides project property with name=value
-s <arg> Sets the soapui-settings.xml file to use
-S Saves the project after running the mockService(s)
-v <arg> Sets password for soapui-settings.xml file
-x <arg> Sets project password for decryption if project is encrypted

Generalmente nuestra configuración es más simple y solo requiere el nombre del mock service, el puerto (sobre-escribiendo la configuración por defecto de los endpoints definidos en el projecto) y el proyecto xml:

mockservicerunner.sh -p 9090 -m "REST MockServices" $PROJECT_HOME/my-project.xml"

Al ejecutar la línea de comandos, por consola se iniciaran los servicios hasta que se presione una tecla para terminar:
23:45:24,638 INFO [SoapUIMockServiceRunner] Started 1 runner
Press any key to terminate...

Sin embargo, este escenario no es muy práctico para el modo en que queremos levantar nuestro servicio, por tanto hemos creado un script para iniciar el mockservicerunner en segundo plano (con nohup), el cual permite iniciar, validar el estado actual, detener y reiniciar el servidor. Considerando que los procesos hijos que levanta SoapUI para la ejecución del runner, cambiaban de Padre (PPID) cuando intentábamos matarlos (con kill -9) fue necesario adaptar un proceso de detención dinámico basado en el nombre de los procesos hijos.

Pre-requsitos básicos (no mayor detalle):

  1. Java instalado
  2. Descargar SoapUI para linux
  3. Descargar el proyecto soapui en el servidor que ejecutará el mockservicerunner

Una vez tengas la herramienta desempaquetada, usaremos las herramientas de línea de commandos para ejectuar el modo servidor. El script que hacemos referencia, lo puedes encontrar en gist de Github acá. Su ejecución es simple:
Usage: ./soapui_mockservicerunner_script.sh { start | stop | restart | status }

Antes de ejecutar, asegurarse de completar las variables requeridas adecuadas:
[code language=”bash”]
# Variables to edit according to your environment
SOAPUI_HOME=$HOME/SoapUI-5.2.1
PROJECT_HOME=$HOME/somefolder/soap-ui
USR=myuser
[/code]

Detalles del script lo puedes encontrar en el gist, para nuestro propósito, sabemos que el servicio mock está ejecutándose en un servidor, con un puerto personalizado y siendo accedido mediante URLs que pueden ser automatizada en una ejecución de tests. Grandioso no? No olvides de probarlo con Postman.

twitterFacebooklinkedin

[:]