Legacy Documentation

This is the old XLT documentation which is here for reference purposes only. You can find the latest version at xltdoc.xceptance.com.

XLT 5.4.1

Documentation reworked extensively

The XLT documentation has been reworked extensively and is now hosted at https://xltdoc.xceptance.com/. Please have a look and let us know what you think about it! You can also actively participate in improving the XLT documentation by providing pull requests, suggesting topics, and raising issues. The related Git repository can be found on GitHub.

XLT still ships with the old documentation for a while, as a reference manual especially for those of you who still use XML script test cases for test automation. But note that we will remove the old docs altogether with the next major release.

Test Framework

Warnings when cloning a page after an action has finished

After an HtmlPageAction has finished, XLT snapshots the current HTML page and stores the clone away to be presented later on in the result browser. During that process, XLT could print warnings similar to the following to the console:


Failed to set attribute <xlink:href> to value </some/path/to/icon.svg#icon-search>

Happened for pages using <svg> elements, but other elements could have been affected as well. This issue is fixed now.

XLT 5.4.0

Load Testing

Progress indication when generating reports

The report generation hasn’t indicated the progress in detail which made it hard to judge the remaining runtime. This release adds simple progress bars which will indicate a progress as well as an estimated remaining runtime. Big thanks to the ProgressBar project!

Timer files stored in compressed form

XLT has been keeping all data in clear text files for easy post processing and open data handling. However, the timers.csv files occupy a large share of the required space on disk after a test run. While the download already runs compressed, the final on-disk storage was plain. This release changes this behavior and stores the timers.csv in a compressed GZIP format by default. The report generator learned to deal with compressed as well as uncompressed formats automatically.

For example, a result set with previously 9.5 GB of storage space now only requires 1.1 GB. As an additional advantage, report generation might run faster on systems with slower disks such as regular cloud machines. Furthermore, the download of results from the agents will also run faster due to less write operations.

If you find it necessary to revert to the old behavior of plain uncompressed storage, you can set the property com.xceptance.xlt.mastercontroller.compressedTimerFiles in file mastercontroller.properties to false.

Illegal access warning in ec2_admin

The ec2_admin raised an illegal reflective access warning when it’s reporting problems such as trying to delete something that does not exist:


Terminating the selected instances in region 'eu-central-1' ... WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.amazonaws.util.XpathUtils (file:/home/anyone/projects/loadtest/xlt-5.3.0/lib/aws-java-sdk-core-1.11.762.jar) to method com.sun.org.apache.xpath.internal.XPathContext.getDTMManager()
WARNING: Please consider reporting this to the maintainers of com.amazonaws.util.XpathUtils
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Failed: No instances specified (Service: AmazonEC2; Status Code: 400; Error Code: InvalidParameterCombination; Request ID: 23234-3bd3-4157-b365-4bf7b4432221ec7)

While we cannot fix the illegal access (it is made in a foreign library), we can at least suppress these warnings by passing the appropriate command line options to java in ec2_admin.sh.

Test Framework

Socket instrumentation won’t work with Java 16

When running a test scenario with Java 16, the socket instrumentation code to gather network timing data (connect time, time to first bytes, etc.) could not be installed and the test scenario failed with this error message:


java.lang.NoClassDefFoundError: Could not initialize class com.xceptance.xlt.engine.socket.InstrumentedSocketImpl

This issue is fixed now.