Implementación de la función Gamma en Apache Jmeter
En este post explicaré la forma en que se debe de utilizar la librería de funciones de distribución discretas y continuas del paquete org.apache.commons.math3.distribution utilizando Apache Jmeter con el lenguaje Groovy.
Introducción
Hace algunos días debía de hacer una prueba de estrés a un sitio web, esta prueba debía de simular el comportamiento real de los estudiantes, para esto necesitaba agregar retardos de tiempo entre las diferentes páginas utilizando el JSR223 y la función de distribución Gamma.
Anteriormente era posible utilizar librerías de javascript, pero con las actualizaciones de Java y Jmeter esto ya no es posible, así que a continuación encontrarás la forma correcta de implementar este paquete de funciones estadísticas (nadie en Internet te lo dirá, y eso me costó un poco de tiempo de investigación).
Descargar apache Jmeter
El programa de Apache Jmeter lo puedes descargar en el siguiente enlace:
https://jmeter.apache.org/download_jmeter.cgi
Librería Common Math3
Esta librería está en la carpeta de “lib” de Jmeter, no es necesario hacer ninguna instalación para poder utilizar sus funciones:
En esta página están todas las definiciones de clases que tiene:
En mi caso estoy interesado en utilizar la función de distribución Gamma, así que para ver de que forma la debo de utilizar debo hacer clic en el siguiente enlace.
Función de distribución Gamma
La URL de esta función es la siguiente:
A continuación, debes anotar la ruta para poder importar la clase:
Posteriormente encontrarás los diferentes tipos de constructores de la clase, en mi caso el primer constructor necesito utilizar.
Por último, están los diferentes métodos de la clase. En mi caso utilizaré sample() para poder obtener un número aleatorio.
Implementación con código groovy
Para poder implementarlo, es necesario seguir los siguientes pasos:
(1) Importar la clase:
Import org.apache.commons.math3.distribution.GammaDistribution
(2) Crear una instancia de la clase.
gamma = new GammaDistribution( (${alpha}).toDouble(), (${scale}).toDouble() )
Las variables alpha y scale las tenía definidas en un objeto de configuración de variables definidas por el usuario, lo convertí a double porque ese es el tipo de variable que recibe el constructor de la clase.
(3) Utilizar el método sample()
esperar = (gamma.sample().toInteger()*1000)
La función sample() devuelve el tiempo en segundos, JSR223 requiere el valor en milisegundos, por ese motivo hago la multiplicación por 1000.
(4) Enviar el resultado al objeto JSR223 timmer.
esperar.toString()
El objeto JSR223 requiere el tiempo en string.
Código final
El código final me quedo de la siguiente manera, espero las instrucciones de esta publicación te hayan servido para implementar las funciones estadísticas dentro de Jmeter.