123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149 |
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <link rel="shortcut icon" type="image/x-icon" href="style/favicon.ico"/>
- <link href="style/style.css" rel="stylesheet" type="text/css" />
- <link href="style/bootstrap.min.css" rel="stylesheet" type="text/css" />
- <script src="js/jquery-3.5.1.min.js"></script>
- <script src="js/bootstrap.min.js"></script>
- <script src="js/gatling.js"></script>
- <script src="js/menu.js"></script>
- <script src="js/ellipsis.js"></script>
- <script src="js/all_sessions.js"></script>
- <script src="js/stats.js"></script>
- <script src="js/highstock.js"></script>
- <script src="js/highcharts-more.js"></script>
- <script src="js/theme.js"></script>
- <script src="js/unpack.js"></script>
- <title>Gatling Stats - Global Information</title>
- </head>
- <body>
- <script>
- const storedTheme = localStorage.getItem('theme') || (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
- if (storedTheme) document.documentElement.setAttribute('data-theme', storedTheme)
- function toggleTheme() {
- const currentTheme = document.documentElement.getAttribute("data-theme");
- const targetTheme = currentTheme === "light" ? "dark" : "light";
- document.documentElement.setAttribute('data-theme', targetTheme)
- localStorage.setItem('theme', targetTheme);
- };
- </script>
- <div class="app-container">
- <div class="frise"></div>
- <div class="head">
- <div class="gatling-open-source">
- <a class="gatling-logo gatling-logo-light" href="https://gatling.io" target="blank_" title="Gatling Home Page"><img alt="Gatling" src="style/logo-light.svg"/></a>
- <a class="gatling-logo gatling-logo-dark" href="https://gatling.io" target="blank_" title="Gatling Home Page"><img alt="Gatling" src="style/logo-dark.svg"/></a>
- <a class="gatling-documentation" href="https://gatling.io/docs/" target="_blank">Documentation</a>
- </div>
- <div class="nav spacer"></div>
- <a class="enterprise" href="https://gatling.io/enterprise/next-step/" target="_blank"><strong>Try</strong>
- <img class="logo-enterprise-light" alt="Gatling Enterprise" src="style/logo-enterprise-light.svg"/>
- <img class="logo-enterprise-dark" alt="Gatling Enterprise" src="style/logo-enterprise-dark.svg"/>
- </a>
- <button id="theme-toggle" class="theme-toggle" type="button" onclick="toggleTheme()" aria-label="Toggle user interface mode">
- <span class="toggle-dark"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-moon"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg></span>
- <span class="toggle-light"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg></span>
- </button>
- </div>
- <div class="container details">
- <div class="nav">
- <ul></ul>
- </div>
- <div class="cadre">
- <div class="content">
- <div class="content-header">
- <div class="onglet">
- WebSocketEchoSimulation
- </div>
- <div class="sous-menu" id="sousMenu">
- <div class="sous-menu-spacer">
- <div class="item ouvert"><a href="index.html">Global</a></div>
- <div class="item "><a id="details_link" href="#">Details</a></div>
- </div>
- </div>
- </div>
- <div class="content-in">
- <div class="container-article">
- <div class="article">
-
-
- <div class="schema-container">
- <div id="ranges" class="schema ranges">
- </div>
- <div class="schema polar">
- <div id="container_number_of_requests"></div>
- </div>
- <div class="simulation-card">
- <div class="simulation-version-information">
- <span class="simulation-information-title">Gatling Version</span>
- <span class="simulation-information-item">
- <span class="simulation-information-label">Version: </span>
- <span>3.10.5</span>
- </span>
- <span class="simulation-information-item">
- <span class="simulation-information-label">Released: </span>
- <span>2024-03-22</span>
- </span>
- </div>
- <div id="simulation-information" class="simulation-version-information">
- <span class="simulation-information-title">Run Information</span>
- <div class="simulation-information-container">
- <span class="simulation-information-item">
- <span class="simulation-information-label">Date: </span>
- <span>2025-06-03 14:47:04 GMT</span>
- </span>
- <span class="simulation-information-item">
- <span class="simulation-information-label">Duration: </span>
- <span>2s </span>
- </span>
- <span class="simulation-information-item">
- <span class="simulation-information-label">Description: </span>
- <span>—</span>
- </span>
- </div>
- </div>
- </div>
- </div>
- <div id="statistics_table_container">
- <div id="stats" class="statistics extensible-geant collapsed">
- <div class="title">
- <div id="statistics_title" class="title_base"><span class="title_base_stats">Stats</span><span class="expand-table">Fixed height</span><span id="toggle-stats" class="toggle-table"></span><span class="collapse-table">Full size</span></div>
- <div class="right">
- <button class="statistics-button expand-all-button">Expand all groups</button>
- <button class="statistics-button collapse-all-button">Collapse all groups</button>
- <button id="statistics_full_screen" class="statistics-button" onclick="openStatisticsTableModal()"><img alt="Fullscreen" src="style/fullscreen.svg"></button>
- </div>
- </div>
- <div class="scrollable">
- <table id="container_statistics_head" class="statistics-in extensible-geant">
- <thead>
- <tr>
- <th rowspan="2" id="col-1" class="header sortable sorted-up"><span>Requests</span></th>
- <th colspan="5" class="header"><span class="executions">Executions</span></th>
- <th colspan="8" class="header"><span class="response-time">Response Time (ms)</span></th>
- </tr>
- <tr>
- <th id="col-2" class="header sortable"><span>Total</span></th>
- <th id="col-3" class="header sortable"><span>OK</span></th>
- <th id="col-4" class="header sortable"><span>KO</span></th>
- <th id="col-5" class="header sortable"><span>% KO</span></th>
- <th id="col-6" class="header sortable"><span><abbr title="Count of events per second">Cnt/s</abbr></span></th>
- <th id="col-7" class="header sortable"><span>Min</span></th>
- <th id="col-8" class="header sortable"><span>50th pct</span></th>
- <th id="col-9" class="header sortable"><span>75th pct</span></th>
- <th id="col-10" class="header sortable"><span>95th pct</span></th>
- <th id="col-11" class="header sortable"><span>99th pct</span></th>
- <th id="col-12" class="header sortable"><span>Max</span></th>
- <th id="col-13" class="header sortable"><span>Mean</span></th>
- <th id="col-14" class="header sortable"><span><abbr title="Standard Deviation">Std Dev</abbr></span></th>
- </tr>
- </thead>
- <tbody></tbody>
- </table>
- <table id="container_statistics_body" class="statistics-in extensible-geant">
- <tbody></tbody>
- </table>
- </div>
- </div>
- </div>
- <dialog id="statistics_table_modal" class="statistics-table-modal">
- <div class="statistics-table-modal-header"><button class="button-modal" onclick="closeStatisticsTableModal()"><img alt="Close" src="style/close.svg"></button></div>
- <div class="statistics-table-modal-container">
- <div id="statistics_table_modal_content" class="statistics-table-modal-content"></div>
- </div>
- </dialog>
- <script>
- function openStatisticsTableModal () {
- const statsTable = document.getElementById("stats");
- const statsTableModal = document.getElementById("statistics_table_modal");
- const fullScreenButton = document.getElementById("statistics_full_screen");
- fullScreenButton.disabled = true;
- if (typeof statsTableModal.showModal === "function") {
- const statsTableModalContent = document.getElementById("statistics_table_modal_content");
- statsTableModalContent.innerHTML = "";
- statsTableModalContent.appendChild(statsTable);
- statsTableModal.showModal();
- statsTableModal.addEventListener("close", function () {
- const container = document.getElementById("statistics_table_container");
- container.appendChild(statsTable);
- fullScreenButton.disabled = false;
- });
- } else {
- const incompatibleBrowserVersionMessage = document.createElement("div");
- incompatibleBrowserVersionMessage.innerText = "Sorry, the <dialog> API is not supported by this browser.";
- statsTable.insertBefore(incompatibleBrowserVersionMessage, statsTable.children[0]);
- }
- }
- function closeStatisticsTableModal () {
- const statsTableModal = document.getElementById("statistics_table_modal");
- statsTableModal.close();
- }
- </script>
- <div class="statistics extensible-geant collapsed">
- <div class="title">
- Errors
- </div>
- <table id="container_errors" class="statistics-in extensible-geant">
- <thead>
- <tr>
- <th id="error-col-1" class="header sortable"><span>Error</span></th>
- <th id="error-col-2" class="header sortable"><span>Count</span></th>
- <th id="error-col-3" class="header sortable"><span>Percentage</span></th>
- </tr>
- </thead>
- <tbody>
-
- <tr>
- <td class="error-col-1 total ko">Client issued text frame but server has closed the WebSocket and max reconnects is reached<span class="value" style="display:none">0</span></td>
- <td class="value error-col-2 total ko">1</td>
- <td class="value error-col-3 total ko">33.333 %</td>
- </tr>
- <tr>
- <td class="error-col-1 total ko">Close Connection: Client issued close order but WebSocket was already crashed: i.n.h.c.h.w.WebSocketClientHandshakeException: Invalid handshake response getStatus: 503 Service Unavailable <span class="value" style="display:none">1</span></td>
- <td class="value error-col-2 total ko">1</td>
- <td class="value error-col-3 total ko">33.333 %</td>
- </tr>
- <tr>
- <td class="error-col-1 total ko">i.n.h.c.h.w.WebSocketClientHandshakeException: Invalid handshake response getStatus: 503 Service Unavailable<span class="value" style="display:none">2</span></td>
- <td class="value error-col-2 total ko">1</td>
- <td class="value error-col-3 total ko">33.333 %</td>
- </tr>
- </tbody>
- </table>
- </div>
- <div class="schema geant">
- <div id="active_users" class="geant"></div>
- </div>
- <div class="schema geant">
- <div id="responsetimeDistributionContainer" class="geant"></div>
- </div>
- <div class="schema geant">
- <div id="responsetimepercentilesovertimeokPercentilesContainer" class="geant"></div>
- </div>
- <div class="schema geant">
- <div id="requests" class="geant"></div>
- </div>
- <div class="schema geant">
- <div id="responses" class="geant"></div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- </div>
- <script>
- var pageStats = stats.stats;
- $(document).ready(function() {
- $('.simulation-tooltip').popover({trigger:'hover', placement:'left'});
- setDetailsLinkUrl();
- setGlobalMenu();
- setActiveMenu();
- fillStats(pageStats);
-
- Highcharts.setOptions({
- global: { useUTC: false }
- });
- var rangesChart = new Highcharts.Chart({
- chart: {
- renderTo: 'ranges',
- marginRight: 100
- },
- credits: { enabled: false },
- legend: { enabled: false },
- title: { text: 'A title to let highcharts reserve the place for the title set later' },
- xAxis: {
- categories: [
- pageStats.group1.htmlName,
- pageStats.group2.htmlName,
- pageStats.group3.htmlName,
- pageStats.group4.htmlName
- ]
- },
- yAxis: {
- title: { text: 'Number of Requests' },
- reversedStacks: false
- },
- tooltip: {
- formatter: function() {
- var s;
- if (this.point.name) { // the pie chart
- s = ''+ this.point.name +': '+ this.y +'% requests';
- } else {
- s = ''+ this.y + ' requests';
- }
- return s;
- }
- },
- plotOptions: {
- series: {
- stacking: 'normal',
- shadow: true
- }
- },
- series: [
- {
- type: 'column',
- data: [{
- color: '#68b65c',
- y: pageStats.group1.count
- },
- {
- color: '#FFDD00',
- y: pageStats.group2.count
- },
- {
- color: '#FFA900',
- y: pageStats.group3.count
- },
- {
- color: '#f15b4f',
- y: pageStats.group4.count
- }]
- },
- {
- type: 'pie',
- name: 'Percentages',
- data: [
- {
- name: pageStats.group1.name,
- y: pageStats.group1.percentage,
- color: '#68b65c'
- },
- {
- name: pageStats.group2.name,
- y: pageStats.group2.percentage,
- color: '#FFDD00'
- },
- {
- name: pageStats.group3.name,
- y: pageStats.group3.percentage,
- color: '#FFA900'
- },
- {
- name: pageStats.group4.name,
- y: pageStats.group4.percentage,
- color: '#f15b4f'
- }
- ],
- center: [345, 0],
- size: 90,
- showInLegend: false,
- dataLabels: { enabled: false }
- }
- ]
- });
- rangesChart.setTitle({
- text: '<span class="chart_title">Response Time Ranges</span>',
- useHTML: true
- });
- function numberOfRequestsDataForGroup(group) {
- var data = {names: [], oks: [], kos: []};
- $.each(group.contents, function(contentName, content) {
- if (content.type == 'GROUP') {
- var result = numberOfRequestsDataForGroup(content);
- data.names = data.names.concat(result.names);
- data.oks = data.oks.concat(result.oks);
- data.kos = data.kos.concat(result.kos);
- }
- else if (content.type == 'REQUEST') {
- data.names.push(content.path);
- data.oks.push(parseInt(content.stats.numberOfRequests.ok));
- data.kos.push(parseInt(content.stats.numberOfRequests.ko));
- }
- });
- return data;
- }
- var numberOfRequestsData = numberOfRequestsDataForGroup(stats);
- var tickInterval = Math.ceil(numberOfRequestsData.names.length / 1000);
- new Highcharts.Chart({
- chart: {
- renderTo:'container_number_of_requests',
- polar:true,
- type:'column',
- height:330
- },
- credits:{
- enabled:false
- },
- title:{
- text:'<span class="chart_title">Number of requests</span>',
- useHTML: true,
- widthAdjust:-20
- },
- xAxis:{
- tickmarkPlacement:'on',
- tickInterval: tickInterval,
- categories:numberOfRequestsData.names,
- labels:{ enabled:false }
- },
- yAxis:{
- min:0,
- reversedStacks: false
- },
- plotOptions:{
- series:{
- stacking:'normal',
- groupPadding:0,
- pointPlacement:'on',
- shadow: true
- }
- },
- legend: {
- borderWidth: 0,
- itemStyle: { fontWeight: "normal" },
- symbolRadius: 0
- },
- series:[
- {
- name:'OK',
- data:numberOfRequestsData.oks,
- color:"#68b65c"
- },
- {
- name:'KO',
- data:numberOfRequestsData.kos,
- color:"#f15b4f"
- }
- ]
- });
- $('#container_exceptions').sortable('#container_exceptions');
-
- function generateHtmlRow(request, level, index, parent, group) {
- if (request.name == 'All Requests')
- 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 '<tr id="' + request.pathFormatted + '" data-parent=' + parent + '> \
- <td class="total col-1"> \
- <div class="expandable-container"> \
- <span id="' + request.pathFormatted + '" style="margin-left: ' + (level * 10) + 'px;" class="expand-button' + expandButtonStyle + '"> </span> \
- <a href="' + url +'" class="withTooltip">' + ellipsedLabel({ name: request.name, parentClass: "table-cell-tooltip" }) + '</a><span class="value" style="display:none;">' + index + '</span> \
- </div> \
- </td> \
- <td class="value total col-2">' + request.stats.numberOfRequests.total + '</td> \
- <td class="value ok col-3">' + request.stats.numberOfRequests.ok + '</td> \
- <td class="value ko col-4">' + request.stats.numberOfRequests.ko + '</td> \
- <td class="value ko col-5">' + koPercent + '</td> \
- <td class="value total col-6">' + request.stats.meanNumberOfRequestsPerSecond.total + '</td> \
- <td class="value total col-7">' + request.stats.minResponseTime.total + '</td> \
- <td class="value total col-8">' + request.stats.percentiles1.total + '</td> \
- <td class="value total col-9">' + request.stats.percentiles2.total + '</td> \
- <td class="value total col-10">' + request.stats.percentiles3.total + '</td> \
- <td class="value total col-11">' + request.stats.percentiles4.total + '</td> \
- <td class="value total col-12">' + request.stats.maxResponseTime.total + '</td> \
- <td class="value total col-13">' + request.stats.meanResponseTime.total + '</td> \
- <td class="value total col-14">' + request.stats.standardDeviation.total + '</td> \
- </tr>';
- }
- 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;');
- } else {
- $('#statistics_title').addClass('title_collapsed');
- $('#statistics_title').click(function() {
- $('#toggle-stats').toggleClass("off");
- $(this).toggleClass('title_collapsed').toggleClass('title_expanded');
- $('#container_statistics_body').parent().toggleClass('scrollable').toggleClass('');
- });
- }
- $('.table-cell-tooltip').popover({trigger:'hover'});
- $('#container_errors').sortable('#container_errors');
-
- allUsersData.yAxis = 0;
- var allUsersChart = new Highcharts.StockChart({
- chart: {
- renderTo: 'active_users',
- zoomType: 'x'
- },
- credits: { enabled: false },
- legend: {
- enabled: true,
- floating: true,
- align: 'right',
- verticalAlign: 'top',
- layout: 'vertical',
- borderWidth: 0,
- itemStyle: { fontWeight: "normal" },
- symbolRadius: 0
- },
- title: { text: 'A title to let highcharts reserve the place for the title set later' },
- navigator: {
- maskInside: false
- },
- rangeSelector: {
- buttonSpacing: 0,
- buttonTheme: {
- fill: '#CFC9C6',
- padding: 1,
- stroke: '#000000',
- 'stroke-width': 0.25,
- style: {
- color: '#000000',
- fontWeight: 'bold',
- },
- states: {
- stroke: '#000000',
- 'stroke-width': 0.25,
- hover: {
- fill: '#92918C',
- style: { color: 'black' }
- },
- select: {
- fill: '#FFA900',
- style: { color: 'white' }
- }
- }
- },
- buttons : [
- {
- type : 'minute',
- count : 1,
- text : '1m'
- }, {
- type : 'minute',
- count : 10,
- text : '10m'
- }, {
- type : 'hour',
- count : 1,
- text : '1h'
- }, {
- type : 'all',
- count : 1,
- text : 'All'
- }
- ],
- selected : 3,
- inputEnabled : false
- },
- xAxis: {
- type: 'datetime',
- ordinal: false,
- maxZoom: 10000 // three days
- },
- yAxis: {
- title: { text: 'Number of Active Users' },
- opposite: false,
- min: 0
- },
- series: [
- {
- color: '#5E7BE2',
- name: 'WebSocket Echo Test',
- data: [
- [1748962025000,1],[1748962026000,1],[1748962027000,1]
- ],
- tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }},
- allUsersData
- ]
- });
- allUsersChart.setTitle({
- text: '<span class="chart_title">Active Users along the Simulation</span>',
- useHTML: true
- });
- allUsersData.yAxis = 1;
- var responsetimeDistributionChart = new Highcharts.Chart({
- chart: {
- renderTo: 'responsetimeDistributionContainer',
- type: 'column',
- marginBottom: 60
- },
- credits: { enabled: false },
- legend: {
- enabled: true,
- floating: true,
- y: 5,
- borderWidth: 0,
- itemStyle: { fontWeight: "normal" },
- symbolRadius: 0
- },
- title: { text: 'A title to let highcharts reserve the place for the title set later' },
- navigator: {
- maskInside: false
- },
- xAxis: {
- categories: ['3', '8', '13', '18', '24', '29', '34', '40', '45', '50', '55', '61', '66', '71', '76', '82', '87', '92', '97', '103', '108', '113', '119', '124', '129', '134', '140', '145', '150', '155', '161', '166', '171', '177', '182', '187', '192', '198', '203', '208', '213', '219', '224', '229', '235', '240', '245', '250', '256', '261', '266', '271', '277', '282', '287', '292', '298', '303', '308', '314', '319', '324', '329', '335', '340', '345', '350', '356', '361', '366', '372', '377', '382', '387', '393', '398', '403', '408', '414', '419', '424', '430', '435', '440', '445', '451', '456', '461', '466', '472', '477', '482', '487', '493', '498', '503', '509', '514', '519', '524', '530'],
- tickInterval: 20
- },
- yAxis: {
- min: 0,
- title: { text: 'Percentage of Requests' },
- reversedStacks: false
- },
- tooltip: {
- formatter: function() {
- return '<b>'+ this.x +' ms</b><br/>'+
- this.series.name +': '+ this.y +' %<br/>'+
- 'Total: '+ this.point.stackTotal + ' %';
- }
- },
- plotOptions: {
- series: {
- groupPadding: 0,
- stacking: 'normal',
- shadow: true
- }
- },
- series: [
- {
- type: 'column',
- color: '#68b65c',
- name: 'OK',
- data: [
- 0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
- ],
- tooltip: { yDecimals: 0, ySuffix: 'ms' }
- },
- {
- type: 'column',
- color: '#f15b4f',
- name: 'KO',
- data: [
- 50.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,50.0,0.0
- ],
- tooltip: { yDecimals: 0, ySuffix: 'ms' }
- }
- ]
- });
- responsetimeDistributionChart.setTitle({
- text: '<span class="chart_title">Response Time Distribution</span>',
- useHTML: true
- });
- var responsetimepercentilesovertimeokPercentiles = unpack([[1748962025,null],[1748962026,null],[1748962027,null]]);
- var responsetimepercentilesovertimeokPercentilesChart = new Highcharts.StockChart({
- chart: {
- renderTo: 'responsetimepercentilesovertimeokPercentilesContainer',
- zoomType: 'x',
- marginBottom: 60
- },
- colors: ['#c4fd90', '#7ff77f', '#6ff2ad', '#61ede6', '#58c7e0', '#4ea1d4', '#487ad9', '#3f52cc', '#7335dc', '#c73905', '#FFA900'],
- credits: { enabled: false },
- legend: {
- enabled: true,
- floating: true,
- y: -65,
- borderWidth: 0,
- itemStyle: { fontWeight: "normal" },
- symbolRadius: 0
- },
- title: { text: 'A title to let highcharts reserve the place for the title set later' },
- navigator: {
- maskInside: false,
- baseSeries: 9
- },
- rangeSelector: {
- rangeSelector: { align: "left" },
- buttonSpacing: 0,
- buttonTheme: {
- fill: '#CFC9C6',
- padding: 1,
- stroke: '#000000',
- 'stroke-width': 0.25,
- style: {
- color: '#000000',
- fontWeight: 'bold',
- },
- states: {
- stroke: '#92918C',
- 'stroke-width': 0.25,
- hover: {
- fill: '#92918C',
- style: { color: 'black' }
- },
- select: {
- fill: '#FFA900',
- style: { color: 'white' }
- }
- }
- },
- buttons : [
- {
- type : 'minute',
- count : 1,
- text : '1m'
- }, {
- type : 'minute',
- count : 10,
- text : '10m'
- }, {
- type : 'hour',
- count : 1,
- text : '1h'
- }, {
- type : 'all',
- count : 1,
- text : 'All'
- }
- ],
- selected : 3,
- inputEnabled : false
- },
- xAxis: {
- type: 'datetime',
- ordinal: false,
- maxZoom: 10000 // three days
- },
- yAxis:[
- {
- min: 0,
- title: { text: 'Response Time (ms)' },
- opposite: false
- }, {
- min: 0,
- title: {
- text: 'Active Users',
- style: { color: '#FFA900' }
- },
- opposite: true
- }
- ],
- plotOptions: {
- arearange: { lineWidth: 1 },
- series: {
- dataGrouping: { enabled: false }
- }
- },
- series: [
-
-
- {
- pointInterval: 1000,
- name: 'min',
- data: responsetimepercentilesovertimeokPercentiles[0],
- tooltip: { yDecimals: 0, ySuffix: 'ms' },
- type : 'area',
- yAxis: 0,
- zIndex: 10
- },
- {
- pointInterval: 1000,
- name: '25%',
- data: responsetimepercentilesovertimeokPercentiles[1],
- tooltip: { yDecimals: 0, ySuffix: 'ms' },
- type : 'area',
- yAxis: 0,
- zIndex: 9
- },
- {
- pointInterval: 1000,
- name: '50%',
- data: responsetimepercentilesovertimeokPercentiles[2],
- tooltip: { yDecimals: 0, ySuffix: 'ms' },
- type : 'area',
- yAxis: 0,
- zIndex: 8
- },
- {
- pointInterval: 1000,
- name: '75%',
- data: responsetimepercentilesovertimeokPercentiles[3],
- tooltip: { yDecimals: 0, ySuffix: 'ms' },
- type : 'area',
- yAxis: 0,
- zIndex: 7
- },
- {
- pointInterval: 1000,
- name: '80%',
- data: responsetimepercentilesovertimeokPercentiles[4],
- tooltip: { yDecimals: 0, ySuffix: 'ms' },
- type : 'area',
- yAxis: 0,
- zIndex: 6
- },
- {
- pointInterval: 1000,
- name: '85%',
- data: responsetimepercentilesovertimeokPercentiles[5],
- tooltip: { yDecimals: 0, ySuffix: 'ms' },
- type : 'area',
- yAxis: 0,
- zIndex: 5
- },
- {
- pointInterval: 1000,
- name: '90%',
- data: responsetimepercentilesovertimeokPercentiles[6],
- tooltip: { yDecimals: 0, ySuffix: 'ms' },
- type : 'area',
- yAxis: 0,
- zIndex: 4
- },
- {
- pointInterval: 1000,
- name: '95%',
- data: responsetimepercentilesovertimeokPercentiles[7],
- tooltip: { yDecimals: 0, ySuffix: 'ms' },
- type : 'area',
- yAxis: 0,
- zIndex: 3
- },
- {
- pointInterval: 1000,
- name: '99%',
- data: responsetimepercentilesovertimeokPercentiles[8],
- tooltip: { yDecimals: 0, ySuffix: 'ms' },
- type : 'area',
- yAxis: 0,
- zIndex: 2
- },
- {
- pointInterval: 1000,
- name: 'max',
- data: responsetimepercentilesovertimeokPercentiles[9],
- tooltip: { yDecimals: 0, ySuffix: 'ms' },
- type : 'area',
- yAxis: 0,
- zIndex: 1
- },
- allUsersData
- ]
- });
- responsetimepercentilesovertimeokPercentilesChart.setTitle({
- text: '<span class="chart_title chart_title_">Response Time Percentiles over Time (OK)</span>',
- useHTML: true
- });
- var requests = unpack([[1748962025,[1,0,1]],[1748962026,[0,0,0]],[1748962027,[1,0,1]]]);
- var requestsChart = new Highcharts.StockChart({
- chart: {
- renderTo: 'requests',
- zoomType: 'x',
- marginBottom: 60
- },
- credits: { enabled: false },
- legend: {
- enabled: true,
- floating: true,
- y: -65,
- borderWidth: 0,
- itemStyle: { fontWeight: "normal" },
- symbolRadius: 0
- },
- title: { text: 'A title to let highcharts reserve the place for the title set later' },
- navigator: {
- maskInside: false
- },
- rangeSelector: {
- buttonSpacing: 0,
- buttonTheme: {
- fill: '#CFC9C6',
- padding: 1,
- stroke: '#000000',
- 'stroke-width': 0.25,
- style: {
- color: '#000000',
- fontWeight: 'bold',
- },
- states: {
- stroke: '#000000',
- 'stroke-width': 0.25,
- hover: {
- fill: '#92918C',
- style: { color: 'black' }
- },
- select: {
- fill: '#FFA900',
- style: { color: 'white' }
- }
- }
- },
- buttons : [
- {
- type : 'minute',
- count : 1,
- text : '1m'
- }, {
- type : 'minute',
- count : 10,
- text : '10m'
- }, {
- type : 'hour',
- count : 1,
- text : '1h'
- }, {
- type : 'all',
- count : 1,
- text : 'All'
- }
- ],
- selected : 3,
- inputEnabled : false
- },
- plotOptions: {
- series: {
- dataGrouping: { enabled: false }
- },
- area: {
- stacking: 'normal'
- }
- },
- xAxis: {
- type: 'datetime',
- ordinal: false,
- maxZoom: 10000 // three days
- },
- yAxis:[
- {
- min: 0,
- title: { text: 'Number of requests' },
- opposite: false,
- reversedStacks: false
- }, {
- min: 0,
- title: {
- text: 'Active Users',
- style: { color: '#FFA900' }
- },
- opposite: true
- }
- ],
- series: [
- {
- color: '#5E7BE2',
- name: 'All',
- data: requests[0],
- tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
- ,type: 'area'},
- allUsersData
- ]
- });
- requestsChart.setTitle({
- text: '<span class="chart_title">Number of requests per second</span>',
- useHTML: true
- });
- var responses = unpack([[1748962025,[0,0,0]],[1748962026,[1,0,1]],[1748962027,[1,0,1]]]);
- var requestsChart = new Highcharts.StockChart({
- chart: {
- renderTo: 'responses',
- zoomType: 'x',
- marginBottom: 60
- },
- credits: { enabled: false },
- legend: {
- enabled: true,
- floating: true,
- y: -65,
- borderWidth: 0,
- itemStyle: { fontWeight: "normal" },
- symbolRadius: 0
- },
- title: { text: 'A title to let highcharts reserve the place for the title set later' },
- navigator: {
- maskInside: false
- },
- rangeSelector: {
- buttonSpacing: 0,
- buttonTheme: {
- fill: '#CFC9C6',
- padding: 1,
- stroke: '#000000',
- 'stroke-width': 0.25,
- style: {
- color: '#000000',
- fontWeight: 'bold',
- },
- states: {
- stroke: '#000000',
- 'stroke-width': 0.25,
- hover: {
- fill: '#92918C',
- style: { color: 'black' }
- },
- select: {
- fill: '#FFA900',
- style: { color: 'white' }
- }
- }
- },
- buttons : [
- {
- type : 'minute',
- count : 1,
- text : '1m'
- }, {
- type : 'minute',
- count : 10,
- text : '10m'
- }, {
- type : 'hour',
- count : 1,
- text : '1h'
- }, {
- type : 'all',
- count : 1,
- text : 'All'
- }
- ],
- selected : 3,
- inputEnabled : false
- },
- plotOptions: {
- series: {
- dataGrouping: { enabled: false }
- },
- area: {
- stacking: 'normal'
- }
- },
- xAxis: {
- type: 'datetime',
- ordinal: false,
- maxZoom: 10000 // three days
- },
- yAxis:[
- {
- min: 0,
- title: { text: 'Number of responses' },
- opposite: false,
- reversedStacks: false
- }, {
- min: 0,
- title: {
- text: 'Active Users',
- style: { color: '#FFA900' }
- },
- opposite: true
- }
- ],
- series: [
- {
- color: '#5E7BE2',
- name: 'All',
- data: responses[0],
- tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
- },
- {
- color: '#68b65c',
- name: 'OK',
- data: responses[1],
- tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
- ,type: 'area'},
- {
- color: '#f15b4f',
- name: 'KO',
- data: responses[2],
- tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
- ,type: 'area'},
- allUsersData,
- {
-
- type: 'pie',
- name: 'Distribution',
- data: [
- {name: 'OK', y: 0.0, color: '#68b65c'},{name: 'KO', y: 2.0, color: '#f15b4f'}
- ],
- center: [775, -40],
- size: 70,
- showInLegend: false,
- dataLabels: { enabled: false },
- dataGrouping: { enabled: false }
- }
- ]
- });
- requestsChart.setTitle({
- text: '<span class="chart_title">Number of responses per second</span>',
- useHTML: true
- });
- });
- </script>
- </div>
- </body>
- </html>
|