viernes, 15 de abril de 2011

JMETER - asignar a una variable el resultado de una operación matemática sobre otra variable

Si quiero que el valor de una variable en Jmeter (asignación en la interfaz gráfica del Jmeter, dentro de un elemento de configuración, como "User defined variables" o un elemento de pre-procesamiento como "User parameters") sea el resultado de una operación matemática sobre el contenido de otra variable de jmeter, puedo usar la función "__jexl", por ejemplo de la siguiente manera, para asignar a MI_VARIABLE el resultado de multiplicar por dos el contenido de la variable OTRA_VARIABLE_JMETER:
MI_VARIABLE --> ${__jexl(${OTRA_VARIABLE_JMETER}*2)}

Si OTRA_VARIABLE_JMETER no contuviera un valor numérico, por ejemplo su valor fuese "s", entonces el resultado de la operación anterior sería 0 (cero).

jueves, 14 de abril de 2011

Como probar un script BeanShell en un fichero desde consola

En JMETER tenemos la posibilidad de ejecutar scripts BeanShell localizados en ficheros externos.

Por ejemplo, en la asignación de una variable de usuario en un módulo de pre-procesamiento, puedo querer asignarle el resultado de un script BeanShell localizado en un fichero "fichero.bsh".

Para probarlos desde la consola de comandos podemos ejecutar el siguiente comando:
java -cp rutaBaseDeLaInstalacionDeJmeter/lib/bsh-2.0b5.jar bsh.Interpreter ficheroScriptBeanShell.bsh

Creo que si se tiene instalado el intérprete bsh, también podemos ejecutar directamente:
bsh ficheroScriptBeanShell.bsh

Referencia desde Jmeter


¡Importante!: La ruta relativa del fichero con el script, debe ser relativa al directorio del script que ha invocado jmeter. Si he ejecutado directamente dirJmeter/bin/jmeter.bsh o dirJmeter/bin/jmeter.bat, entonces la ruta deberá ser relativa a dirJmeter/bin/. Y si he invocado el script rutaMiScript/miScript.sh que a su vez internamente ha llamado al dirJmeter/bin/jmeter.sh, entonces la ruta del fichero con el script BeanShell que ponga dentro de Jmeter tendrá que ser relativa a rutaMiScript/.

En caso de que queramos asignarle a la variable el resultado de ejecutar todo el fichero con el script BeanShell tendríamos, dentro de JMeter, la asignación siguiente:
MI_VARIABLE --> ${__BeanShell(source("rutaFichero/ficheroScriptBeanShell.bsh");)}

También podemos, en vez de ejecutar todo el fichero, invocar un método concreto. Para ello, primero incluimos el script con la misma invocación que en el caso anterior y luego a continuación invocamos el método-

¡Importante! La llamada al método del script de BeanShell debe tener escapadas las comas.
MI_VARIABLE --> ${__BeanShell(source("../wsPlans/ficheroScriptBeanShell.bsh");miMetodo("parametroTextoA"\,"parametroTextoB"\,3\,"parametroTextoC");)}