2012-03-03 28 views
1

我的Load Runner測試項目打算初始化500個虛擬用戶,然後運行50個虛擬用戶。所以我在下面的「Action」函數中編寫腳本讓450個虛擬用戶跳轉到「vuser_end」。Load Runner:如何從「Action」跳轉到「vuser_end」

int userID; 
lr_whoami(&userID,NULL,NULL); 
if(userID<451) 
{ 
    lr_exit(LR_EXIT_VUSER, LR_PASS); 
    return; 
} 

但「lr_exit」功能設置的虛擬用戶的「通」的狀態,絕不會執行「vuser_end」。

什麼函數可以讓虛擬用戶停止運行並在運行結束後跳轉到「vuser_end」?

謝謝你提前幫忙。

回答

1

返回0; \一般重複 返回1; \忽略迭代間隔並立即迭代 返回-1; \不作進一步的迭代

它真的聽起來像是你在結構上需要一個不同類型的用戶的第二個條件。考慮第二種用戶類型,它只是在動作中有以下幾種:

Action() 
{ 
int rampup, \\in seconds 
    idletime; \\in seconds 

sleep(rampup *1000); 
sleep(idletime *1000); 

return 0; 
} 

爲單次迭代安排此操作,然後讓用戶在此時放入自然vuser_end。

+0

我試過睡在剛纔的「行動」中,但是睡眠時間裏包含的回覆時間。所以「睡眠」會導致測試結果達不到性能指標。 – 2012-03-05 02:31:00

+1

鑑於您的後續評論,我可以添加以下內容。 (1)睡眠是爲了讓用戶持續一次init的迭代,保持一段時間,然後緩慢下降。(2)如果你正在接收一個時間度量,那只是因爲你爲動作調整了自動事務。 (3)如果你想讓它保持你的整個測試,然後刪除rampup變量,將你的迭代時間減少到零,並簡單地安排一個組與這些用戶先增加,運行在測試期間,然後減速在第一組(實際工人)完成之後。 – 2012-03-05 13:29:21

+0

@SharpKid,@JamesPulley,解決這個問題不能簡單地通過在調用lr_exit(LR_EXIT_VUSER,LR_PASS)之前添加'vuser_end()'這一行來解決。 – Pacerier 2015-05-18 07:28:57

0

看起來像你想lr_abort,這是直接從文檔:

的lr_abort功能中止腳本的執行。它停止執行theActions部分,執行vuser_end部分並結束執行。由於特定的錯誤條件,您需要手動中止運行時,此功能非常有用。當使用此功能結束運行時,狀態爲「已停止」。

+0

我剛纔在「Action」中嘗試過「lr_abort」,但是虛擬用戶立即停止。我想讓虛擬用戶在所有虛擬用戶用完之後停止,就像正常場景的時間表一樣。 – 2012-03-05 02:48:56

0

創建一個應該在所有其他用戶運行後應該運行的腳本依賴於它們的腳本。