天天看点

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