All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.gatling.charts.component.StatisticsTableComponent.scala Maven / Gradle / Ivy

There is a newer version: 3.13.1
Show newest version
/*
 * Copyright 2011-2021 GatlingCorp (https://gatling.io)
 *
 * Licensed 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.
 */

package io.gatling.charts.component

import io.gatling.charts.config.ChartsFiles.GlobalPageName
import io.gatling.charts.report.Container.{ Group, Request }
import io.gatling.commons.util.NumberHelper._
import io.gatling.commons.util.StringHelper._
import io.gatling.core.config.GatlingConfiguration

private[charts] class StatisticsTableComponent(implicit configuration: GatlingConfiguration) extends Component {

  private val MaxRequestNameSize = 20
  private val NumberOfCharsBeforeDots = 8
  private val NumberOfCharsAfterDots = 8

  override val html: String = {

    def pctTitle(pct: Double) = pct.toRank + " pct"

    val pct1 = pctTitle(configuration.charting.indicators.percentile1)
    val pct2 = pctTitle(configuration.charting.indicators.percentile2)
    val pct3 = pctTitle(configuration.charting.indicators.percentile3)
    val pct4 = pctTitle(configuration.charting.indicators.percentile4)
    val responseTimeFields = Vector("Min", pct1, pct2, pct3, pct4, "Max", "Mean", "Std Dev")

    s"""
                        
"""
  }

  val js = s"""

  function shortenNameAndDisplayFullOnHover(name){
   if (name.length < $MaxRequestNameSize)
       return name;
   else
     return ""+name+"" + name.substr(0,$NumberOfCharsBeforeDots)+"..."+name.substr(name.length-$NumberOfCharsAfterDots,name.length);
  }

function generateHtmlRow(request, level, index, parent, group) {
    if (request.name == '$GlobalPageName')
        var url = 'index.html';
    else
        var url = request.pathFormatted + '.html';

    if (group)
        var expandButtonStyle = '';
    else
        var expandButtonStyle = ' hidden';

    if (request.stats.numberOfRequests.total != 0)
        var koPercent = (request.stats.numberOfRequests.ko * 100 / request.stats.numberOfRequests.total).toFixed(0) + '%';
    else
        var koPercent = '-'

    return ' \\
         \\
              \\
            ' + shortenNameAndDisplayFullOnHover(request.name) + ' \\
         \\
        ' + request.stats.numberOfRequests.total + ' \\
        ' + request.stats.numberOfRequests.ok + ' \\
        ' + request.stats.numberOfRequests.ko + ' \\
        ' + koPercent + ' \\
        ' + request.stats.meanNumberOfRequestsPerSecond.total + ' \\
        ' + request.stats.minResponseTime.total + ' \\
        ' + request.stats.percentiles1.total + ' \\
        ' + request.stats.percentiles2.total + ' \\
        ' + request.stats.percentiles3.total + ' \\
        ' + request.stats.percentiles4.total + ' \\
        ' + request.stats.maxResponseTime.total + ' \\
        ' + request.stats.meanResponseTime.total + ' \\
        ' + request.stats.standardDeviation.total + ' \\
        ';
}

function generateHtmlRowsForGroup(group, level, index, parent) {
    var buffer = '';

    if (!parent)
        parent = 'ROOT';
    else {
        buffer += generateHtmlRow(group, level - 1, index, parent, true);
        index++;
        parent = group.pathFormatted;
    }

    $$.each(group.contents, function(contentName, content) {
        if (content.type == '$Group') {
            var result = generateHtmlRowsForGroup(content, level + 1, index, parent);
            buffer += result.html;
            index = result.index;
        }
        else if (content.type == '$Request') {
            buffer += generateHtmlRow(content, level, index, parent);
            index++;
        }
    });

    return { html: buffer, index: index };
}

$$('#container_statistics_head tbody').append(generateHtmlRow(stats, 0, 0));

var lines = generateHtmlRowsForGroup(stats, 0, 0)
$$('#container_statistics_body tbody').append(lines.html);

$$('#container_statistics_head').sortable('#container_statistics_body');
$$('.statistics').expandable();

if (lines.index < 30) {
    $$('#statistics_title span').attr('style', 'display: none;');
    $$('#statistics_title').attr('style', 'cursor: auto;')
}
else {
    $$('#statistics_title').click(function(){
        $$(this).toggleClass('title_collapsed').toggleClass('title_not_collapsed');
        $$('#container_statistics_body').parent().toggleClass('scrollable').toggleClass('');
    });
}
"""

  val jsFiles: Seq[String] = Seq.empty
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy