Skip to main content

Viewing VU Event Logs

The Eggplant Performance Test Controller VU event log contains information about the progress of each virtual user (VU). Every VU has its own event log, which you can view in real-time (unless event logging is disabled in Eggplant Performance Studio). Most Virtual User API methods output some information to this log, and you can write to it directly from within a script using the writeMessage() method.

Reading the Log

You open a VU event log in Test Controller's main window just like you would any table or chart. To open the event log viewer for a specific VU, navigate to the VU in the Current test runs section of the left sidebar, then double-click the VU (or right-click the VU and select Open).

The virtual user event log viewer in Eggplant Performance Test Controller

Following is an explanation of how to read logs in the event log viewer, by column:

  • Time: The elapsed time since the test run started. Every entry written to the event log is labeled with a timestamp that specifies when the engine encountered the event, so you can tell how far into the test run the event occurred. This is written to the nearest millisecond in the format HH:MM:SS:MSS.
  • Type: Events are grouped according to their log type. Following is a list of common groups. See Common Groups and Events below for more information about each of them.
    • Test initialization & progression
    • Transactions
    • Timings
    • VU status & information
    • Check / progress point
  • ID: Information specific to the event type.
  • Info: Detailed information about the event.
  • Thread ID: Indicates whether events were written by the main script or a background script.

Log Filtering Options

The event log viewer lets you filter the information you see in the log. Click the Filter button to see several filter options for you to choose from:

  • Default - shows the most common log entries
  • All - shows all entries in the log
  • Custom - individually select or deselect the entry types to show in the log:
    • Transactions
    • Timings
    • Requests
    • Errors
    • Warnings
    • Messages
    • Metrics
    • Progress Points

VU event log viewer filter options in Eggplant Performance Test Controller

Common Log Groups and Events

Following is a list of common log type groups and their events.

note

References to API methods vary depending on the script language used; use the tabs below to toggle between them.

Test initialization and progression

TypeDescriptionIDInfo
StartThe time of test run initialization. This event is written in all logs. A VU will be in a Pending state until the Start activity event. The Pending state between Start and Start activity is usually because of VU "ramp up" or group start delay.EmptyEmpty
Start activityWhen the VU progresses from a Pending to a Running state and begins script code execution.EmptyEmpty
Current scriptThe start of script execution - usually several scripts are executed within a workflow. If the VU is in the iterated section of a workflow, the Info column contains the iteration number (starting at zero).Script nameIteration number, or empty
End ActivityWhen the VU progresses from a Running to a Completed state.EmptyEmpty
EndTest run completion. If the VU is in the In Error state, the ID column will contain Fail. This can be caused by unhandled errors in the script, maximum failed iterations exceeded, or by passing false to exitVU().Pass or FailCompleted, Error, or a string passed to exitVU()
note

The exitVU() method can be useful to make a Virtual User finish early. By default it writes Pass and Completed to the log, but you can pass parameters to cause the VU to write Fail and be in the In Error state, and/or to write your own message in the Info column.

Transactions

All the Virtual User methods dealing with transactions take a transaction identifier (id) as a parameter - this appears in the ID column of the VU event log. The id passed to the startTransaction() method must match the id passed to any subsequent methods which affect that transaction, e.g. suspendTransaction() or endTransaction().

info

The transaction identifier is also commonly referred to as the transaction name.

Some methods may also take a tag parameter - this appears in the Info column of the VU event log and doesn't have to match.

TypeDescriptionIDInfo
Start transactionWritten when startTransaction() is called in the VU script.Transaction identifierTag (optional)
Suspend transactionsuspendTransaction() can be used to exclude lengthy processing operations from being recorded in transaction timings.Transaction identifierEmpty
Resume transactionresumeTransaction() restarts timing after it has been suspended.Transaction identifierEmpty
End transactionThe transaction end time is written when endTransaction() is called in the VU script. The difference between the times (minus any suspended time) is calculated as the transaction response time, or duration.Transaction identifierTag (optional)
Fail transactionUsed to exclude a transaction from analysis or increase the failed transaction count for a VU group. This happens when calling failTransaction() or by setting the bool pass parameter of endTransaction() to false. This is particularly useful when there is a necessity to work with nested/overlapping transactions for applications that use asynchronous messaging.Transaction identifierTag (optional)

Timings

All the Virtual User methods dealing with timings take a timing identifier_ (id) as a parameter - this appears in the ID column of the VU event log. The id passed to the startTiming() method must match the id passed to any subsequent methods which affect that timing, e.g. endTiming().

info

The timing identifier is also commonly referred to as the timing name.

TypeDescriptionIDInfo
Start timingWritten when startTiming() is called in the VU script. Some VU types write additional timings, most notably the Web VU types which may write timings for each HTTP request.Timing identifierEmpty
End timingThe timing end time is written when endTiming() is called in the VU script. The difference between the times is calculated as the timing duration.Timing identifierEmpty
Fail timingUsed to exclude a timing from analysis. This happens when calling failTiming() in the VU script.Timing identifierEmpty

VU status and information

TypeDescriptionIDInfo
ErrorLogged in the following circumstances:
  • Calling error() in the VU script
  • Unhandled exceptions within VU script code
  • Using the error action type ACT_ERROR in the various verification methods of WebBrowserUserScript
EmptyError message
WarningLogged in the following circumstances:
  • Calling warn() in the VU script
  • 404 Not Found status codes received by Web VUs
  • Using the warning action type ACT_WARNING in the various verification methods of WebBrowserUserScript
EmptyWarning message
MessageLogged by calling writeMessage() in the VU script. Various other information messages from Test Controller and the injector/engine may appear in the VU event log.EmptyInfo message

Progress points

In Test Controller and Analyzer it is possible to see the number of progress points passed/failed per VU, per VU group and for the test as a whole. The Virtual Users table in Test Controller also shows, for each Virtual User, the most recent progress point whether passed or failed.

TypeDescriptionIDInfo
PassWritten when setProgressPoint() is called with the pass parameter set to trueProgress point nameinfo parameter to setProgressPoint(), or empty
FailWritten when setProgressPoint() is called with the pass parameter set to falseProgress point nameinfo parameter to setProgressPoint(), or empty