Share this page

# Example: Transaction Duration, set_transaction, and waste time

The follow example shows the capture of transaction duration times based on whether a condition is fulfilled. The start_transaction call creates transaction "Flight". At the point in the transaction where data will be important regardless of the condition, the time is captured with get_transaction_duration. 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 get_transaction_duration retrieves the total duration. Because the time spent check on the server if the submit succeeded is not part of the business process, that time is subtracted from the total duration, and set_transaction uses that value to create transaction "SuccessfulFlight". Note that this is the functional equivalent in Visual Basic of the waste time functionality in the C language scripts.

If YourAPICall determines that the server-side action failed, then the value capture with the first call to get_transaction_duration is used by lr.set_transaction 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, including the time spent on YourAPICall. Transaction "SuccessfulFlight" records the total end to end times of transactions where the server-side action succeeded, excluding the time spent on YourAPICall. Transaction "FailedFlight" records the time it takes to get the itinerary when then later submit fails.

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
    Dim waste_time as Single
    Dim start_check as Single

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

    ' The time spent checking the success of the server-side
    ' action with YourAPICall is not part of the business
    ' process being tested. Capture the start of the check
    ' so that the time can be deducted later.

    start_check = Timer

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

    rc = YourApiCall (s_code, "EdmundBertam")
    lr.message "After call to YourAPICall, rc = " + Cstr(rc)

    ' Capture the total time spent on the call to YourApiCall

    waste_time = Timer - start_check
    lr.message "Waste time = " + cStr(waste_time)

    ' If your API confirms success:

    If rc = lr.PASS Then
        ' Get the transaction time
        total_trans_time = lr.get_transaction_duration ("Flight")

        ' Deduct the time spent on the call to YourApiCall
        total_trans_time = total_trans_time - waste_time

        ' 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 SuccessfulFlight time = " _
            + Cstr(total_trans_time)

    Else
    ' If your API shows that the process failed:
        ' Use only the time from the start_transaction to the
        ' first call to lr.get_transaction_duration ("Flight")
        ' that captured the itinerary section of the business process.

        ' Create a transaction for the failed business process.
        lr.set_transaction "FailedFlight", trans_time, lr.PASS
        lr.Message "API Call failed: Record duration only up itinerary"
        lr.Message "API Call failed: Record duration only up itinerary. FailedFlight time = " _
            + Cstr(trans_time)
    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
    web_submit_form("default.aspx") was successful, 11610 body bytes, 259 header bytes
    web_submit_form("default.aspx_2") was successful, 11610 body bytes, 259 header bytes
    web_submit_form("default.aspx_3") was successful, 11610 body bytes, 259 header bytes
    After call to YourAPICall, rc = 0
    Waste time = 2.031875
    Notify: Transaction SuccessfulFlight set.
    API Call succeeded: Record complete duration SuccessfulFlight time = 3.8044273129425
    Notify: Transaction Flight ended with Pass status (Duration: 7.6009 Think Time: 5.0072).
    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
    web_submit_form("default.aspx") was successful, 11610 body bytes, 259 header bytes
    web_submit_form("default.aspx_2") was successful, 11610 body bytes, 259 header bytes
    web_submit_form("default.aspx_3") was successful, 11610 body bytes, 259 header bytes
    After call to YourAPICall, rc = 1
    Waste time = 2.001469
    Notify: Transaction FailedFlight set.
    API Call failed: Record duration only up itinerary. FailedFlight time = 0.130188
    Notify: Transaction Flight ended with Pass status (Duration: 7.3806 Think Time: 5.0072).
    Ending action Action.
    Ending iteration 2.

## 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: