Skip to content

Import JTL

This option allows you to upload results of a test that was run in a local JMeter into OctoPerf.

Upload JTL file

The first step is to upload your JTL file(s) through the upload wizard. Before you do that it is important to note that:

  • OctoPerf requires CSV formatted JTL files generated by JMeter,
  • The JTL must be zipped in a .zip archive. Several JTL can be put together in this archive, provided they contain metrics for the same test,
  • In order to get the most details, the JTL must contain the following columns: timeStamp, elapsed, label, URL, Latency, Connect, responseCode, allThreads, bytes, sentBytes

import-jtl

Info

If you import several JTL files, we will aggregate samplers that share the same name across all the JTL files. If you do not want that behavior, you can still use filters once the report is created to display values for each individual JTL file.

jtl-imported

The import process duration depends on your JTL file size. When successfully imported a message will be prompted in the notifications pane. You can now proceed to open your test report.


In case something goes wrong, the notification will tell you what, pay attention to the error message:

jtl-error

Warning

The maximum allowed file size is 200 Mb. If you have more than 200 Mb to process, consider installing your own On Premise OctoPerf server.

Limitations

The JTL file format has a number of limitations compared to when OctoPerf collects the metrics during a test.

This is because a JTL is only a list of results for each sampler that was executed, in the order they were executed:

jtl-sample

Missing data

Userload

To put it simply, we can only draw information when something happened. That means no data for the first and last datapoint of the test. Same issue, if no users are running for a while or large timeouts prevent any sampler from executing.

The consequences inside OctoPerf are:

  • Duration of the test that we compute is slightly wrong,
  • Userload curve is not correctly drawn, it's missing first and last point,
  • Drops in load and periods of time when timeouts occurred might not be visible since no samplers were executed during that time.

The red curve below represents the same test executed in OctoPerf (in blue) but imported through the JTL afterwards. While the differences are minor, they remain noticeable:

jtl-vs-octoperf

HTTP requests details

JTL also lacks information like HTTP method (GET/POST, etc..) and response content type:

  • We cannot display method on the various requests, instead we use the same icon for all,
  • We cannot graph statistics per content type like throughput or response codes/errors.

This is also the reason why no request/response information is available for display within the error table:

jtl-error-table

Virtual user tree

The JTL only contains a list of datapoints for the various samplers that were executed. As a consequence, it is not possible to extract the exact virtual user tree like we do in OctoPerf reports.

We try to reproduce the tree and create a structure as best as we can but this process is far from perfect. Multiple samplers with the same name will be aggregated in the tree.

If we consider a JTL coming from a JMeter thread group looking like this:

container1 : 
  - action1
  - action2
container2 : 
  - action1
  - action3

In the OctoPerf tree report item you will see this:

container1 : 
  - action1
  - action2
container2 :
  - action3

Also, sub results will not always be correctly linked as resources, here REPTILES is in the right container but BIRDS isn't:

jtl-tree