2015-04-15 27 views
0

所以,我的問題在我的JMeter設置看看: Jmeter setup的JMeter如果控制器在HTTP請求

讓我解釋發生了什麼,然後轉移到我的問題。

說明 在服務器上,我有一個番石榴高速緩存(超時時間爲5秒)和一個DB連接到它。請求A將數據(從csv文件讀取)發送到服務器並將其放入緩存中。它會返回與該數據相對應的唯一ID。請求B發送從高速緩存逐出的項目,並保存到DB一個秒請求(與該唯一ID)。第三個請求C再次使用該唯一標識從DB讀取並處理數據。

現在,要在線程組之間共享該唯一ID(以及其他一些URL參數),我將它們放入Jmeter的隊列中(使用jp @ gc - 線程間通信預處理器和後處理器)。所有的作品都應該像Jmeter和Server一樣。

問題 結束這項設置,我需要補充一點......對於每一個請求,只有10%(隨機)的唯一的ID需要被放入隊列A.並再次爲每個請求只有10 B%(隨機)的那些唯一的ID需要被放入隊列B. 我該怎麼辦,如果的JMeter不允許如果控制器被投入作爲HTTP請求的一部分,最後一部分?

回答

0

你嘗試使用線程間通信PostProcessor中的HTTP請求之外 - 對instanse,裏面的「簡單的控制器」這是擺http請求後?在這種情況下,你可以使用任何邏輯控制器(如,吞吐量等)

+0

我做到了,是的,但隨後的後處理器不能把唯一的ID到隊列中,因而無法在其他線程組。 – user3354890

1

如果有人有興趣的答案。我發現,要做到這一點的最簡單的方法是創建一個隨機變量(在可變rnd)和一個後處理器的BeanShell,兩個下Http請求A. BeanShell的代碼是:

import kg.apc.jmeter.modifiers.FifoMap; 

if (vars.get("rnd").equals("1")) { 
    FifoMap.getInstance().put("QUEUE_A", "${uniqueId"); 
} 

對於請求B,模請求A.的過程完美地工作。