web-dev-qa-db-fra.com

JMeter/Beanshell "Erreur lors de l'appel de la méthode bsh: eval Fichier source:"

J'ai un problème dans JMeter dans lequel je reçois cette erreur 

2014/08/14 14:13:26 ERROR - jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``String RequestUrl = vars.get("RequestUrl"); String[] params = RequestUrl.split(" . . . '' : Typed variable declaration 
2014/08/14 14:13:26 WARN  - jmeter.extractor.BeanShellPostProcessor: Problem in BeanShell script org.Apache.jorphan.util.JMeterException: Error invoking bsh method: eval   Sourced file: inline evaluation of: ``String RequestUrl = vars.get("RequestUrl"); String[] params = RequestUrl.split(" . . . '' : Typed variable declaration 

Je n'ai aucune idée de ce qui ne va pas, et le code semble autrement fonctionner. Quelqu'un peut-il me donner des conseils?

Voici le bloc de code en question:

String RequestUrl = vars.get("RequestUrl");
String[] params = RequestUrl.split("\\?");
String RequestTask = params[1].split("\\&")[1].split("=")[1];
System.out.println(RequestTask);
vars.put("RequestTask",RequestTask);

il faut probablement mentionner que le code est dans un post-processeur, qui est associé à un extracteur Xpath pour "RequestUrl"

Édité pour inclure toute l'erreur

11
sidd

Je ne vois pas votre URL ni ce que la requête XPath renvoie, mais dans tous les cas, votre logique de traitement des URL est floue, car elle dépend fortement de l'ordre et de la présence des paramètres et risque de vous dégoûter à l'avenir en cas de changement d'URL de demande, par exemple, de paramètre ordre des paramètres ou quelque chose encodé, etc. 

Voir ci-dessous pour référence: 

import org.Apache.http.NameValuePair;
import org.Apache.http.client.utils.URLEncodedUtils;
import Java.net.URI;
import Java.util.List;

String url = vars.get("RequestUrl");

List params = URLEncodedUtils.parse(new URI(url), "UTF-8");

for (NameValuePair param : params) {            
    if (param.getName().equals("put your actual param name here")) {                 
        vars.put("RequestTask", param.getValue());
    }
}

Cela vaut également la peine de vérifier Comment utiliser BeanShell: le composant intégré préféré de JMeter pour obtenir des conseils de dépannage. En général, localiser les erreurs devrait être utilisé comme suit:

log.info("something");
log.error("something else");

Donc, si vous ne voyez pas de message dans le journal, Beanshell n'a pas été en mesure d'exécuter la ligne et a échoué quelque part au-dessus. 

De plus, les messages d'erreur de Beanshell ne sont pas très informatifs, j'utilise la construction suivante dans mes scripts:

try {
    //script logic here
}

catch (Throwable ex) {
    log.error("Failed to do this or that", ex);
}

Donc, stracktrace d'erreur pourrait être lu dans le fichier jmeter.log. 

J'espère que cela t'aides. 

14
Dmitri T

Pourriez-vous montrer toute l'erreur?

Essayez d'ajouter une déclaration après l'autre pour voir laquelle est la cause première.

Je suppose que vous faites peut-être une hypothèse sur les résultats (accès au tableau), ce qui peut poser problème.

0
UBIK LOAD PACK

si vous convertissez un script JMS enregistré VuGen en JMeter, vous devez rechercher les fonctions lr copiées qui LANCERONT cette erreur/une erreur similaire.

Par exemple: int orderlinecount = Integer.parseInt(lr.eval_string("strInt"));

Vous devez vous assurer que votre script est exempt de toutes les fonctions liées à lr afin que jmeter puisse exécuter votre script avec succès.

0
Mishal