web-dev-qa-db-ja.com

JMeter / Beanshell "bshメソッドの呼び出しエラー:evalソースファイル:"

JMeterで問題が発生し、このエラーが表示されます

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 

私は何が悪いのか手がかりがなく、コードはそれ以外では機能しているようです。誰か私にアドバイスをくれますか?

問題のコードのブロックは次のとおりです。

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);

おそらく、コードはポストプロセッサーにあり、「RequestUrl」のXpathエクストラクターとペアになっていることを言及する必要があります

エラー全体を含むように編集されました

11
sidd

URLが表示されず、XPathクエリが何を返すかはわかりませんが、URLの解析ロジックはパラメーターの順序と存在に強く依存しているため、不安定であり、URLの変更要求(つまり、追加のパラメーターまたは変更された)が発生した場合に、後で戻ってくることがありますパラメータの順序またはエンコードされたものなど.

以下を参照してください:

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());
    }
}

また、トラブルシューティングのヒントについては、チェックアウトする価値があります BeanShellの使用方法:JMeterのお気に入りの組み込みコンポーネント 。一般に、エラーロギングをローカライズするには、次のように使用する必要があります。

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

したがって、ログにメッセージが表示されない場合、Beanshellは行を実行できず、上記のどこかで失敗しました。

また、Beanshellエラーメッセージはあまり有益ではありません。スクリプトでは次の構文を使用しています。

try {
    //script logic here
}

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

したがって、エラーstracktraceはjmeter.logファイルで読み取ることができます。

お役に立てれば。

14
Dmitri T

エラー全体を見せていただけますか?

1つのステートメントを次々に追加して、どれが根本原因であるかを確認してください。

問題の原因である可能性がある結果(配列アクセス)について仮説を立てている可能性があります。

0
UBIK LOAD PACK

vuGenで記録されたJMSスクリプトをJMeterに変換する場合は、コピーされたlr関数を探す必要があります。これにより、このエラーまたは類似のエラーがスローされます。

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

Jmeterがスクリプトを正常に実行するためには、スクリプトにすべてのlr関連の関数がないことを確認する必要があります。

0
Mishal