2013-05-16 111 views
1

我想用jMeter测试我的memcached安装(我们使用jMeter进行其他功能测试,因此将它用于memcached看起来是最好的选择)。我现在用的是TelnetClient(org.apache.commons.net.telnet.TelnetClient)连接到Memcached和火get命令:jMeter挂在扫描仪上读取

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的后处理(这memcached的测试之前运行一些测试),我每次运行它时,该程序被卡在

scan.hasNext() 

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

任何想法?

+0

它可能是扫描重新获取的输入。 –

+0

奇怪的是,它在Eclipse上工作得很好,这只是jMeter中的一个问题 –

+0

关于这方面的任何消息? –

回答

0

为什么你把这段代码放在后置处理器中而不是放在采样器中?

这似乎很奇怪。

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