天天看點

loadrunner Lr_類函數之 lr_stop_transaction_instance()

lr_stop_transaction_instance()

終止由其句柄指定的事務執行個體的報告統計資訊。

double lr_stop_transaction_instance(long parent_handle);

參數說明:

parent_handle:唯一的事務句柄。

調用lr_stop_transaction_instance後,由“get”事務函數傳回的統計資訊隻反映直到調用的資料,直到調用lr_resume_transaction_instance。指定的事務執行個體必須已使用lr_start_transaction_instance打開。

但是,資料收集不會中斷。在調用lr_resume_transaction_instance之後,“get”函數自事務執行個體開始後傳回所有資料。此外,分析測試時的最終結果将反映總值,包括交易停止和恢複之間的期間。

如果未調用lr_resume_transaction_instance,則最終結果僅反映到調用lr_stop_transaction_instance之前的統計資訊。

parent_handle是從對建立執行個體的lr_start_transaction_instance的調用傳回的值。

lr_stop_transaction_instance和lr_resume_transaction_instance可用于有條件地收集有關開始或所有事務的資訊。

請注意,在調用lr_stop_transaction_instance時,您将無法區分疊代之間的分析,也可能無法區分疊代。

要更靈活地有條件地記錄事務時間,請參閱lr_start_sub_transaction,lr_set_transaction和lr_start_timer。

lr_stop_transaction_instance傳回執行個體的持續時間(以秒為機關)。

示例:lr_stop_transaction_instance和lr_resume_instance

以下示例顯示lr_stop_transaction_instance和lr_resume_transaction_instance的效果。

StopResumeInstance()

{

    long hdl;

    int i, baseIter = 100;

    char dude[200];

    double dur;

    hdl = lr_start_transaction_instance("Stop%Start", 0);

    for (i=0; i< (10 * baseIter); ++i)

            sprintf(dude,

                "Artificially add elapsed time = %d", i);

//Add 1/2 second waste time

lr_wasted_time(500);

lr_output_message("First time duration = %f, Waste = %f",

    lr_get_trans_instance_duration(hdl),

    lr_get_trans_instance_wasted_time(hdl));

// Stop the transaction

dur = lr_stop_transaction_instance(hdl);

lr_output_message("Duration from stop call = %f", dur);

//Add 1/2 second waste time

lr_wasted_time(500);

lr_output_message("Immediately after stop = %f, Waste = %f",

    lr_get_trans_instance_duration(hdl),

    lr_get_trans_instance_wasted_time(hdl));

// Ensure that some time passes

for (i=0; i< (10 * baseIter); ++i)

            sprintf(dude,

                "Artificially add elapsed time = %d", i);

lr_output_message("After stop and loop = %f, Waste = %f",

lr_get_trans_instance_duration(hdl),

    lr_get_trans_instance_wasted_time(hdl));

// Resume the transaction

lr_resume_transaction_instance(hdl);

lr_output_message("After resume time = %f, Waste = %f",

lr_get_trans_instance_duration(hdl),

    lr_get_trans_instance_wasted_time(hdl));

// Add time to duration

    for (i=0; i< (10 * baseIter); ++i)

            sprintf(dude,

                "Artificially add elapsed time = %d", i);

lr_output_message("After resume and loop = %f, Waste = %f",

lr_get_trans_instance_duration(hdl),

    lr_get_trans_instance_wasted_time(hdl));

// End transaction

lr_end_transaction_instance(hdl, LR_AUTO);

return 0;

}輸出:

第一持續時間= 0.609375,廢物= 0.500000

通知:事務停止%開始停止。

從停止呼叫的持續時間= 0.625000

停止後立即= 0.625000,廢物= 0.500000

停止和循環= 0.625000後,Waste = 0.500000

通知:事務停止%開始繼續。

在恢複時間= 1.265625之後,Waste = 1.000000

在恢複和循環= 1.875000之後,Waste = 1.000000

通知:事務停止%開始以通過狀态結束(持續時間:1.8750浪費時間:1.0000)。