2017-02-25 7 views
-1

私は入力されたCSVデータファイルを持っており、各HTTPリクエストをサーバに送るのに2 MBのファイルが必要です。このファイルには2つの変数があります。これらの変数の値を入力ファイルから変更する必要があります。私はBeanシェルプリプロセッサーを使用しています。以下はコードスニペットです。私は 'temp'という結果をHTTP Request Bodyで複製できませんでした。私も$ {TEMP}を試してみたけど、それも added variable in HTTP BodyScript structureJmeter:HTTPリクエストボディでBeanプロセッサの変数値を使用できません

HTTP Request and Bean shell structure を働いていない:すべての

import java.io.*; 
//cardId,receiverid 
try 
{ 
    // reading file into buffer 
    StringBuilder data = new StringBuilder(); 
    BufferedReader in = new BufferedReader(new FileReader("Sample.json")); 

    char[] buf = new char[1024]; 
    int numRead = 0; 
    while ((numRead = in.read(buf)) != -1) { 
    data.append(buf, 0, numRead); 
    } 
    in.close(); 

    // replacing stub with actual value 
    System.out.println(vars.get("cardId") + " " +vars.get("receiverid")); 

    String cardId = vars.get("cardId"); 
    String receiverid = vars.get("receiverid"); 
    String temp = data.toString().replaceAll("\\$\\{cardId\\}", vars.get("cardId")); 
      temp = data.toString().replaceAll("\\$\\{receiverid\\}", receiverid); 


    out.close(); 
} 
catch (Exception ex) { 
    IsSuccess = false; 
    log.error(ex.getMessage()); 
    System.err.println(ex.getMessage()); 
} 
catch (Throwable thex) { 
    System.err.println(thex.getMessage()); 
} 

答えて

0

あなたがさえBeanShellのか、何を必要としない、overscriptingされているが、すべてがウィットに、JMeter Functionsで行うことができます:だからあなたは置けば

サンプラー「ボディーデータ」タブ内の以下の構成を参照してください。

${__eval(${__FileToString(Sample.json,,)})} 

すべてのJMeter変数が値で置き換えられたSample.jsonファイルが表示されます。詳細については、Here’s What to Do to Combine Multiple JMeter Variablesの記事を参照してください。

+0

それは完璧に動作します。本当にありがとうございます。あなたは私の時間を救った –

0

まず、これはあなたの問題である場合、私は知らない、またはあなたが不完全投稿しました私はあなたがスクリプト内の任意の場所に変数tempを保存するのを見ていない。後でスクリプト内${temp}としてそれを使用する

vars.put("temp", temp); 

のようなものを持っている必要があります。 String tempを保存しても変数は自動的に作成されません。

2番目:スクリプトに多くの問題があるので、実際にはログを確認してください。スクリプトが正常に実行されていることを確認してください。私が見るものは次のとおりです。

  1. 私はあなたがの値で、そのファイルから読み込まれたデータで\$\{cardId\}\$\{receiverid\}を交換するためのもののようにあなたは何をしているかに基づいて、それがどのように見えるかSample.jsonに見えますが、よく分かりません変数cardIdおよびreceiverid。しかしあなたのコードは間違っているので、\$\{receiverid\}だけが置き換えられます。そう

    out.close(); 
    

    が必要とされていないようで、

    String cardId = vars.get("cardId"); 
    String receiverid = vars.get("receiverid"); 
    String temp = data.toString() 
         .replaceAll("\\$\\{cardId\\}",cardId) 
         .replaceAll("\\$\\{receiverid\\}", receiverid); 
    
  2. そして私はoutの開口部または宣言が表示されない次のようにそれを修正してください。

そしてもう一つ:あなたは、このような要求を実行している1-2ユーザ1-2回、何の問題を持っていますが、あなたは負荷を作成する必要がある場合は、このコードが崩れる場合:100個の以上のスレッドを想像すべて同じ2MBのファイルを同時に何度も読み込もうとしており、それぞれのファイルをメモリに入れています(replaceAllの間に複数のコピーがある可能性があります)。 JMeterにはサーバーより多くの負荷がかかります。 2MBの静的データを格納するより良い方法がありますが、いくつかのvarsだけがrepalcedされます。しかし、これはこの質問の話題ではないので、詳細には触れません。

+0

ありがとうございます。私も 'put'を使用しましたが、値は反映されません。 –

関連する問題