sampler postprocessor guide debug java string integer jmeter beanshell

java - postprocessor - Análisis cadena a entero en BeamShell Sampler en JMeter



jsr223 postprocessor (1)

Su código se ve bien, pero puede ser un problema con las currentPMCount y / o pmViolationMaxCount .

Si realmente se ven bien y se parecen a los enteros y no exceden los valores máximos / mínimos de Integer, puedes probar lo siguiente:

  1. Asegúrese de que no haya caracteres de "espacio" alrededor del valor numérico, ya que el espacio inicial o posterior causará fallas de conversión. Quizás invocar el método trim() en la variable puede ayudar:

    int i = Integer.parseInt(vars.get("currentPMCount").trim());

  2. Si almacena su script en un archivo y luego proporciona la ruta al archivo en Beanshell Assertion obtendrá el número de línea "problemático"
  3. Mi favorito: rodee su código en el bloque try / catch de la siguiente manera:

    try{ //your code here } catch (Exception ex){ log.warn("Error in my script", ex); throw ex; // elsewise JMeter will "swallow" the above exception }

De esta forma obtendrás stacktrace más informativo en lugar de pésimo Error invoking bsh method mensaje del Error invoking bsh method que no dice nada.

Consulte Cómo utilizar BeanShell: la guía de componentes incorporada favorita de JMeter para obtener más consejos y trucos.

Estoy tratando de analizar una cadena en un entero en JMeter pero falló debido al siguiente error. Si intento imprimir las cadenas devueltas por vars.get, se ven bien.

2014/06/28 00:08:52 WARN - jmeter.assertions.BeanShellAssertion: org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval Sourced file: inline evaluation of: ``if (ResponseCode != null && ResponseCode.equals ("200") == false ) { int i = In . . . '''' : Typed variable declaration : Method Invocation Integer.parseInt

El siguiente es mi código

if (ResponseCode != null && ResponseCode.equals ("200") == false ) { int i = Integer.parseInt(vars.get("currentPMCount")); int j = Integer.parseInt(vars.get("pmViolationMaxCount")); if( i > j ){ log.warn("PM count on server is greater than max allowed count."); } log.warn( "The return code is " + ResponseCode); // this goes to the JMeter log file } else { Failure=true ; FailureMessage = "The response data size was not as expected" ; }