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_instancelr_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);

/* Do part of business process. Represented

here by loop to ensure that some

time passes. */

    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);

/* Output the duration to this point (0.343750 seconds)

with transaction active. */

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);

/* Output the duration to this point (0.359375 seconds)

with transaction stopped. */

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);

 

/* Output the duration to this point (0.359375 seconds)

with transaction still stopped but

more time passed. Note that time is the same.

The time spent in the loop while the transaction

was stopped is not reported. */

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);

/* Note that with the transaction resumed,

all the time passed since the start is

reported (0.781250 seconds), including the time spent

in the loop while the transaction was stopped. */

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);

/* Total time reported (1.140625 seconds) */

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)。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章