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:

Ubicación de la librería Apache Commons Math3 en Jmeter.

En esta página están todas las definiciones de clases que tiene:

https://commons.apache.org/proper/commons-math/javadocs/api-3.6.1/org/apache/commons/math3/distribution/package-summary.html

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.

Implementación de función de distribución Gamma.

Función de distribución Gamma

La URL de esta función es la siguiente:

https://commons.apache.org/proper/commons-math/javadocs/api-3.6.1/org/apache/commons/math3/distribution/GammaDistribution.html

A continuación, debes anotar la ruta para poder importar la clase:

Importar la clase GammaDistribution.

Posteriormente encontrarás los diferentes tipos de constructores de la clase, en mi caso el primer constructor necesito utilizar.

Constructor de la clase GammaDistribution.

Por último, están los diferentes métodos de la clase. En mi caso utilizaré sample() para poder obtener un número aleatorio.

Método sample() para 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.

Implementación final con código groovy.

Para recibir boletines de información, por favor escribe tu correo electrónico:

Por favor ingrese un correo electrónico valido.
Registrado correctamente!