Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions config/testreport/js/xlt.js
Original file line number Diff line number Diff line change
Expand Up @@ -591,6 +591,7 @@
var dataMinimum = [];
var dataMaximum = [];
var dataMaxMinDiff = [];
var dataCountPerSec = [];

for (var item of data) {
// timestamp and mean value
Expand All @@ -601,6 +602,8 @@
dataMaximum.push([item[0], item[3]]);
// timestamp and diff value
dataMaxMinDiff.push([item[0], item[3] - item[2]]);
// timestamp and count/s value
dataCountPerSec.push([item[0], item[4]]);
}

// set up the chart
Expand Down Expand Up @@ -784,6 +787,19 @@
show: false,
},
},
{
name: 'Count/s',
type: 'line',
data: dataCountPerSec,
lineStyle: {
opacity: 0,
width: 1,
},
itemStyle: {
color: '#ffa500'
},
symbol: 'none',
},
]
});

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,9 @@ public TimerReport createTimerReport(final boolean generateHistogram)
final TimeSeries runTimeAverageTimeSeries = JFreeChartUtils.createMovingAverageTimeSeries(runTimeTimeSeries,
getMovingAveragePercentage());

final TimeSeries countPerSecondTimeSeries = JFreeChartUtils.toMinMaxTimeSeries(countPerSecondValueSet.toMinMaxValueSet(minMaxValueSetSize),
"Count/s");

// create charts asynchronously
final TaskManager taskManager = TaskManager.getInstance();

Expand Down Expand Up @@ -184,16 +187,14 @@ public void run()
@Override
public void run()
{
final TimeSeries countPerSecondTimeSeries = JFreeChartUtils.toMinMaxTimeSeries(countPerSecondValueSet.toMinMaxValueSet(minMaxValueSetSize),
"Count/s");

saveCountPerSecondChart(name, countPerSecondTimeSeries);
}
});

// create JSON data file asynchronously
if (((ReportGeneratorConfiguration) getConfiguration()).dynamicChartsEnabled())
{
taskManager.addTask(() -> saveResponseTimeSeriesAsJson(name, runTimeTimeSeries));
taskManager.addTask(() -> saveResponseTimeSeriesAsJson(name, runTimeTimeSeries, countPerSecondTimeSeries));
}
}

Expand Down Expand Up @@ -460,15 +461,18 @@ private void saveResponseTimeChart(final String timerName, final TimeSeries resp
}

/**
* Writes the response time series data to a JSON file in the charts directory. The data in this file is later read
* Writes the passed time series data to a JSON file in the charts directory. The data in this file is later read
* from the load test report and forms the basis for interactive charts.
*
* @param timerName
* the name of the timer
* @param responseTimeSeries
* the response time series
* @param countPerSecondTimeSeries
* the count/s time series
*/
private void saveResponseTimeSeriesAsJson(final String timerName, final TimeSeries responseTimeSeries)
private void saveResponseTimeSeriesAsJson(final String timerName, final TimeSeries responseTimeSeries,
TimeSeries countPerSecondTimeSeries)
{
final int size = responseTimeSeries.getItems().size();

Expand All @@ -477,16 +481,22 @@ private void saveResponseTimeSeriesAsJson(final String timerName, final TimeSeri
sb.append('[');
for (int i = 0; i < size; i++)
{
final IntMinMaxTimeSeriesDataItem dataItem = (IntMinMaxTimeSeriesDataItem) responseTimeSeries.getDataItem(i);
final IntMinMaxTimeSeriesDataItem responseTimeDataItem = (IntMinMaxTimeSeriesDataItem) responseTimeSeries.getDataItem(i);

// get the count/s value that corresponds to the runtime value
// (we cannot use the index as there are potentially more data items in the count/s series)
final IntMinMaxTimeSeriesDataItem countPerSecondDataItem = (IntMinMaxTimeSeriesDataItem) countPerSecondTimeSeries.getDataItem(responseTimeDataItem.getPeriod());

sb.append('[');
sb.append(dataItem.getPeriod().getFirstMillisecond());
sb.append(responseTimeDataItem.getPeriod().getFirstMillisecond());
sb.append(',');
sb.append(responseTimeDataItem.getMinMaxValue().getAverageValue());
sb.append(',');
sb.append(dataItem.getMinMaxValue().getAverageValue());
sb.append(responseTimeDataItem.getMinMaxValue().getMinimumValue());
sb.append(',');
sb.append(dataItem.getMinMaxValue().getMinimumValue());
sb.append(responseTimeDataItem.getMinMaxValue().getMaximumValue());
sb.append(',');
sb.append(dataItem.getMinMaxValue().getMaximumValue());
sb.append(countPerSecondDataItem.getMinMaxValue().getAverageValue());
sb.append(']');

if (i < size - 1)
Expand Down