jMeter挂起扫描仪读取

时间:2013-05-16 18:33:19

标签: java memcached jmeter

我正在尝试使用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()

线。它会永远挂起,直到我杀死这个过程。我也尝试使用org.apache.commons.io.IOUtils中的实用程序,如toString(输入流)方法,我得到了完全相同的行为。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

为什么将此代码放在后处理器而不是采样器中?

这看起来很奇怪。

您也可以尝试使用JSR223 + Groovy,它可以让您有机会调试脚本。