我有一個執行緒組,它同時運行多個執行緒。每個執行緒使用來自 csv 檔案的 ID 發出請求。因此,隨著時間的推移,執行緒組中的不同執行緒最終可能會使用相同的 ID 發出請求。我想將回傳的 cookie 用于請求中的特定 ID,即使它是由不同的執行緒創建的。
目前我有一個正則運算式提取器提取 cookie 值,它根據其 ID 創建一個變數,例如,ID 為 56789,cookie 為 1234,變數將為 56789_1234。
然后我使用 ${__V(${id}_g1)}拉取與另一個請求的特定 ID 相關聯的 cookie。
(本質上創建了一堆變數,前綴為 ID 和最后回傳的 cookie 值,然后每個后續請求都可以使用 ID 為其請求拉出正確的 cookie)
然后像這樣創建cookie:
import org.apache.jmeter.protocol.http.control.CookieManager;
import org.apache.jmeter.protocol.http.control.Cookie;
CookieManager manager = sampler.getCookieManager();
Cookie AWSALB = new Cookie("AWSALB","${cookieVal}","domain","path",false,Long.MAX_VALUE);
manager.add(AWSALB);
(我使用 jp@gc - Set Variables Action 將 ${__V(${id}_g1)} 分配給 'cookieVal')
但是,我仍然無法共享在所有執行緒之間創建的變數范圍。
我試過屬性,但我相信它只適用于執行緒組之間,并且如果這些組連續運行。
我希望組內的所有執行緒都能夠讀取其他執行緒提取的所有變數。
uj5u.com熱心網友回復:
- 您可以將每個執行緒(虛擬用戶)“粘貼”到其自己的 ID(或來自 CSV 的一組 ID),即為每個用戶使用單獨的檔案和__CSVRead()函式或單個檔案和__groovy()函式來讀取值
- 如果您仍然想繼續使用您的方法,請查看提供FIFO佇列的執行緒間通信插件
- 另一種方法是使用JMeter 屬性,如果 ID=cookie_value 的名稱-值對的形式,如果 ID 沒有 cookie 值 - 將值寫入屬性,如果有 - 從屬性讀取值而不是請求新的曲奇餅
uj5u.com熱心網友回復:
盡管嘗試了屬性,但我似乎并沒有讓它發揮作用。即使創建了屬性(如除錯后處理器中所標識的),由于某種原因,我仍然無法在執行緒之間訪問它們。
但是,我通過在請求前后使用 Beanshell Samplers 解決了這個問題,將單個 cookie 值寫出到每個 ID 的單個 txt 檔案中,txt 檔案名作為 ID。每次任何執行緒使用此 ID 發出請求時,它都會更新相應 txt 檔案中的值,然后在每次請求之前,讀取該 ID 的特定 txt 檔案以檢索最后回傳的 cookie。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/361157.html
上一篇:如何使用多執行緒使我的代碼不在Python中按順序運行
下一篇:決議子行程的輸出
