2017-04-18 26 views
0

我必須實現一個場景,如果它失敗並根據響應我正在寫一些信息,我必須在最多5次調用相同的請求文件中的東西。 當我從cookie中找不到一個字符串時,會發生失敗,並將其作爲常規exp捕獲。Jmeter:如果在響應中找不到特定的字符串,請重新調用HTTP採樣器請求Cookie

要解決這個問題,我已經添加while循環與計數器,但腳本工作,直到50000迭代,然後給出內存不足的錯誤。 如果我不把while循環重新調用5次相同的請求,那麼相同的腳本可以在沒有任何問題的情況下爲同一個JVM運行100萬次。

看起來像Jmeter中的控制器不知何故消耗更多的內存和內存不足。

是否有任何選項通過Beanshell Post Processor調用相同的HTTP請求?

回答

0
  1. 使用While ControllerCounter相結合的辦法:

    • 雖然控制器:條件${__javaScript(${counter} < 5 && "${foo}" != "bar",)}
      • 計數器:啓動1,增量1,參考名稱counter
      • 你的採樣

    假設上述設置Your Sampler將被執行或者5倍,或當不${foo}變量值等於bar,不管來自第直到。有關全面的解釋和更多示例,請參見Using the While Controller in JMeter

  2. 如果你還在尋找你可以使用類似BeanShell的方式:

    if (!prev.getResponseDataAsString().contains("foo")) { 
        ctx.getCurrentSampler().sample(null); 
    } 
    

    上面的代碼被放入Beanshell PostProcessor將執行父採樣一次,如果有也不會在響應foo子,但是這樣你將無法在偵聽器中看到執行結果,並且它不會被存儲到.jtl文件中,基本上只有一個執行。

+0

感謝您的快速回答。事實上,我已經添加了第一個解決方案,並從csv文件讀取50000條記錄後,內存不足。如果我不把這個條件的while循環,它從csv讀取所有100萬條記錄,並完成交易沒有任何錯誤,但在這種情況下,我不會在失敗的情況下重試5次。所以我想檢查任何替代解決方案來做同樣沒有While循環。 –

+0

我對方法2有疑問,如果我在beashell postProcessor中添加它,它是否會捕獲正則表達式,並且它會再次發送到失敗的取樣器的後處理器?有沒有辦法在這裏放置一個邏輯計數器? –

相關問題