req_cart-page-scena--506128127.html 37 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <link rel="shortcut icon" type="image/x-icon" href="style/favicon.ico"/>
  6. <link href="style/style.css" rel="stylesheet" type="text/css" />
  7. <link href="style/bootstrap.min.css" rel="stylesheet" type="text/css" />
  8. <script src="js/jquery-3.5.1.min.js"></script>
  9. <script src="js/bootstrap.min.js"></script>
  10. <script src="js/gatling.js"></script>
  11. <script src="js/menu.js"></script>
  12. <script src="js/ellipsis.js"></script>
  13. <script src="js/all_sessions.js"></script>
  14. <script src="js/stats.js"></script>
  15. <script src="js/highstock.js"></script>
  16. <script src="js/highcharts-more.js"></script>
  17. <script src="js/theme.js"></script>
  18. <script src="js/unpack.js"></script>
  19. <title>Gatling Stats - cart page scenario</title>
  20. </head>
  21. <body>
  22. <script>
  23. const storedTheme = localStorage.getItem('theme') || (window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
  24. if (storedTheme) document.documentElement.setAttribute('data-theme', storedTheme)
  25. function toggleTheme() {
  26. const currentTheme = document.documentElement.getAttribute("data-theme");
  27. const targetTheme = currentTheme === "light" ? "dark" : "light";
  28. document.documentElement.setAttribute('data-theme', targetTheme)
  29. localStorage.setItem('theme', targetTheme);
  30. };
  31. </script>
  32. <div class="app-container">
  33. <div class="frise"></div>
  34. <div class="head">
  35. <div class="gatling-open-source">
  36. <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>
  37. <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>
  38. <a class="gatling-documentation" href="https://gatling.io/docs/" target="_blank">Documentation</a>
  39. </div>
  40. <div class="nav spacer"></div>
  41. <a class="enterprise" href="https://gatling.io/enterprise/next-step/" target="_blank"><strong>Try</strong>
  42. <img class="logo-enterprise-light" alt="Gatling Enterprise" src="style/logo-enterprise-light.svg"/>
  43. <img class="logo-enterprise-dark" alt="Gatling Enterprise" src="style/logo-enterprise-dark.svg"/>
  44. </a>
  45. <button id="theme-toggle" class="theme-toggle" type="button" onclick="toggleTheme()" aria-label="Toggle user interface mode">
  46. <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>
  47. <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>
  48. </button>
  49. </div>
  50. <div class="container details">
  51. <div class="nav">
  52. <ul></ul>
  53. </div>
  54. <div class="cadre">
  55. <div class="content">
  56. <div class="content-header">
  57. <div class="onglet">
  58. CartsPageSimulation
  59. </div>
  60. <div class="sous-menu" id="sousMenu">
  61. <div class="sous-menu-spacer">
  62. <div class="item "><a href="index.html">Global</a></div>
  63. <div class="item ouvert"><a id="details_link" href="#">Details</a></div>
  64. </div>
  65. </div>
  66. </div>
  67. <div class="content-in">
  68. <div class="container-article">
  69. <div class="article">
  70. <div class="schema-container">
  71. <div id="ranges" class="schema ranges-large">
  72. </div>
  73. <div class="infos">
  74. <div class="infos-in">
  75. <div class="infos-title">Stats</div>
  76. <div class="info">
  77. <h2 class="first">Executions</h2>
  78. <table>
  79. <thead>
  80. <tr><th></th><th>Total</th><th>OK</th><th>KO</th></tr>
  81. </thead>
  82. <tbody>
  83. <tr>
  84. <td class="title">Total count</td>
  85. <td id="numberOfRequests" class="total"></td>
  86. <td id="numberOfRequestsOK" class="ok"></td>
  87. <td id="numberOfRequestsKO" class="ko"></td>
  88. </tr>
  89. <tr>
  90. <td class="title">Mean count/s</abbr></td>
  91. <td id="meanNumberOfRequestsPerSecond" class="total"></td>
  92. <td id="meanNumberOfRequestsPerSecondOK" class="ok"></td>
  93. <td id="meanNumberOfRequestsPerSecondKO" class="ko"></td>
  94. </tr>
  95. </tbody>
  96. </table>
  97. <h2 class="second">Response Time (ms)</h2>
  98. <table>
  99. <thead>
  100. <tr>
  101. <th></th>
  102. <th>Total</th>
  103. <th>OK</th>
  104. <th>KO</th>
  105. </tr>
  106. </thead>
  107. <tbody>
  108. <tr>
  109. <td class="title">Min</td>
  110. <td id="minResponseTime" class="total"></td>
  111. <td id="minResponseTimeOK" class="ok"></td>
  112. <td id="minResponseTimeKO" class="ko"></td>
  113. </tr>
  114. <tr>
  115. <td class="title">50th percentile</td>
  116. <td id="percentiles1" class="total"></td>
  117. <td id="percentiles1OK" class="ok"></td>
  118. <td id="percentiles1KO" class="ko"></td>
  119. </tr>
  120. <tr>
  121. <td class="title">75th percentile</td>
  122. <td id="percentiles2" class="total"></td>
  123. <td id="percentiles2OK" class="ok"></td>
  124. <td id="percentiles2KO" class="ko"></td>
  125. </tr>
  126. <tr>
  127. <td class="title">95th percentile</td>
  128. <td id="percentiles3" class="total"></td>
  129. <td id="percentiles3OK" class="ok"></td>
  130. <td id="percentiles3KO" class="ko"></td>
  131. </tr>
  132. <tr>
  133. <td class="title">99th percentile</td>
  134. <td id="percentiles4" class="total"></td>
  135. <td id="percentiles4OK" class="ok"></td>
  136. <td id="percentiles4KO" class="ko"></td>
  137. </tr>
  138. <tr>
  139. <td class="title">Max</td>
  140. <td id="maxResponseTime" class="total"></td>
  141. <td id="maxResponseTimeOK" class="ok"></td>
  142. <td id="maxResponseTimeKO" class="ko"></td>
  143. </tr>
  144. <tr>
  145. <td class="title">Mean</td>
  146. <td id="meanResponseTime" class="total"></td>
  147. <td id="meanResponseTimeOK" class="ok"></td>
  148. <td id="meanResponseTimeKO" class="ko"></td>
  149. </tr>
  150. <tr>
  151. <td class="title">Standard Deviation</td>
  152. <td id="standardDeviation" class="total"></td>
  153. <td id="standardDeviationOK" class="ok"></td>
  154. <td id="standardDeviationKO" class="ko"></td>
  155. </tr>
  156. </tbody>
  157. </table>
  158. </div>
  159. </div>
  160. </div>
  161. </div>
  162. <div class="statistics extensible-geant collapsed">
  163. <div class="title">
  164. Errors
  165. </div>
  166. <table id="container_errors" class="statistics-in extensible-geant">
  167. <thead>
  168. <tr>
  169. <th id="error-col-1" class="header sortable"><span>Error</span></th>
  170. <th id="error-col-2" class="header sortable"><span>Count</span></th>
  171. <th id="error-col-3" class="header sortable"><span>Percentage</span></th>
  172. </tr>
  173. </thead>
  174. <tbody>
  175. <tr>
  176. <td class="error-col-1 total ko">i.n.h.s.SslHandshakeTimeoutException: handshake timed out after 10000ms<span class="value" style="display:none">0</span></td>
  177. <td class="value error-col-2 total ko">12857</td>
  178. <td class="value error-col-3 total ko">54.19%</td>
  179. </tr>
  180. <tr>
  181. <td class="error-col-1 total ko">j.n.SocketException: Network is unreachable: getsockopt<span class="value" style="display:none">1</span></td>
  182. <td class="value error-col-2 total ko">5837</td>
  183. <td class="value error-col-3 total ko">24.6%</td>
  184. </tr>
  185. <tr>
  186. <td class="error-col-1 total ko">j.n.SocketException: No buffer space available (maximum connections reached?): connect<span class="value" style="display:none">2</span></td>
  187. <td class="value error-col-2 total ko">4764</td>
  188. <td class="value error-col-3 total ko">20.08%</td>
  189. </tr>
  190. <tr>
  191. <td class="error-col-1 total ko">Request timeout to ecomm.gatling.io/18.164.246.111:443 after 60000 ms<span class="value" style="display:none">3</span></td>
  192. <td class="value error-col-2 total ko">89</td>
  193. <td class="value error-col-3 total ko">0.38%</td>
  194. </tr>
  195. <tr>
  196. <td class="error-col-1 total ko">Request timeout to ecomm.gatling.io/18.164.246.48:443 after 60000 ms<span class="value" style="display:none">4</span></td>
  197. <td class="value error-col-2 total ko">63</td>
  198. <td class="value error-col-3 total ko">0.27%</td>
  199. </tr>
  200. <tr>
  201. <td class="error-col-1 total ko">Request timeout to ecomm.gatling.io/18.164.246.108:443 after 60000 ms<span class="value" style="display:none">5</span></td>
  202. <td class="value error-col-2 total ko">60</td>
  203. <td class="value error-col-3 total ko">0.25%</td>
  204. </tr>
  205. <tr>
  206. <td class="error-col-1 total ko">Request timeout to ecomm.gatling.io/18.164.246.56:443 after 60000 ms<span class="value" style="display:none">6</span></td>
  207. <td class="value error-col-2 total ko">51</td>
  208. <td class="value error-col-3 total ko">0.21%</td>
  209. </tr>
  210. <tr>
  211. <td class="error-col-1 total ko">j.i.IOException: Premature close<span class="value" style="display:none">7</span></td>
  212. <td class="value error-col-2 total ko">3</td>
  213. <td class="value error-col-3 total ko">0.01%</td>
  214. </tr>
  215. </tbody>
  216. </table>
  217. </div>
  218. <div class="schema geant">
  219. <div id="responsetimeDistributionContainer" class="geant"></div>
  220. </div>
  221. <div class="schema geant">
  222. <div id="responsetimepercentilesovertimeokPercentilesContainer" class="geant"></div>
  223. </div>
  224. <div class="schema geant">
  225. <div id="requests" class="geant"></div>
  226. </div>
  227. <div class="schema geant">
  228. <div id="responses" class="geant"></div>
  229. </div>
  230. <div class="schema geant">
  231. <div id="container_response_time_dispersion" class="geant"></div>
  232. </div>
  233. </div>
  234. </div>
  235. </div>
  236. </div>
  237. </div>
  238. </div>
  239. <script>
  240. var pageStats = stats.contents['req_cart-page-scena--506128127'].stats;
  241. $(document).ready(function() {
  242. $('.simulation-tooltip').popover({trigger:'hover', placement:'left'});
  243. setDetailsLinkUrl();
  244. setDetailsMenu();
  245. setActiveMenu();
  246. fillStats(pageStats);
  247. Highcharts.setOptions({
  248. global: { useUTC: false }
  249. });
  250. var rangesChart = new Highcharts.Chart({
  251. chart: {
  252. renderTo: 'ranges',
  253. marginRight: 100
  254. },
  255. credits: { enabled: false },
  256. legend: { enabled: false },
  257. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  258. xAxis: {
  259. categories: [
  260. pageStats.group1.htmlName,
  261. pageStats.group2.htmlName,
  262. pageStats.group3.htmlName,
  263. pageStats.group4.htmlName
  264. ]
  265. },
  266. yAxis: {
  267. title: { text: 'Number of Requests' },
  268. reversedStacks: false
  269. },
  270. tooltip: {
  271. formatter: function() {
  272. var s;
  273. if (this.point.name) { // the pie chart
  274. s = ''+ this.point.name +': '+ this.y +'% requests';
  275. } else {
  276. s = ''+ this.y + ' requests';
  277. }
  278. return s;
  279. }
  280. },
  281. plotOptions: {
  282. series: {
  283. stacking: 'normal',
  284. shadow: true
  285. }
  286. },
  287. series: [
  288. {
  289. type: 'column',
  290. data: [{
  291. color: '#68b65c',
  292. y: pageStats.group1.count
  293. },
  294. {
  295. color: '#FFDD00',
  296. y: pageStats.group2.count
  297. },
  298. {
  299. color: '#FFA900',
  300. y: pageStats.group3.count
  301. },
  302. {
  303. color: '#f15b4f',
  304. y: pageStats.group4.count
  305. }]
  306. },
  307. {
  308. type: 'pie',
  309. name: 'Percentages',
  310. data: [
  311. {
  312. name: pageStats.group1.name,
  313. y: pageStats.group1.percentage,
  314. color: '#68b65c'
  315. },
  316. {
  317. name: pageStats.group2.name,
  318. y: pageStats.group2.percentage,
  319. color: '#FFDD00'
  320. },
  321. {
  322. name: pageStats.group3.name,
  323. y: pageStats.group3.percentage,
  324. color: '#FFA900'
  325. },
  326. {
  327. name: pageStats.group4.name,
  328. y: pageStats.group4.percentage,
  329. color: '#f15b4f'
  330. }
  331. ],
  332. center: [368, 0],
  333. size: 90,
  334. showInLegend: false,
  335. dataLabels: { enabled: false }
  336. }
  337. ]
  338. });
  339. rangesChart.setTitle({
  340. text: '<span class="chart_title">Response Time Ranges</span>',
  341. useHTML: true
  342. });
  343. $('#container_errors').sortable('#container_errors');
  344. var responsetimeDistributionChart = new Highcharts.Chart({
  345. chart: {
  346. renderTo: 'responsetimeDistributionContainer',
  347. type: 'column',
  348. marginBottom: 60
  349. },
  350. credits: { enabled: false },
  351. legend: {
  352. enabled: true,
  353. floating: true,
  354. y: 5,
  355. borderWidth: 0,
  356. itemStyle: { fontWeight: "normal" },
  357. symbolRadius: 0
  358. },
  359. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  360. navigator: {
  361. maskInside: false
  362. },
  363. xAxis: {
  364. categories: ['2646', '3223', '3799', '4376', '4953', '5529', '6106', '6682', '7259', '7836', '8412', '8989', '9565', '10142', '10719', '11295', '11872', '12448', '13025', '13602', '14178', '14755', '15331', '15908', '16484', '17061', '17638', '18214', '18791', '19367', '19944', '20521', '21097', '21674', '22250', '22827', '23404', '23980', '24557', '25133', '25710', '26286', '26863', '27440', '28016', '28593', '29169', '29746', '30323', '30899', '31476', '32052', '32629', '33206', '33782', '34359', '34935', '35512', '36089', '36665', '37242', '37818', '38395', '38971', '39548', '40125', '40701', '41278', '41854', '42431', '43008', '43584', '44161', '44737', '45314', '45891', '46467', '47044', '47620', '48197', '48773', '49350', '49927', '50503', '51080', '51656', '52233', '52810', '53386', '53963', '54539', '55116', '55693', '56269', '56846', '57422', '57999', '58576', '59152', '59729'],
  365. tickInterval: 20
  366. },
  367. yAxis: {
  368. min: 0,
  369. title: { text: 'Percentage of Requests' },
  370. reversedStacks: false
  371. },
  372. tooltip: {
  373. formatter: function() {
  374. return '<b>'+ this.x +' ms</b><br/>'+
  375. this.series.name +': '+ this.y +' %<br/>'+
  376. 'Total: '+ this.point.stackTotal + ' %';
  377. }
  378. },
  379. plotOptions: {
  380. series: {
  381. groupPadding: 0,
  382. stacking: 'normal',
  383. shadow: true
  384. }
  385. },
  386. series: [
  387. {
  388. type: 'column',
  389. color: '#68b65c',
  390. name: 'OK',
  391. data: [
  392. 0.06,0.0,0.01,0.0,0.0,0.02,0.0,0.01,0.02,0.09,0.04,0.04,0.04,0.02,0.01,0.01,0.01,0.01,0.0,0.01,0.0,0.01,0.01,0.02,0.01,0.0,0.0,0.01,0.0,0.01,0.01,0.02,0.0,0.0,0.01,0.02,0.0,0.02,0.01,0.0,0.01,0.0,0.01,0.01,0.0,0.02,0.01,0.02,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.06,0.02,0.16,0.15,0.22,0.22,0.23,0.22,0.18,0.16,0.17,0.2,0.18,0.16,0.2,0.18,0.18,0.14,0.1,0.14,0.09,0.08,0.08,0.06,0.06,0.04,0.06,0.06,0.03,0.02,0.03,0.04,0.02,0.01,0.01,0.01,0.05,0.02,0.0,0.02
  393. ],
  394. tooltip: { yDecimals: 0, ySuffix: 'ms' }
  395. },
  396. {
  397. type: 'column',
  398. color: '#f15b4f',
  399. name: 'KO',
  400. data: [
  401. 0.0,1.52,0.69,2.82,3.92,4.87,6.67,3.96,0.0,9.51,1.04,0.0,0.0,0.47,1.35,3.69,3.48,3.13,2.68,5.22,2.61,4.2,2.32,1.58,2.05,0.82,0.48,1.25,1.97,1.89,0.86,0.23,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01,0.31,0.5,1.15,0.78,0.59,0.37,0.03,0.0,0.0,0.0,0.0,0.0,0.0,0.32,0.49,0.33,1.27,0.14,0.17,0.57,0.85,0.33,0.84,0.42,0.22,0.11,0.0,0.0,0.0,0.02,0.01,0.42,1.7,1.46,1.9,1.32,0.49,0.61,0.05,0.03,0.11,0.07,0.07,0.12,0.0,0.02,0.05,0.0,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.05
  402. ],
  403. tooltip: { yDecimals: 0, ySuffix: 'ms' }
  404. }
  405. ]
  406. });
  407. responsetimeDistributionChart.setTitle({
  408. text: '<span class="chart_title">Response Time Distribution</span>',
  409. useHTML: true
  410. });
  411. var responsetimepercentilesovertimeokPercentiles = unpack([[1744803652,[2358,8057,16022,38662,38998,41338,45154,48355,54513,59769]],[1744803653,[5814,40361,43356,47105,48258,50332,52532,54638,57426,58685]],[1744803654,[14080,41197,44689,47716,48808,50270,51939,56642,58816,59948]],[1744803655,[23890,40544,43653,47437,48214,49241,50994,53537,57832,58073]],[1744803656,[32568,40660,43153,46485,47747,48709,49836,52491,57920,58400]],[1744803657,null],[1744803658,null],[1744803659,null],[1744803660,null],[1744803661,null],[1744803662,null],[1744803663,null],[1744803664,null],[1744803665,null],[1744803666,null],[1744803667,null],[1744803668,null],[1744803669,null],[1744803670,null],[1744803671,null],[1744803672,null],[1744803673,null],[1744803674,null],[1744803675,null],[1744803676,null],[1744803677,null],[1744803678,null],[1744803679,null],[1744803680,null],[1744803681,null],[1744803682,null],[1744803683,null],[1744803684,null],[1744803685,null],[1744803686,null],[1744803687,null],[1744803688,null],[1744803689,null],[1744803690,null],[1744803691,null],[1744803692,null],[1744803693,null],[1744803694,null],[1744803695,null],[1744803696,null],[1744803697,null],[1744803698,null],[1744803699,null],[1744803700,null],[1744803701,null],[1744803702,null],[1744803703,null],[1744803704,null],[1744803705,null],[1744803706,null],[1744803707,null],[1744803708,null],[1744803709,null],[1744803710,null],[1744803711,null],[1744803712,null],[1744803713,null],[1744803714,null],[1744803715,null],[1744803716,null],[1744803717,null],[1744803718,null],[1744803719,null],[1744803720,null],[1744803721,null],[1744803722,null],[1744803723,null],[1744803724,null],[1744803725,null],[1744803726,null],[1744803727,null],[1744803728,null],[1744803729,null],[1744803730,null],[1744803731,null],[1744803732,null],[1744803733,null],[1744803734,null],[1744803735,null],[1744803736,null],[1744803737,null],[1744803738,null],[1744803739,null],[1744803740,null],[1744803741,null],[1744803742,null],[1744803743,null],[1744803744,null],[1744803745,null],[1744803746,null],[1744803747,null],[1744803748,null],[1744803749,null],[1744803750,null],[1744803751,null],[1744803752,null],[1744803753,null],[1744803754,null],[1744803755,null],[1744803756,null],[1744803757,null],[1744803758,null],[1744803759,null],[1744803760,null],[1744803761,null],[1744803762,null],[1744803763,null],[1744803764,null],[1744803765,null],[1744803766,null],[1744803767,null],[1744803768,null],[1744803769,null]]);
  412. var responsetimepercentilesovertimeokPercentilesChart = new Highcharts.StockChart({
  413. chart: {
  414. renderTo: 'responsetimepercentilesovertimeokPercentilesContainer',
  415. zoomType: 'x',
  416. marginBottom: 60
  417. },
  418. colors: ['#c4fd90', '#7ff77f', '#6ff2ad', '#61ede6', '#58c7e0', '#4ea1d4', '#487ad9', '#3f52cc', '#7335dc', '#c73905', '#FFA900'],
  419. credits: { enabled: false },
  420. legend: {
  421. enabled: true,
  422. floating: true,
  423. y: -65,
  424. borderWidth: 0,
  425. itemStyle: { fontWeight: "normal" },
  426. symbolRadius: 0
  427. },
  428. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  429. navigator: {
  430. maskInside: false,
  431. baseSeries: 9
  432. },
  433. rangeSelector: {
  434. rangeSelector: { align: "left" },
  435. buttonSpacing: 0,
  436. buttonTheme: {
  437. fill: '#CFC9C6',
  438. padding: 1,
  439. stroke: '#000000',
  440. 'stroke-width': 0.25,
  441. style: {
  442. color: '#000000',
  443. fontWeight: 'bold',
  444. },
  445. states: {
  446. stroke: '#92918C',
  447. 'stroke-width': 0.25,
  448. hover: {
  449. fill: '#92918C',
  450. style: { color: 'black' }
  451. },
  452. select: {
  453. fill: '#FFA900',
  454. style: { color: 'white' }
  455. }
  456. }
  457. },
  458. buttons : [
  459. {
  460. type : 'minute',
  461. count : 1,
  462. text : '1m'
  463. }, {
  464. type : 'minute',
  465. count : 10,
  466. text : '10m'
  467. }, {
  468. type : 'hour',
  469. count : 1,
  470. text : '1h'
  471. }, {
  472. type : 'all',
  473. count : 1,
  474. text : 'All'
  475. }
  476. ],
  477. selected : 3,
  478. inputEnabled : false
  479. },
  480. xAxis: {
  481. type: 'datetime',
  482. ordinal: false,
  483. maxZoom: 10000 // three days
  484. },
  485. yAxis:[
  486. {
  487. min: 0,
  488. title: { text: 'Response Time (ms)' },
  489. opposite: false
  490. }, {
  491. min: 0,
  492. title: {
  493. text: 'Active Users',
  494. style: { color: '#FFA900' }
  495. },
  496. opposite: true
  497. }
  498. ],
  499. plotOptions: {
  500. arearange: { lineWidth: 1 },
  501. series: {
  502. dataGrouping: { enabled: false }
  503. }
  504. },
  505. series: [
  506. {
  507. pointInterval: 1000,
  508. name: 'min',
  509. data: responsetimepercentilesovertimeokPercentiles[0],
  510. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  511. type : 'area',
  512. yAxis: 0,
  513. zIndex: 10
  514. },
  515. {
  516. pointInterval: 1000,
  517. name: '25%',
  518. data: responsetimepercentilesovertimeokPercentiles[1],
  519. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  520. type : 'area',
  521. yAxis: 0,
  522. zIndex: 9
  523. },
  524. {
  525. pointInterval: 1000,
  526. name: '50%',
  527. data: responsetimepercentilesovertimeokPercentiles[2],
  528. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  529. type : 'area',
  530. yAxis: 0,
  531. zIndex: 8
  532. },
  533. {
  534. pointInterval: 1000,
  535. name: '75%',
  536. data: responsetimepercentilesovertimeokPercentiles[3],
  537. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  538. type : 'area',
  539. yAxis: 0,
  540. zIndex: 7
  541. },
  542. {
  543. pointInterval: 1000,
  544. name: '80%',
  545. data: responsetimepercentilesovertimeokPercentiles[4],
  546. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  547. type : 'area',
  548. yAxis: 0,
  549. zIndex: 6
  550. },
  551. {
  552. pointInterval: 1000,
  553. name: '85%',
  554. data: responsetimepercentilesovertimeokPercentiles[5],
  555. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  556. type : 'area',
  557. yAxis: 0,
  558. zIndex: 5
  559. },
  560. {
  561. pointInterval: 1000,
  562. name: '90%',
  563. data: responsetimepercentilesovertimeokPercentiles[6],
  564. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  565. type : 'area',
  566. yAxis: 0,
  567. zIndex: 4
  568. },
  569. {
  570. pointInterval: 1000,
  571. name: '95%',
  572. data: responsetimepercentilesovertimeokPercentiles[7],
  573. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  574. type : 'area',
  575. yAxis: 0,
  576. zIndex: 3
  577. },
  578. {
  579. pointInterval: 1000,
  580. name: '99%',
  581. data: responsetimepercentilesovertimeokPercentiles[8],
  582. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  583. type : 'area',
  584. yAxis: 0,
  585. zIndex: 2
  586. },
  587. {
  588. pointInterval: 1000,
  589. name: 'max',
  590. data: responsetimepercentilesovertimeokPercentiles[9],
  591. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  592. type : 'area',
  593. yAxis: 0,
  594. zIndex: 1
  595. },
  596. allUsersData
  597. ]
  598. });
  599. responsetimepercentilesovertimeokPercentilesChart.setTitle({
  600. text: '<span class="chart_title chart_title_">Response Time Percentiles over Time (OK)</span>',
  601. useHTML: true
  602. });
  603. var requests = unpack([[1744803652,[1204,220,984]],[1744803653,[3862,260,3602]],[1744803654,[5425,410,5015]],[1744803655,[4087,262,3825]],[1744803656,[5346,124,5222]],[1744803657,[1893,0,1893]],[1744803658,[2741,0,2741]],[1744803659,[442,0,442]],[1744803660,[0,0,0]],[1744803661,[0,0,0]],[1744803662,[0,0,0]],[1744803663,[0,0,0]],[1744803664,[0,0,0]],[1744803665,[0,0,0]],[1744803666,[0,0,0]],[1744803667,[0,0,0]],[1744803668,[0,0,0]],[1744803669,[0,0,0]],[1744803670,[0,0,0]],[1744803671,[0,0,0]],[1744803672,[0,0,0]],[1744803673,[0,0,0]],[1744803674,[0,0,0]],[1744803675,[0,0,0]],[1744803676,[0,0,0]],[1744803677,[0,0,0]],[1744803678,[0,0,0]],[1744803679,[0,0,0]],[1744803680,[0,0,0]],[1744803681,[0,0,0]],[1744803682,[0,0,0]],[1744803683,[0,0,0]],[1744803684,[0,0,0]],[1744803685,[0,0,0]],[1744803686,[0,0,0]],[1744803687,[0,0,0]],[1744803688,[0,0,0]],[1744803689,[0,0,0]],[1744803690,[0,0,0]],[1744803691,[0,0,0]],[1744803692,[0,0,0]],[1744803693,[0,0,0]],[1744803694,[0,0,0]],[1744803695,[0,0,0]],[1744803696,[0,0,0]],[1744803697,[0,0,0]],[1744803698,[0,0,0]],[1744803699,[0,0,0]],[1744803700,[0,0,0]],[1744803701,[0,0,0]],[1744803702,[0,0,0]],[1744803703,[0,0,0]],[1744803704,[0,0,0]],[1744803705,[0,0,0]],[1744803706,[0,0,0]],[1744803707,[0,0,0]],[1744803708,[0,0,0]],[1744803709,[0,0,0]],[1744803710,[0,0,0]],[1744803711,[0,0,0]],[1744803712,[0,0,0]],[1744803713,[0,0,0]],[1744803714,[0,0,0]],[1744803715,[0,0,0]],[1744803716,[0,0,0]],[1744803717,[0,0,0]],[1744803718,[0,0,0]],[1744803719,[0,0,0]],[1744803720,[0,0,0]],[1744803721,[0,0,0]],[1744803722,[0,0,0]],[1744803723,[0,0,0]],[1744803724,[0,0,0]],[1744803725,[0,0,0]],[1744803726,[0,0,0]],[1744803727,[0,0,0]],[1744803728,[0,0,0]],[1744803729,[0,0,0]],[1744803730,[0,0,0]],[1744803731,[0,0,0]],[1744803732,[0,0,0]],[1744803733,[0,0,0]],[1744803734,[0,0,0]],[1744803735,[0,0,0]],[1744803736,[0,0,0]],[1744803737,[0,0,0]],[1744803738,[0,0,0]],[1744803739,[0,0,0]],[1744803740,[0,0,0]],[1744803741,[0,0,0]],[1744803742,[0,0,0]],[1744803743,[0,0,0]],[1744803744,[0,0,0]],[1744803745,[0,0,0]],[1744803746,[0,0,0]],[1744803747,[0,0,0]],[1744803748,[0,0,0]],[1744803749,[0,0,0]],[1744803750,[0,0,0]],[1744803751,[0,0,0]],[1744803752,[0,0,0]],[1744803753,[0,0,0]],[1744803754,[0,0,0]],[1744803755,[0,0,0]],[1744803756,[0,0,0]],[1744803757,[0,0,0]],[1744803758,[0,0,0]],[1744803759,[0,0,0]],[1744803760,[0,0,0]],[1744803761,[0,0,0]],[1744803762,[0,0,0]],[1744803763,[0,0,0]],[1744803764,[0,0,0]],[1744803765,[0,0,0]],[1744803766,[0,0,0]],[1744803767,[0,0,0]],[1744803768,[0,0,0]],[1744803769,[0,0,0]]]);
  604. var requestsChart = new Highcharts.StockChart({
  605. chart: {
  606. renderTo: 'requests',
  607. zoomType: 'x',
  608. marginBottom: 60
  609. },
  610. credits: { enabled: false },
  611. legend: {
  612. enabled: true,
  613. floating: true,
  614. y: -65,
  615. borderWidth: 0,
  616. itemStyle: { fontWeight: "normal" },
  617. symbolRadius: 0
  618. },
  619. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  620. navigator: {
  621. maskInside: false
  622. },
  623. rangeSelector: {
  624. buttonSpacing: 0,
  625. buttonTheme: {
  626. fill: '#CFC9C6',
  627. padding: 1,
  628. stroke: '#000000',
  629. 'stroke-width': 0.25,
  630. style: {
  631. color: '#000000',
  632. fontWeight: 'bold',
  633. },
  634. states: {
  635. stroke: '#000000',
  636. 'stroke-width': 0.25,
  637. hover: {
  638. fill: '#92918C',
  639. style: { color: 'black' }
  640. },
  641. select: {
  642. fill: '#FFA900',
  643. style: { color: 'white' }
  644. }
  645. }
  646. },
  647. buttons : [
  648. {
  649. type : 'minute',
  650. count : 1,
  651. text : '1m'
  652. }, {
  653. type : 'minute',
  654. count : 10,
  655. text : '10m'
  656. }, {
  657. type : 'hour',
  658. count : 1,
  659. text : '1h'
  660. }, {
  661. type : 'all',
  662. count : 1,
  663. text : 'All'
  664. }
  665. ],
  666. selected : 3,
  667. inputEnabled : false
  668. },
  669. plotOptions: {
  670. series: {
  671. dataGrouping: { enabled: false }
  672. },
  673. area: {
  674. stacking: 'normal'
  675. }
  676. },
  677. xAxis: {
  678. type: 'datetime',
  679. ordinal: false,
  680. maxZoom: 10000 // three days
  681. },
  682. yAxis:[
  683. {
  684. min: 0,
  685. title: { text: 'Number of requests' },
  686. opposite: false,
  687. reversedStacks: false
  688. }, {
  689. min: 0,
  690. title: {
  691. text: 'Active Users',
  692. style: { color: '#FFA900' }
  693. },
  694. opposite: true
  695. }
  696. ],
  697. series: [
  698. {
  699. color: '#5E7BE2',
  700. name: 'All',
  701. data: requests[0],
  702. tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
  703. ,type: 'area'},
  704. allUsersData
  705. ]
  706. });
  707. requestsChart.setTitle({
  708. text: '<span class="chart_title">Number of requests per second</span>',
  709. useHTML: true
  710. });
  711. var responses = unpack([[1744803652,[0,0,0]],[1744803653,[0,0,0]],[1744803654,[1,1,0]],[1744803655,[16,16,0]],[1744803656,[4,4,0]],[1744803657,[1,1,0]],[1744803658,[6,6,0]],[1744803659,[8,8,0]],[1744803660,[28,28,0]],[1744803661,[643,18,625]],[1744803662,[2156,17,2139]],[1744803663,[2266,6,2260]],[1744803664,[5213,9,5204]],[1744803665,[801,4,797]],[1744803666,[1246,3,1243]],[1744803667,[704,2,702]],[1744803668,[946,9,937]],[1744803669,[940,7,933]],[1744803670,[967,1,966]],[1744803671,[1072,6,1066]],[1744803672,[651,5,646]],[1744803673,[566,5,561]],[1744803674,[261,8,253]],[1744803675,[344,4,340]],[1744803676,[186,6,180]],[1744803677,[4,4,0]],[1744803678,[6,6,0]],[1744803679,[5,5,0]],[1744803680,[25,6,19]],[1744803681,[161,9,152]],[1744803682,[261,5,256]],[1744803683,[248,0,248]],[1744803684,[166,1,165]],[1744803685,[81,3,78]],[1744803686,[27,0,27]],[1744803687,[0,0,0]],[1744803688,[0,0,0]],[1744803689,[1,1,0]],[1744803690,[0,0,0]],[1744803691,[800,51,749]],[1744803692,[167,8,159]],[1744803693,[180,47,133]],[1744803694,[456,97,359]],[1744803695,[141,83,58]],[1744803696,[180,108,72]],[1744803697,[71,71,0]],[1744803698,[84,79,5]],[1744803699,[84,79,5]],[1744803700,[92,92,0]],[1744803701,[1739,59,1680]],[1744803702,[268,54,214]],[1744803703,[119,42,77]],[1744803704,[77,39,38]],[1744803705,[49,39,10]],[1744803706,[88,24,64]],[1744803707,[34,18,16]],[1744803708,[40,19,21]],[1744803709,[12,9,3]],[1744803710,[11,10,1]],[1744803711,[7,7,0]],[1744803712,[107,16,91]],[1744803713,[67,5,62]],[1744803714,[78,6,72]],[1744803715,[27,0,27]],[1744803716,[11,0,11]],[1744803717,[0,0,0]],[1744803718,[0,0,0]],[1744803719,[0,0,0]],[1744803720,[0,0,0]],[1744803721,[0,0,0]],[1744803722,[0,0,0]],[1744803723,[0,0,0]],[1744803724,[0,0,0]],[1744803725,[0,0,0]],[1744803726,[0,0,0]],[1744803727,[0,0,0]],[1744803728,[0,0,0]],[1744803729,[0,0,0]],[1744803730,[0,0,0]],[1744803731,[0,0,0]],[1744803732,[0,0,0]],[1744803733,[0,0,0]],[1744803734,[0,0,0]],[1744803735,[0,0,0]],[1744803736,[0,0,0]],[1744803737,[0,0,0]],[1744803738,[0,0,0]],[1744803739,[0,0,0]],[1744803740,[0,0,0]],[1744803741,[0,0,0]],[1744803742,[0,0,0]],[1744803743,[0,0,0]],[1744803744,[0,0,0]],[1744803745,[0,0,0]],[1744803746,[0,0,0]],[1744803747,[0,0,0]],[1744803748,[0,0,0]],[1744803749,[0,0,0]],[1744803750,[0,0,0]],[1744803751,[0,0,0]],[1744803752,[0,0,0]],[1744803753,[0,0,0]],[1744803754,[0,0,0]],[1744803755,[0,0,0]],[1744803756,[0,0,0]],[1744803757,[0,0,0]],[1744803758,[0,0,0]],[1744803759,[0,0,0]],[1744803760,[0,0,0]],[1744803761,[0,0,0]],[1744803762,[0,0,0]],[1744803763,[0,0,0]],[1744803764,[0,0,0]],[1744803765,[0,0,0]],[1744803766,[0,0,0]],[1744803767,[0,0,0]],[1744803768,[0,0,0]],[1744803769,[0,0,0]]]);
  712. var requestsChart = new Highcharts.StockChart({
  713. chart: {
  714. renderTo: 'responses',
  715. zoomType: 'x',
  716. marginBottom: 60
  717. },
  718. credits: { enabled: false },
  719. legend: {
  720. enabled: true,
  721. floating: true,
  722. y: -65,
  723. borderWidth: 0,
  724. itemStyle: { fontWeight: "normal" },
  725. symbolRadius: 0
  726. },
  727. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  728. navigator: {
  729. maskInside: false
  730. },
  731. rangeSelector: {
  732. buttonSpacing: 0,
  733. buttonTheme: {
  734. fill: '#CFC9C6',
  735. padding: 1,
  736. stroke: '#000000',
  737. 'stroke-width': 0.25,
  738. style: {
  739. color: '#000000',
  740. fontWeight: 'bold',
  741. },
  742. states: {
  743. stroke: '#000000',
  744. 'stroke-width': 0.25,
  745. hover: {
  746. fill: '#92918C',
  747. style: { color: 'black' }
  748. },
  749. select: {
  750. fill: '#FFA900',
  751. style: { color: 'white' }
  752. }
  753. }
  754. },
  755. buttons : [
  756. {
  757. type : 'minute',
  758. count : 1,
  759. text : '1m'
  760. }, {
  761. type : 'minute',
  762. count : 10,
  763. text : '10m'
  764. }, {
  765. type : 'hour',
  766. count : 1,
  767. text : '1h'
  768. }, {
  769. type : 'all',
  770. count : 1,
  771. text : 'All'
  772. }
  773. ],
  774. selected : 3,
  775. inputEnabled : false
  776. },
  777. plotOptions: {
  778. series: {
  779. dataGrouping: { enabled: false }
  780. },
  781. area: {
  782. stacking: 'normal'
  783. }
  784. },
  785. xAxis: {
  786. type: 'datetime',
  787. ordinal: false,
  788. maxZoom: 10000 // three days
  789. },
  790. yAxis:[
  791. {
  792. min: 0,
  793. title: { text: 'Number of responses' },
  794. opposite: false,
  795. reversedStacks: false
  796. }, {
  797. min: 0,
  798. title: {
  799. text: 'Active Users',
  800. style: { color: '#FFA900' }
  801. },
  802. opposite: true
  803. }
  804. ],
  805. series: [
  806. {
  807. color: '#5E7BE2',
  808. name: 'All',
  809. data: responses[0],
  810. tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
  811. },
  812. {
  813. color: '#68b65c',
  814. name: 'OK',
  815. data: responses[1],
  816. tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
  817. ,type: 'area'},
  818. {
  819. color: '#f15b4f',
  820. name: 'KO',
  821. data: responses[2],
  822. tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
  823. ,type: 'area'},
  824. allUsersData,
  825. {
  826. type: 'pie',
  827. name: 'Distribution',
  828. data: [
  829. {name: 'OK', y: 1276.0, color: '#68b65c'},{name: 'KO', y: 23724.0, color: '#f15b4f'}
  830. ],
  831. center: [775, -40],
  832. size: 70,
  833. showInLegend: false,
  834. dataLabels: { enabled: false },
  835. dataGrouping: { enabled: false }
  836. }
  837. ]
  838. });
  839. requestsChart.setTitle({
  840. text: '<span class="chart_title">Number of responses per second</span>',
  841. useHTML: true
  842. });
  843. var scatterChart = new Highcharts.Chart({
  844. chart: {
  845. renderTo: 'container_response_time_dispersion',
  846. defaultSeriesType: 'scatter',
  847. zoomType: 'xy',
  848. marginBottom: 90
  849. },
  850. credits: { enabled: false },
  851. xAxis: {
  852. title: {
  853. enabled: true,
  854. text: 'Global number of requests per second',
  855. style: { fontWeight: 'bold' }
  856. },
  857. startOnTick: true,
  858. endOnTick: true,
  859. showLastLabel: true,
  860. min: 0
  861. },
  862. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  863. yAxis: {
  864. min: 0,
  865. title: { text: 'Response Time (ms)' }
  866. },
  867. tooltip: {
  868. formatter: function() {
  869. return ''+ this.y +' ms at ' + this.x + ' allreq/s';
  870. }
  871. },
  872. legend: {
  873. enabled: true,
  874. floating: true,
  875. y: 0,
  876. borderWidth: 0,
  877. itemStyle: { fontWeight: "normal" },
  878. },
  879. plotOptions: {
  880. scatter: {
  881. marker: {
  882. radius: 3,
  883. states: {
  884. hover: {
  885. enabled: true,
  886. lineColor: 'rgb(100,100,100)'
  887. }
  888. }
  889. },
  890. states: {
  891. hover: {
  892. marker: { enabled: false }
  893. }
  894. }
  895. }
  896. },
  897. series: [
  898. {
  899. type: 'scatter',
  900. color: '#68b65c',
  901. name: 'OK',
  902. data: [
  903. [1204,48355],[3862,54638],[4138,53537],[5358,52491],[5425,56642]
  904. ]},
  905. {
  906. type: 'scatter',
  907. color: '#f15b4f',
  908. name: 'KO',
  909. data: [
  910. [466,5959],[1204,60002],[1896,7749],[2759,6472],[3862,48343],[4138,46506],[5358,45649],[5425,47602]
  911. ]}
  912. ]
  913. });
  914. scatterChart.setTitle({
  915. text: '<span class="chart_title">Response Time against Global Throughput</span>',
  916. useHTML: true
  917. });
  918. });
  919. </script>
  920. </div>
  921. </body>
  922. </html>