236 lines
8.8 KiB
JavaScript
236 lines
8.8 KiB
JavaScript
/*
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
var showControllersOnly = false;
|
|
var seriesFilter = "";
|
|
var filtersOnlySampleSeries = true;
|
|
|
|
/*
|
|
* Add header in statistics table to group metrics by category
|
|
* format
|
|
*
|
|
*/
|
|
function summaryTableHeader(header) {
|
|
var newRow = header.insertRow(-1);
|
|
newRow.className = "tablesorter-no-sort";
|
|
var cell = document.createElement('th');
|
|
cell.setAttribute("data-sorter", false);
|
|
cell.colSpan = 1;
|
|
cell.innerHTML = "Requests";
|
|
newRow.appendChild(cell);
|
|
|
|
cell = document.createElement('th');
|
|
cell.setAttribute("data-sorter", false);
|
|
cell.colSpan = 3;
|
|
cell.innerHTML = "Executions";
|
|
newRow.appendChild(cell);
|
|
|
|
cell = document.createElement('th');
|
|
cell.setAttribute("data-sorter", false);
|
|
cell.colSpan = 7;
|
|
cell.innerHTML = "Response Times (ms)";
|
|
newRow.appendChild(cell);
|
|
|
|
cell = document.createElement('th');
|
|
cell.setAttribute("data-sorter", false);
|
|
cell.colSpan = 1;
|
|
cell.innerHTML = "Throughput";
|
|
newRow.appendChild(cell);
|
|
|
|
cell = document.createElement('th');
|
|
cell.setAttribute("data-sorter", false);
|
|
cell.colSpan = 2;
|
|
cell.innerHTML = "Network (KB/sec)";
|
|
newRow.appendChild(cell);
|
|
}
|
|
|
|
/*
|
|
* Populates the table identified by id parameter with the specified data and
|
|
* format
|
|
*
|
|
*/
|
|
function createTable(table, info, formatter, defaultSorts, seriesIndex, headerCreator) {
|
|
var tableRef = table[0];
|
|
|
|
// Create header and populate it with data.titles array
|
|
var header = tableRef.createTHead();
|
|
|
|
// Call callback is available
|
|
if(headerCreator) {
|
|
headerCreator(header);
|
|
}
|
|
|
|
var newRow = header.insertRow(-1);
|
|
for (var index = 0; index < info.titles.length; index++) {
|
|
var cell = document.createElement('th');
|
|
cell.innerHTML = info.titles[index];
|
|
newRow.appendChild(cell);
|
|
}
|
|
|
|
var tBody;
|
|
|
|
// Create overall body if defined
|
|
if(info.overall){
|
|
tBody = document.createElement('tbody');
|
|
tBody.className = "tablesorter-no-sort";
|
|
tableRef.appendChild(tBody);
|
|
var newRow = tBody.insertRow(-1);
|
|
var data = info.overall.data;
|
|
for(var index=0;index < data.length; index++){
|
|
var cell = newRow.insertCell(-1);
|
|
cell.innerHTML = formatter ? formatter(index, data[index]): data[index];
|
|
}
|
|
}
|
|
|
|
// Create regular body
|
|
tBody = document.createElement('tbody');
|
|
tableRef.appendChild(tBody);
|
|
|
|
var regexp;
|
|
if(seriesFilter) {
|
|
regexp = new RegExp(seriesFilter, 'i');
|
|
}
|
|
// Populate body with data.items array
|
|
for(var index=0; index < info.items.length; index++){
|
|
var item = info.items[index];
|
|
if((!regexp || filtersOnlySampleSeries && !info.supportsControllersDiscrimination || regexp.test(item.data[seriesIndex]))
|
|
&&
|
|
(!showControllersOnly || !info.supportsControllersDiscrimination || item.isController)){
|
|
if(item.data.length > 0) {
|
|
var newRow = tBody.insertRow(-1);
|
|
for(var col=0; col < item.data.length; col++){
|
|
var cell = newRow.insertCell(-1);
|
|
cell.innerHTML = formatter ? formatter(col, item.data[col]) : item.data[col];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Add support of columns sort
|
|
table.tablesorter({sortList : defaultSorts});
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
|
|
// Customize table sorter default options
|
|
$.extend( $.tablesorter.defaults, {
|
|
theme: 'blue',
|
|
cssInfoBlock: "tablesorter-no-sort",
|
|
widthFixed: true,
|
|
widgets: ['zebra']
|
|
});
|
|
|
|
var data = {"OkPercent": 100.0, "KoPercent": 0.0};
|
|
var dataset = [
|
|
{
|
|
"label" : "FAIL",
|
|
"data" : data.KoPercent,
|
|
"color" : "#FF6347"
|
|
},
|
|
{
|
|
"label" : "PASS",
|
|
"data" : data.OkPercent,
|
|
"color" : "#9ACD32"
|
|
}];
|
|
$.plot($("#flot-requests-summary"), dataset, {
|
|
series : {
|
|
pie : {
|
|
show : true,
|
|
radius : 1,
|
|
label : {
|
|
show : true,
|
|
radius : 3 / 4,
|
|
formatter : function(label, series) {
|
|
return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">'
|
|
+ label
|
|
+ '<br/>'
|
|
+ Math.round10(series.percent, -2)
|
|
+ '%</div>';
|
|
},
|
|
background : {
|
|
opacity : 0.5,
|
|
color : '#000'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
legend : {
|
|
show : true
|
|
}
|
|
});
|
|
|
|
// Creates APDEX table
|
|
createTable($("#apdexTable"), {"supportsControllersDiscrimination": true, "overall": {"data": [0.0, 500, 1500, "Total"], "isController": false}, "titles": ["Apdex", "T (Toleration threshold)", "F (Frustration threshold)", "Label"], "items": [{"data": [0.0, 500, 1500, "[TPS] Add Data Dinamix Driven Value"], "isController": false}, {"data": [0.0, 500, 1500, "Login"], "isController": false}]}, function(index, item){
|
|
switch(index){
|
|
case 0:
|
|
item = item.toFixed(3);
|
|
break;
|
|
case 1:
|
|
case 2:
|
|
item = formatDuration(item);
|
|
break;
|
|
}
|
|
return item;
|
|
}, [[0, 0]], 3);
|
|
|
|
// Create statistics table
|
|
createTable($("#statisticsTable"), {"supportsControllersDiscrimination": true, "overall": {"data": ["Total", 1000, 0, 0.0, 34641.72300000002, 2009, 88201, 21456.0, 76490.6, 77250.95, 86716.99, 9.110870179210817, 3.9843507992510863, 5.602615730828451], "isController": false}, "titles": ["Label", "#Samples", "FAIL", "Error %", "Average", "Min", "Max", "Median", "90th pct", "95th pct", "99th pct", "Transactions/s", "Received", "Sent"], "items": [{"data": ["[TPS] Add Data Dinamix Driven Value", 500, 0, 0.0, 59490.100000000006, 13135, 88201, 56340.5, 77250.9, 86007.0, 86749.99, 4.646451504985642, 2.0175219138269105, 4.507566165469431], "isController": false}, {"data": ["Login", 500, 0, 0.0, 9793.345999999994, 2009, 21544, 6386.5, 18791.0, 19328.5, 21451.670000000002, 23.194322029967065, 10.215468003432761, 6.025087558565663], "isController": false}]}, function(index, item){
|
|
switch(index){
|
|
// Errors pct
|
|
case 3:
|
|
item = item.toFixed(2) + '%';
|
|
break;
|
|
// Mean
|
|
case 4:
|
|
// Mean
|
|
case 7:
|
|
// Median
|
|
case 8:
|
|
// Percentile 1
|
|
case 9:
|
|
// Percentile 2
|
|
case 10:
|
|
// Percentile 3
|
|
case 11:
|
|
// Throughput
|
|
case 12:
|
|
// Kbytes/s
|
|
case 13:
|
|
// Sent Kbytes/s
|
|
item = item.toFixed(2);
|
|
break;
|
|
}
|
|
return item;
|
|
}, [[0, 0]], 0, summaryTableHeader);
|
|
|
|
// Create error table
|
|
createTable($("#errorsTable"), {"supportsControllersDiscrimination": false, "titles": ["Type of error", "Number of errors", "% in errors", "% in all samples"], "items": []}, function(index, item){
|
|
switch(index){
|
|
case 2:
|
|
case 3:
|
|
item = item.toFixed(2) + '%';
|
|
break;
|
|
}
|
|
return item;
|
|
}, [[1, 1]]);
|
|
|
|
// Create top5 errors by sampler
|
|
createTable($("#top5ErrorsBySamplerTable"), {"supportsControllersDiscrimination": false, "overall": {"data": ["Total", 1000, 0, "", "", "", "", "", "", "", "", "", ""], "isController": false}, "titles": ["Sample", "#Samples", "#Errors", "Error", "#Errors", "Error", "#Errors", "Error", "#Errors", "Error", "#Errors", "Error", "#Errors"], "items": [{"data": [], "isController": false}, {"data": [], "isController": false}]}, function(index, item){
|
|
return item;
|
|
}, [[0, 0]], 0);
|
|
|
|
});
|