1

jMeter を使用して memcached インストールをテストしようとしています (他の機能テストに jMeter を使用しているため、memcached に使用するのが最良の選択肢のようです)。TelnetClient ( org.apache.commons.net.telnet.TelnetClient) を使用して memcached に接続し、get コマンドを実行しています。

get somekey

接続できますが、応答を読み取ろうとすると、jMeter がハングアップし、再起動する必要があります。これが私のコードです(memcached_serverは私のサーバーのIPです):

try 
{
   TelnetClient telnet = new TelnetClient();
   telnet.connect("memcached_server", 11211);

   PrintWriter pw = new PrintWriter(new OutputStreamWriter(telnet.getOutputStream()), true);
   String command = "get 2f605845757870234d94ae14ca83c660";
   pw.println("get 2f605845757870234d94ae14ca83c660");

   BufferedReader br = new BufferedReader(new InputStreamReader(telnet.getInputStream()));

    Scanner scan = new Scanner(br);

    System.out.println("Hello stackoverflow!!!!");      
if(scan.hasNext())
    System.out.println("It does have a next: " + scan.toString());
else
    System.out.println("It does NOT have a next");

    String output = "";         
while (scan.hasNext()) {
    String line = scan.nextLine();
        output += line;
        if (line.matches("^END.*$")) 
       break;

    }
    System.out.println("Output: " + output);
telnet.disconnect();

} 
catch(Exception e)
{
   e.printStackTrace();
}

このコードは Eclipse で実行でき、問題なく動作します。jMeter では、BeanShell PostProcessor を使用しています (この memcached テストの前にいくつかのテストが実行されます)。実行するたびに、プログラムが

scan.hasNext()

ライン。プロセスを強制終了するまで、永遠にハングします。toString(input stream) メソッドのような org.apache.commons.io.IOUtils のユーティリティも使用してみましたが、まったく同じ動作が得られます。

何か案は?

4

1 に答える 1

0

このコードを Sampler ではなく Post Processor に入れるのはなぜですか?

これは奇妙に思えます。

また、スクリプトをデバッグする機会を与えることができる JSR223 +Groovy を使用することもできます。

于 2013-05-16T19:48:36.557 に答える