2013-05-16 48 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,它可以讓你有機會調試腳本。