Share this page

# Example: lr.stop_transaction and lr.resume_transaction

The follow example shows the capture of transaction duration times based on whether a condition is fulfilled. At the point in the transaction where data will be important regardless of the condition, stop_transaction is called to freeze reporting. After the ticket and purchase information is submitted, YourAPICall checks whether the submit succeeded. (In this example, YourAPICall simply passes the first iteration and fails the second.)

If YourAPICall determines that the submit successfully caused the server-side action to take place, then resume_transaction is called to unfreeze reporting. All subsequent calls to transaction data retrieval functions return all the data from the transaction start until the get* call. get_transaction_duration retrieves the total duration, then set_transaction uses that value to create transaction "SuccessfulFlight".

If YourAPICall determines that the server-side action failed, then resume_transaction is not called. Subsequent calls to transaction data retrieval functions return only the data from the transaction start until the stop_transaction call. get_transaction_duration retrieves that duration, and lr.set_transaction uses the value to create transaction "FailedFlight".

As a result of this action, analysis data is produced for three transitions.

Transaction "Flight" records an overview of transaction durations for both successful and unsuccessful submit, excluding time spent on unsuccessful submit operations. Transaction "SuccessfulFlight" records the total end to end times of transactions where the server-side action succeeded. Transaction "FailedFlight" records the time it takes to get the itinerary when then later submit fails.

Note: This technique is only effective if the section to be excluded is at the end of the transaction. For a more flexible approach, see Example: Transaction Duration, set_transaction, and waste time.

Below the sample action is the log and the analysis data.

    Public Function Action() As Long

    Dim trans_time As Double
    Dim total_trans_time as Double
    Dim rc As Integer
    Dim vData As Variant
    Dim vOptions As Variant
    Dim s_code as Integer

    lr.start_transaction "Flight"

    vOptions = "Resource=0, " _
        & "RecContentType=text/html, " _
        & "Referer=, " _
        & "Snapshot=t1.inf, " _
        & "Mode=HTML, " _
        & "LAST"

    web.URL "flightnet", _
        "URL=http://lazarus/flightnet/" , _
        vOptions

    vData = "Name=grpType, Value=radRoundtrip, ENDITEM, " _
        & "Name=lstDepartingCity, Value=Los Angeles, ENDITEM, " _
        & "Name=lstDestinationCity, Value=San Francisco, ENDITEM, " _
        & "Name=txtDepartureDate, Value=1/12/2004, ENDITEM, " _
        & "Name=txtReturnDate, Value=1/14/2004, ENDITEM, " _
        & "Name=txtQuantity, Value=1, ENDITEM, " _
        & "Name=radClass, Value=1, ENDITEM, " _
        & "Name=radSeat, Value=1, ENDITEM, " _
        & "Name=btnAvailableFlights, Value=Next >, ENDITEM, " _
        & "LAST "

    web.submit_form "default.aspx" , _
        "Snapshot=t2.inf" , _
        vData

    ' Get transaction time in seconds
    ' for the first part of the transaction: itinerary

    trans_time = lr.get_transaction_duration ("Flight")

    ' Freeze reporting of the transaction duration

    lr.stop_transaction "Flight"
    lr.think_time 3

    ' Start the second part of the transaction:
    ' Choosing a flight and buying a ticket

    vData = "Name=lstAvailableFlights, Value=AA6291 Depart 8:10AM, Arrive 11:30AM, $179.47, ENDITEM, " _
        & "Name=btnCustomerInfo, Value=Next >, ENDITEM, " _
        & "LAST "

    web.submit_form "default.aspx_2", _
        "Snapshot=t3.inf", _
        vData

    vData = "Name=txtCustomerName, Value=Edmund Bertram, ENDITEM, " _
        & "Name=txtAddress, Value=Mansfield Park,\r\n" _
        & "England, ENDITEM, " _
        & "Name=txtPhoneNumber, Value=None, ENDITEM, " _
        & "Name=lstCreditCard, Value=Discover, ENDITEM, " _
        & "Name=txtCardNumber, Value=123456789, ENDITEM, " _
        & "Name=txtExpirationDate, Value=1/1/181, ENDITEM, " _
        & "Name=btnOrderConfirmation, Value=Finish, ENDITEM, " _
        & "LAST"

    web.submit_form "default.aspx_3" , _
        "Snapshot=t4.inf" , _
        vData

    ' Call the API of your application to see whether the purchase is registered.

    rc = YourApiCall (s_code, "EdmundBertam")

    ' If your API confirms success:

    If rc = lr.PASS Then

        ' Use all of the transaction duration for the overall transaction.

        lr.resume_transaction "Flight"

        ' Get the transaction time

        total_trans_time = lr.get_transaction_duration ("Flight")

        ' Create a transaction for the successful business process

        lr.set_transaction "SuccessfulFlight", total_trans_time, lr.PASS
        lr.Message "API Call succeeded: Record complete duration"
    Else

    ' If your API shows that the process failed:
        'By not calling lr.resume_transaction, all time since the stop_transaction
        ' is ignored. The get_transaction call returns only the
        ' time from the start_transaction to the stop_transaction

    	total_trans_time = lr.get_transaction_duration ("Flight")

        ' Create a transaction for the failed business process.

        lr.set_transaction "FailedFlight", total_trans_time, lr.PASS
        lr.Message "API Call failed: Record duration only up to logon and itinerary"
    End If

    lr.end_transaction "Flight", lr.AUTO
    lr.Message "Duration of logon and itinerary = " + CStr(trans_time)
    lr.message "Return Code is " + lr.eval_string ("<ReturnCode>")
    Action = lr.PASS
    End Function

    Example:  Output:
    Starting iteration 1.
    Starting action Action.
    Notify: Transaction Flight started.
    web_url("flightnet") was successful, 30710 body bytes, 1982 header bytes     [MsgId: MMSG-26386]
    web_submit_form("default.aspx") was successful, 11610 body bytes, 259 header bytes     [MsgId: MMSG-26386]
    Notify: Transaction Flight stopped.
    web_submit_form("default.aspx_2") was successful, 11610 body bytes, 259 header bytes     [MsgId: MMSG-26386]
    web_submit_form("default.aspx_3") was successful, 11610 body bytes, 259 header bytes     [MsgId: MMSG-26386]
    After call to YourAPICall, rc = 0
    Notify: Transaction Flight resumed.
    Notify: Transaction SuccessfulFlight set.
    API Call succeeded: Record complete duration
    Notify: Transaction Flight ended with Pass status (Duration: 3.3448 Think Time: 3.0043).
    Duration of logon and itinerary = 0.170246
    Return Code is PASS
    Ending action Action.
    Ending iteration 1.
    Starting iteration 2.
    Starting action Action.
    Notify: Transaction Flight started.
    web_url("flightnet") was successful, 30710 body bytes, 1982 header bytes     [MsgId: MMSG-26386]
    web_submit_form("default.aspx") was successful, 11610 body bytes, 259 header bytes     [MsgId: MMSG-26386]
    Notify: Transaction Flight stopped.
    web_submit_form("default.aspx_2") was successful, 11610 body bytes, 259 header bytes     [MsgId: MMSG-26386]
    web_submit_form("default.aspx_3") was successful, 11610 body bytes, 259 header bytes     [MsgId: MMSG-26386]
    After call to YourAPICall, rc = 1
    Notify: Transaction FailedFlight set.
    API Call failed: Record duration only up to logon and itinerary
    Notify: Transaction Flight ended with Pass status (Duration: 0.1402).
    Duration of logon and itinerary = 0.130187
    Return Code is FAIL
    Ending action Action.
    Ending iteration 2.
    Ending Vuser...

## Analysis

Analysis of four iterations of the script. For two, YourAPICall indicates success, and for two, failure.

Tips to improve your search results... VuGen Function Reference Version 25.1-25.3 Function Reference 25.1-25.3 All View Local Help Center View Online Help Center Version: