3

memcached telnet インターフェイス コマンド、具体的には flush_all を実行するために、beanshell で jmeter サンプラーを作成しようとしています。テストが立て続けに失敗する原因となるため、各テストの後にキャッシュをクリアするためにこれが必要です。

次のコードがあります。

import org.apache.commons.net.telnet.TelnetClient;

TelnetClient telnet = new TelnetClient();
telnet.connect( "memcachedServer.dev", 11211 );

//InputStream in = telnet.getInputStream(); 
PrintStream out = new PrintStream( telnet.getOutputStream() );

out.println("flush_all\r");
out.println("quit\r");

telnet.disconnect();

問題なく実行されているようですが、キャッシュはクリアされていません。「\r」の有無にかかわらずコードを試しましたが、どちらの方法も機能しません。

誰が何が悪いのか知っていますか?

ありがとう、エイドリアン

4

2 に答える 2

1

TCP Samplerを使用しない理由はありますか?

  1. テスト計画に TCP サンプラーを追加します (キャッシュをフラッシュする必要がある場合)。
  2. ホストとポートの構成
  3. 次の行を「送信するテキスト」領域に入力します。

    flush_all${CR}${LF}
    quit${CR}${LF}
    
  4. TCP Sampler の子としてBeanshell PreProcessorを追加します。
  5. 次のコードをプリプロセッサの「スクリプト」領域に挿入します。

    vars.put("LF",URLDecoder.decode("%0D", "ASCII"));
    vars.put("CR",URLDecoder.decode("%0A", "ASCII")); 
    

JMeter TCP サンプラーを使用して制御文字を送信する方法を参照してください。詳細については、ガイドをご覧ください。

于 2016-02-13T10:45:52.143 に答える
0

端末のスクリプト作成/エミュレートには問題が生じる可能性があります。コードが実行され、コマンド「flush_all」が出力されますが、enter/newline コマンドが処理されていないようです。

あなたのために働くかもしれない2つのオプションがあります

これは、telnet 経由でキャリッジ リターンを送信する方法に関する記事です。

telnet 経由でキャリッジ リターンを送信するには?

または、追加のライブラリに組み込まれていると思われる SSH jmeter プラグインで運が良いかもしれませんが、そうでない場合はリンクを送ります。これにより、ログインして、指定されたディレクトリでコマンドを実行できます。シンプルできれいです

于 2016-02-10T20:55:07.000 に答える