Quiero tener una variable global para la comunicación entre hilos.

Configuración actual:

Grupo de subprocesos 1: es un subproceso multiusuario, que accederá a ciertas API en un flujo.

Grupo de subprocesos 2: ahora, según nuestro sistema actual, el token de autenticación se actualiza cada 10 minutos. Entonces, en este grupo de hilos, estoy llamando a la API refreshToken.

Approach1: Intenté usar la propiedad jmeter. Pero dado que todos los subprocesos están en paralelo, si un subproceso actualiza el token, todos los demás subprocesos fallan.

Approach2: Uso del complemento InterThreadCommunication. Como no sé cuándo ni dónde en el sistema, el token caducará, por lo que no sé dónde llamar al preprocesador de comunicación entre subprocesos.

enter image description here

0
arctic_monkey 12 nov. 2017 a las 14:01

2 respuestas

La mejor respuesta

Utilice propiedades específicas de subprocesos como:

  1. En el grupo de subprocesos "Refresh Token", especifique propiedades individuales para contener tokens para cada usuario virtual, como:

    ${__setProperty(token_${__threadNum},YOUR_TOKEN_VALUE_HERE,)}
    
  2. En el grupo de subprocesos "PA API", acceda a valores de token individuales como:

    ${__P(token_${__threadNum},)}
    

Referencias:

1
Dmitri T 13 nov. 2017 a las 05:52

En el enfoque 1 con la propiedad jmeter, puede continuar agregando un controlador de sección crítica con misma clave que un padre para Samplers que está intentando obtener o actualizar su token.

De esa forma, Threads esperará hasta que termine el token de actualización anterior (get /) y luego obtendrá el token actualizado.

Tenga en cuenta que no funcionará en las pruebas distribuidas:

El controlador de la sección crítica solo realiza bloqueos dentro de una JVM, por lo que si utiliza pruebas distribuidas, asegúrese de que su caso de uso no dependa de todos los subprocesos de bloqueo de todas las JVM.

0
user7294900 12 nov. 2017 a las 11:08