2016-07-11 1 views
0

JMeterテストプランで正規表現を定義しましたが、user.variablesの単純変数の値を取得できました。しかし、私はビンシェルのポストプロセッサーで次のように2つの変数の時間差を計算しようとしています。私は報告書に何の結果も得ていません。Jmeterの2つの正規表現リファレンス名の値のキャプチャ時間の差

import javax.xml.bind.DatatypeConverter; 

vars.put("old_date_submitted", "submittedDate"); // submittedDate, succeeddedDate and runningDates are regular expr. reference names 
vars.put("old_date_succeeded", "succeededDate"); 
vars.put("old_date_running", "runningDate"); 

Calendar cal_s =  DatatypeConverter.parseDateTime(vars.get("old_date_submitted")); 
Calendar cal_c = DatatypeConverter.parseDateTime(vars.get("old_date_succeeded")); 
Calendar cal_r = DatatypeConverter.parseDateTime(vars.get("old_date_running")); 

Date new_date1 = cal_s.getTime(); // submitted Time 
Date new_date2 = cal_c.getTime(); // succeeded Time 
Date new_date3 = cal_r.getTime(); // running Time 

long new_date1_ms = new_date1.getTime(); // submitted Time 
long new_date2_ms = new_date2.getTime(); 
long new_date3_ms = new_date3.getTime(); 

log.info("Date in milliseconds: " + new_date1_ms); 

long delta1 = new_date2_ms - new_date1_ms; //calculate the difference (succeededDate - submittedDate) 
long delta2 = new_date3_ms - new_date1_ms; //calculate the difference (runningDate - submittedDate) 
vars.put("delta1", String.valueOf("delta1")); // store the result into a JMeter Variable 
vars.put("delta2", String.valueOf("delta2")); // store the result into a JMeter Variable 

答えて

0

このビット:

vars.put("old_date_submitted", "submittedDate"); // submittedDate, succeeddedDate and runningDates are regular expr. reference names 
vars.put("old_date_succeeded", "succeededDate"); 
vars.put("old_date_running", "runningDate"); 

は私には奇妙に思えます。与えられた:

submittedDate、succeeddedDateとrunningDatesはregular exprです。参照名

私の期待は、あなたが見えるようにコードを変更する必要がありますので、あなたは、そこのJMeter変数の代わりに、ハードコードされた文字列を使用しなければならないということである:だから

vars.put("old_date_submitted", vars.get("submittedDate")); // submittedDate, succeeddedDate and runningDates are regular expr. reference names 
vars.put("old_date_succeeded", vars.get("succeededDate")); 
vars.put("old_date_running", vars.get("runningDate")); 

最も可能性の高いコードがで失敗していますDatatypeConverter.parseDateTime

あなたはBeanShellのスクリプトは、以下のトラブルシューティング手法を検討して任意の問題に直面する次の時間:

  1. チェックjmeter.logファイル - のBeanShellスクリプトに障害が発生した場合にエラーがあっ
  2. 追加と印刷されますdebug();あなたのBeanshellスクリプトの始めにディレクティブを送ります - デバッグ出力をトリガーしますstdout
  3. あなたのビーンシェルコードはtry/catch blockのように入れます:

    try { 
        //your code here 
    } 
    catch (Throwable ex) { 
        log.error("Something went wrong", ex); 
        throw ex; 
    } 
    

    あなたはjmeter.logファイルに印刷されたより、「人に優しい」スタックトレースを取得するこの方法です。

JMeterテストでBeanshellを使用する方法の詳細については、How to Use BeanShell: JMeter's Favorite Built-in Componentを参照してください。

+0

すぐに訂正していただきありがとうございます。私はBeanshellについて多くの知識を持っていませんが、try/catchブロックで正確に試しましたが、どこでも何の応答も見ませんでした。 – Santana

関連する問題