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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970
  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">j.n.SocketException: No buffer space available (maximum connections reached?): connect<span class="value" style="display:none">0</span></td>
  177. <td class="value error-col-2 total ko">9180</td>
  178. <td class="value error-col-3 total ko">46.84%</td>
  179. </tr>
  180. <tr>
  181. <td class="error-col-1 total ko">i.n.c.ConnectTimeoutException: connection timed out after 10000 ms: ecomm.gatling.io/18.164.246.108:443<span class="value" style="display:none">1</span></td>
  182. <td class="value error-col-2 total ko">2604</td>
  183. <td class="value error-col-3 total ko">13.29%</td>
  184. </tr>
  185. <tr>
  186. <td class="error-col-1 total ko">i.n.c.ConnectTimeoutException: connection timed out after 10000 ms: ecomm.gatling.io/18.164.246.56:443<span class="value" style="display:none">2</span></td>
  187. <td class="value error-col-2 total ko">2573</td>
  188. <td class="value error-col-3 total ko">13.13%</td>
  189. </tr>
  190. <tr>
  191. <td class="error-col-1 total ko">i.n.c.ConnectTimeoutException: connection timed out after 10000 ms: ecomm.gatling.io/18.164.246.48:443<span class="value" style="display:none">3</span></td>
  192. <td class="value error-col-2 total ko">2504</td>
  193. <td class="value error-col-3 total ko">12.78%</td>
  194. </tr>
  195. <tr>
  196. <td class="error-col-1 total ko">i.n.c.ConnectTimeoutException: connection timed out after 10000 ms: ecomm.gatling.io/18.164.246.111:443<span class="value" style="display:none">4</span></td>
  197. <td class="value error-col-2 total ko">2431</td>
  198. <td class="value error-col-3 total ko">12.4%</td>
  199. </tr>
  200. <tr>
  201. <td class="error-col-1 total ko">j.n.BindException: Address already in use: getsockopt<span class="value" style="display:none">5</span></td>
  202. <td class="value error-col-2 total ko">173</td>
  203. <td class="value error-col-3 total ko">0.88%</td>
  204. </tr>
  205. <tr>
  206. <td class="error-col-1 total ko">i.n.h.s.SslHandshakeTimeoutException: handshake timed out after 10000ms<span class="value" style="display:none">6</span></td>
  207. <td class="value error-col-2 total ko">124</td>
  208. <td class="value error-col-3 total ko">0.63%</td>
  209. </tr>
  210. <tr>
  211. <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">7</span></td>
  212. <td class="value error-col-2 total ko">6</td>
  213. <td class="value error-col-3 total ko">0.03%</td>
  214. </tr>
  215. <tr>
  216. <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">8</span></td>
  217. <td class="value error-col-2 total ko">4</td>
  218. <td class="value error-col-3 total ko">0.02%</td>
  219. </tr>
  220. <tr>
  221. <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">9</span></td>
  222. <td class="value error-col-2 total ko">1</td>
  223. <td class="value error-col-3 total ko">0.01%</td>
  224. </tr>
  225. </tbody>
  226. </table>
  227. </div>
  228. <div class="schema geant">
  229. <div id="responsetimeDistributionContainer" class="geant"></div>
  230. </div>
  231. <div class="schema geant">
  232. <div id="responsetimepercentilesovertimeokPercentilesContainer" class="geant"></div>
  233. </div>
  234. <div class="schema geant">
  235. <div id="requests" class="geant"></div>
  236. </div>
  237. <div class="schema geant">
  238. <div id="responses" class="geant"></div>
  239. </div>
  240. <div class="schema geant">
  241. <div id="container_response_time_dispersion" class="geant"></div>
  242. </div>
  243. </div>
  244. </div>
  245. </div>
  246. </div>
  247. </div>
  248. </div>
  249. <script>
  250. var pageStats = stats.contents['req_cart-page-scena--506128127'].stats;
  251. $(document).ready(function() {
  252. $('.simulation-tooltip').popover({trigger:'hover', placement:'left'});
  253. setDetailsLinkUrl();
  254. setDetailsMenu();
  255. setActiveMenu();
  256. fillStats(pageStats);
  257. Highcharts.setOptions({
  258. global: { useUTC: false }
  259. });
  260. var rangesChart = new Highcharts.Chart({
  261. chart: {
  262. renderTo: 'ranges',
  263. marginRight: 100
  264. },
  265. credits: { enabled: false },
  266. legend: { enabled: false },
  267. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  268. xAxis: {
  269. categories: [
  270. pageStats.group1.htmlName,
  271. pageStats.group2.htmlName,
  272. pageStats.group3.htmlName,
  273. pageStats.group4.htmlName
  274. ]
  275. },
  276. yAxis: {
  277. title: { text: 'Number of Requests' },
  278. reversedStacks: false
  279. },
  280. tooltip: {
  281. formatter: function() {
  282. var s;
  283. if (this.point.name) { // the pie chart
  284. s = ''+ this.point.name +': '+ this.y +'% requests';
  285. } else {
  286. s = ''+ this.y + ' requests';
  287. }
  288. return s;
  289. }
  290. },
  291. plotOptions: {
  292. series: {
  293. stacking: 'normal',
  294. shadow: true
  295. }
  296. },
  297. series: [
  298. {
  299. type: 'column',
  300. data: [{
  301. color: '#68b65c',
  302. y: pageStats.group1.count
  303. },
  304. {
  305. color: '#FFDD00',
  306. y: pageStats.group2.count
  307. },
  308. {
  309. color: '#FFA900',
  310. y: pageStats.group3.count
  311. },
  312. {
  313. color: '#f15b4f',
  314. y: pageStats.group4.count
  315. }]
  316. },
  317. {
  318. type: 'pie',
  319. name: 'Percentages',
  320. data: [
  321. {
  322. name: pageStats.group1.name,
  323. y: pageStats.group1.percentage,
  324. color: '#68b65c'
  325. },
  326. {
  327. name: pageStats.group2.name,
  328. y: pageStats.group2.percentage,
  329. color: '#FFDD00'
  330. },
  331. {
  332. name: pageStats.group3.name,
  333. y: pageStats.group3.percentage,
  334. color: '#FFA900'
  335. },
  336. {
  337. name: pageStats.group4.name,
  338. y: pageStats.group4.percentage,
  339. color: '#f15b4f'
  340. }
  341. ],
  342. center: [368, 0],
  343. size: 90,
  344. showInLegend: false,
  345. dataLabels: { enabled: false }
  346. }
  347. ]
  348. });
  349. rangesChart.setTitle({
  350. text: '<span class="chart_title">Response Time Ranges</span>',
  351. useHTML: true
  352. });
  353. $('#container_errors').sortable('#container_errors');
  354. var responsetimeDistributionChart = new Highcharts.Chart({
  355. chart: {
  356. renderTo: 'responsetimeDistributionContainer',
  357. type: 'column',
  358. marginBottom: 60
  359. },
  360. credits: { enabled: false },
  361. legend: {
  362. enabled: true,
  363. floating: true,
  364. y: 5,
  365. borderWidth: 0,
  366. itemStyle: { fontWeight: "normal" },
  367. symbolRadius: 0
  368. },
  369. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  370. navigator: {
  371. maskInside: false
  372. },
  373. xAxis: {
  374. categories: ['596', '1193', '1790', '2387', '2984', '3581', '4178', '4775', '5372', '5969', '6566', '7164', '7761', '8358', '8955', '9552', '10149', '10746', '11343', '11940', '12537', '13134', '13732', '14329', '14926', '15523', '16120', '16717', '17314', '17911', '18508', '19105', '19702', '20300', '20897', '21494', '22091', '22688', '23285', '23882', '24479', '25076', '25673', '26270', '26868', '27465', '28062', '28659', '29256', '29853', '30450', '31047', '31644', '32241', '32838', '33435', '34033', '34630', '35227', '35824', '36421', '37018', '37615', '38212', '38809', '39406', '40003', '40601', '41198', '41795', '42392', '42989', '43586', '44183', '44780', '45377', '45974', '46571', '47169', '47766', '48363', '48960', '49557', '50154', '50751', '51348', '51945', '52542', '53139', '53737', '54334', '54931', '55528', '56125', '56722', '57319', '57916', '58513', '59110', '59707'],
  375. tickInterval: 20
  376. },
  377. yAxis: {
  378. min: 0,
  379. title: { text: 'Percentage of Requests' },
  380. reversedStacks: false
  381. },
  382. tooltip: {
  383. formatter: function() {
  384. return '<b>'+ this.x +' ms</b><br/>'+
  385. this.series.name +': '+ this.y +' %<br/>'+
  386. 'Total: '+ this.point.stackTotal + ' %';
  387. }
  388. },
  389. plotOptions: {
  390. series: {
  391. groupPadding: 0,
  392. stacking: 'normal',
  393. shadow: true
  394. }
  395. },
  396. series: [
  397. {
  398. type: 'column',
  399. color: '#68b65c',
  400. name: 'OK',
  401. data: [
  402. 0.0,0.0,0.04,0.0,0.19,0.46,0.13,0.02,0.0,0.23,0.68,0.51,2.1,2.52,2.0,1.76,2.14,1.98,0.26,0.16,0.07,0.06,0.09,0.42,0.3,0.09,0.08,0.03,0.02,0.03,0.12,0.16,0.14,0.13,0.12,0.15,0.26,0.24,0.33,0.41,0.18,0.28,0.2,0.23,0.13,0.12,0.1,0.1,0.07,0.08,0.06,0.06,0.1,0.18,0.15,0.2,0.08,0.04,0.1,0.08,0.08,0.03,0.02,0.0,0.04,0.03,0.03,0.06,0.02,0.02,0.01,0.0,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0
  403. ],
  404. tooltip: { yDecimals: 0, ySuffix: 'ms' }
  405. },
  406. {
  407. type: 'column',
  408. color: '#f15b4f',
  409. name: 'KO',
  410. data: [
  411. 3.06,3.54,2.35,5.83,12.74,1.69,0.26,6.08,0.72,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.21,0.14,0.05,0.0,0.0,0.0,0.02,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.14,0.1,0.0,0.12,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.02,0.08,0.0,0.04,0.0,0.88,0.51,0.56,0.36,0.0,0.0,0.02,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.34,16.01,15.88,4.91,1.48,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.04
  412. ],
  413. tooltip: { yDecimals: 0, ySuffix: 'ms' }
  414. }
  415. ]
  416. });
  417. responsetimeDistributionChart.setTitle({
  418. text: '<span class="chart_title">Response Time Distribution</span>',
  419. useHTML: true
  420. });
  421. var responsetimepercentilesovertimeokPercentiles = unpack([[1744913729,[1394,7380,8201,8741,9475,10623,10830,10879,11760,17148]],[1744913730,[7673,9130,9858,10397,10436,10645,11113,12643,27775,41121]],[1744913731,[8484,22464,24488,28651,30615,32371,33529,35993,40156,51108]],[1744913732,[8629,14924,23047,29145,32393,33422,35292,39401,42204,47120]],[1744913733,[8517,19269,23860,32304,32922,33540,35689,38546,47111,59346]],[1744913734,[14656,20166,23555,33593,34629,35306,38739,39718,40335,40335]],[1744913735,null],[1744913736,null],[1744913737,null],[1744913738,null],[1744913739,null],[1744913740,null],[1744913741,null],[1744913742,null],[1744913743,null],[1744913744,null],[1744913745,null],[1744913746,null],[1744913747,null],[1744913748,null],[1744913749,null],[1744913750,null],[1744913751,null],[1744913752,null],[1744913753,null],[1744913754,null],[1744913755,null],[1744913756,null],[1744913757,null],[1744913758,null],[1744913759,null],[1744913760,null],[1744913761,null],[1744913762,null],[1744913763,null],[1744913764,null],[1744913765,null],[1744913766,null],[1744913767,null],[1744913768,null],[1744913769,null],[1744913770,null],[1744913771,null],[1744913772,null],[1744913773,null],[1744913774,null],[1744913775,null],[1744913776,null],[1744913777,null],[1744913778,null],[1744913779,null],[1744913780,null],[1744913781,null],[1744913782,null],[1744913783,null],[1744913784,null],[1744913785,null],[1744913786,null],[1744913787,null],[1744913788,null],[1744913789,null],[1744913790,null],[1744913791,null],[1744913792,null],[1744913793,null],[1744913794,null],[1744913795,null],[1744913796,null],[1744913797,null],[1744913798,null],[1744913799,null],[1744913800,null],[1744913801,null],[1744913802,null],[1744913803,null],[1744913804,null],[1744913805,null],[1744913806,null],[1744913807,null],[1744913808,null],[1744913809,null],[1744913810,null],[1744913811,null],[1744913812,null],[1744913813,null],[1744913814,null],[1744913815,null],[1744913816,null],[1744913817,null],[1744913818,null],[1744913819,null],[1744913820,null],[1744913821,null],[1744913822,null],[1744913823,null],[1744913824,null],[1744913825,null],[1744913826,null],[1744913827,null],[1744913828,null],[1744913829,null],[1744913830,null],[1744913831,null],[1744913832,null]]);
  422. var responsetimepercentilesovertimeokPercentilesChart = new Highcharts.StockChart({
  423. chart: {
  424. renderTo: 'responsetimepercentilesovertimeokPercentilesContainer',
  425. zoomType: 'x',
  426. marginBottom: 60
  427. },
  428. colors: ['#c4fd90', '#7ff77f', '#6ff2ad', '#61ede6', '#58c7e0', '#4ea1d4', '#487ad9', '#3f52cc', '#7335dc', '#c73905', '#FFA900'],
  429. credits: { enabled: false },
  430. legend: {
  431. enabled: true,
  432. floating: true,
  433. y: -65,
  434. borderWidth: 0,
  435. itemStyle: { fontWeight: "normal" },
  436. symbolRadius: 0
  437. },
  438. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  439. navigator: {
  440. maskInside: false,
  441. baseSeries: 9
  442. },
  443. rangeSelector: {
  444. rangeSelector: { align: "left" },
  445. buttonSpacing: 0,
  446. buttonTheme: {
  447. fill: '#CFC9C6',
  448. padding: 1,
  449. stroke: '#000000',
  450. 'stroke-width': 0.25,
  451. style: {
  452. color: '#000000',
  453. fontWeight: 'bold',
  454. },
  455. states: {
  456. stroke: '#92918C',
  457. 'stroke-width': 0.25,
  458. hover: {
  459. fill: '#92918C',
  460. style: { color: 'black' }
  461. },
  462. select: {
  463. fill: '#FFA900',
  464. style: { color: 'white' }
  465. }
  466. }
  467. },
  468. buttons : [
  469. {
  470. type : 'minute',
  471. count : 1,
  472. text : '1m'
  473. }, {
  474. type : 'minute',
  475. count : 10,
  476. text : '10m'
  477. }, {
  478. type : 'hour',
  479. count : 1,
  480. text : '1h'
  481. }, {
  482. type : 'all',
  483. count : 1,
  484. text : 'All'
  485. }
  486. ],
  487. selected : 3,
  488. inputEnabled : false
  489. },
  490. xAxis: {
  491. type: 'datetime',
  492. ordinal: false,
  493. maxZoom: 10000 // three days
  494. },
  495. yAxis:[
  496. {
  497. min: 0,
  498. title: { text: 'Response Time (ms)' },
  499. opposite: false
  500. }, {
  501. min: 0,
  502. title: {
  503. text: 'Active Users',
  504. style: { color: '#FFA900' }
  505. },
  506. opposite: true
  507. }
  508. ],
  509. plotOptions: {
  510. arearange: { lineWidth: 1 },
  511. series: {
  512. dataGrouping: { enabled: false }
  513. }
  514. },
  515. series: [
  516. {
  517. pointInterval: 1000,
  518. name: 'min',
  519. data: responsetimepercentilesovertimeokPercentiles[0],
  520. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  521. type : 'area',
  522. yAxis: 0,
  523. zIndex: 10
  524. },
  525. {
  526. pointInterval: 1000,
  527. name: '25%',
  528. data: responsetimepercentilesovertimeokPercentiles[1],
  529. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  530. type : 'area',
  531. yAxis: 0,
  532. zIndex: 9
  533. },
  534. {
  535. pointInterval: 1000,
  536. name: '50%',
  537. data: responsetimepercentilesovertimeokPercentiles[2],
  538. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  539. type : 'area',
  540. yAxis: 0,
  541. zIndex: 8
  542. },
  543. {
  544. pointInterval: 1000,
  545. name: '75%',
  546. data: responsetimepercentilesovertimeokPercentiles[3],
  547. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  548. type : 'area',
  549. yAxis: 0,
  550. zIndex: 7
  551. },
  552. {
  553. pointInterval: 1000,
  554. name: '80%',
  555. data: responsetimepercentilesovertimeokPercentiles[4],
  556. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  557. type : 'area',
  558. yAxis: 0,
  559. zIndex: 6
  560. },
  561. {
  562. pointInterval: 1000,
  563. name: '85%',
  564. data: responsetimepercentilesovertimeokPercentiles[5],
  565. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  566. type : 'area',
  567. yAxis: 0,
  568. zIndex: 5
  569. },
  570. {
  571. pointInterval: 1000,
  572. name: '90%',
  573. data: responsetimepercentilesovertimeokPercentiles[6],
  574. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  575. type : 'area',
  576. yAxis: 0,
  577. zIndex: 4
  578. },
  579. {
  580. pointInterval: 1000,
  581. name: '95%',
  582. data: responsetimepercentilesovertimeokPercentiles[7],
  583. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  584. type : 'area',
  585. yAxis: 0,
  586. zIndex: 3
  587. },
  588. {
  589. pointInterval: 1000,
  590. name: '99%',
  591. data: responsetimepercentilesovertimeokPercentiles[8],
  592. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  593. type : 'area',
  594. yAxis: 0,
  595. zIndex: 2
  596. },
  597. {
  598. pointInterval: 1000,
  599. name: 'max',
  600. data: responsetimepercentilesovertimeokPercentiles[9],
  601. tooltip: { yDecimals: 0, ySuffix: 'ms' },
  602. type : 'area',
  603. yAxis: 0,
  604. zIndex: 1
  605. },
  606. allUsersData
  607. ]
  608. });
  609. responsetimepercentilesovertimeokPercentilesChart.setTitle({
  610. text: '<span class="chart_title chart_title_">Response Time Percentiles over Time (OK)</span>',
  611. useHTML: true
  612. });
  613. var requests = unpack([[1744913729,[2192,2192,0]],[1744913730,[1775,1725,50]],[1744913731,[5157,705,4452]],[1744913732,[3397,408,2989]],[1744913733,[4456,339,4117]],[1744913734,[5924,31,5893]],[1744913735,[1333,0,1333]],[1744913736,[766,0,766]],[1744913737,[0,0,0]],[1744913738,[0,0,0]],[1744913739,[0,0,0]],[1744913740,[0,0,0]],[1744913741,[0,0,0]],[1744913742,[0,0,0]],[1744913743,[0,0,0]],[1744913744,[0,0,0]],[1744913745,[0,0,0]],[1744913746,[0,0,0]],[1744913747,[0,0,0]],[1744913748,[0,0,0]],[1744913749,[0,0,0]],[1744913750,[0,0,0]],[1744913751,[0,0,0]],[1744913752,[0,0,0]],[1744913753,[0,0,0]],[1744913754,[0,0,0]],[1744913755,[0,0,0]],[1744913756,[0,0,0]],[1744913757,[0,0,0]],[1744913758,[0,0,0]],[1744913759,[0,0,0]],[1744913760,[0,0,0]],[1744913761,[0,0,0]],[1744913762,[0,0,0]],[1744913763,[0,0,0]],[1744913764,[0,0,0]],[1744913765,[0,0,0]],[1744913766,[0,0,0]],[1744913767,[0,0,0]],[1744913768,[0,0,0]],[1744913769,[0,0,0]],[1744913770,[0,0,0]],[1744913771,[0,0,0]],[1744913772,[0,0,0]],[1744913773,[0,0,0]],[1744913774,[0,0,0]],[1744913775,[0,0,0]],[1744913776,[0,0,0]],[1744913777,[0,0,0]],[1744913778,[0,0,0]],[1744913779,[0,0,0]],[1744913780,[0,0,0]],[1744913781,[0,0,0]],[1744913782,[0,0,0]],[1744913783,[0,0,0]],[1744913784,[0,0,0]],[1744913785,[0,0,0]],[1744913786,[0,0,0]],[1744913787,[0,0,0]],[1744913788,[0,0,0]],[1744913789,[0,0,0]],[1744913790,[0,0,0]],[1744913791,[0,0,0]],[1744913792,[0,0,0]],[1744913793,[0,0,0]],[1744913794,[0,0,0]],[1744913795,[0,0,0]],[1744913796,[0,0,0]],[1744913797,[0,0,0]],[1744913798,[0,0,0]],[1744913799,[0,0,0]],[1744913800,[0,0,0]],[1744913801,[0,0,0]],[1744913802,[0,0,0]],[1744913803,[0,0,0]],[1744913804,[0,0,0]],[1744913805,[0,0,0]],[1744913806,[0,0,0]],[1744913807,[0,0,0]],[1744913808,[0,0,0]],[1744913809,[0,0,0]],[1744913810,[0,0,0]],[1744913811,[0,0,0]],[1744913812,[0,0,0]],[1744913813,[0,0,0]],[1744913814,[0,0,0]],[1744913815,[0,0,0]],[1744913816,[0,0,0]],[1744913817,[0,0,0]],[1744913818,[0,0,0]],[1744913819,[0,0,0]],[1744913820,[0,0,0]],[1744913821,[0,0,0]],[1744913822,[0,0,0]],[1744913823,[0,0,0]],[1744913824,[0,0,0]],[1744913825,[0,0,0]],[1744913826,[0,0,0]],[1744913827,[0,0,0]],[1744913828,[0,0,0]],[1744913829,[0,0,0]],[1744913830,[0,0,0]],[1744913831,[0,0,0]],[1744913832,[0,0,0]]]);
  614. var requestsChart = new Highcharts.StockChart({
  615. chart: {
  616. renderTo: 'requests',
  617. zoomType: 'x',
  618. marginBottom: 60
  619. },
  620. credits: { enabled: false },
  621. legend: {
  622. enabled: true,
  623. floating: true,
  624. y: -65,
  625. borderWidth: 0,
  626. itemStyle: { fontWeight: "normal" },
  627. symbolRadius: 0
  628. },
  629. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  630. navigator: {
  631. maskInside: false
  632. },
  633. rangeSelector: {
  634. buttonSpacing: 0,
  635. buttonTheme: {
  636. fill: '#CFC9C6',
  637. padding: 1,
  638. stroke: '#000000',
  639. 'stroke-width': 0.25,
  640. style: {
  641. color: '#000000',
  642. fontWeight: 'bold',
  643. },
  644. states: {
  645. stroke: '#000000',
  646. 'stroke-width': 0.25,
  647. hover: {
  648. fill: '#92918C',
  649. style: { color: 'black' }
  650. },
  651. select: {
  652. fill: '#FFA900',
  653. style: { color: 'white' }
  654. }
  655. }
  656. },
  657. buttons : [
  658. {
  659. type : 'minute',
  660. count : 1,
  661. text : '1m'
  662. }, {
  663. type : 'minute',
  664. count : 10,
  665. text : '10m'
  666. }, {
  667. type : 'hour',
  668. count : 1,
  669. text : '1h'
  670. }, {
  671. type : 'all',
  672. count : 1,
  673. text : 'All'
  674. }
  675. ],
  676. selected : 3,
  677. inputEnabled : false
  678. },
  679. plotOptions: {
  680. series: {
  681. dataGrouping: { enabled: false }
  682. },
  683. area: {
  684. stacking: 'normal'
  685. }
  686. },
  687. xAxis: {
  688. type: 'datetime',
  689. ordinal: false,
  690. maxZoom: 10000 // three days
  691. },
  692. yAxis:[
  693. {
  694. min: 0,
  695. title: { text: 'Number of requests' },
  696. opposite: false,
  697. reversedStacks: false
  698. }, {
  699. min: 0,
  700. title: {
  701. text: 'Active Users',
  702. style: { color: '#FFA900' }
  703. },
  704. opposite: true
  705. }
  706. ],
  707. series: [
  708. {
  709. color: '#5E7BE2',
  710. name: 'All',
  711. data: requests[0],
  712. tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
  713. ,type: 'area'},
  714. allUsersData
  715. ]
  716. });
  717. requestsChart.setTitle({
  718. text: '<span class="chart_title">Number of requests per second</span>',
  719. useHTML: true
  720. });
  721. var responses = unpack([[1744913729,[0,0,0]],[1744913730,[1,1,0]],[1744913731,[12,12,0]],[1744913732,[57,57,0]],[1744913733,[141,141,0]],[1744913734,[9,9,0]],[1744913735,[122,122,0]],[1744913736,[4178,142,4036]],[1744913737,[3752,636,3116]],[1744913738,[1826,813,1013]],[1744913739,[1518,606,912]],[1744913740,[899,899,0]],[1744913741,[386,323,63]],[1744913742,[113,71,42]],[1744913743,[12,12,0]],[1744913744,[9,9,0]],[1744913745,[38,38,0]],[1744913746,[82,82,0]],[1744913747,[83,83,0]],[1744913748,[38,38,0]],[1744913749,[26,20,6]],[1744913750,[52,52,0]],[1744913751,[72,49,23]],[1744913752,[83,46,37]],[1744913753,[89,89,0]],[1744913754,[107,107,0]],[1744913755,[188,156,32]],[1744913756,[131,127,4]],[1744913757,[79,77,2]],[1744913758,[71,70,1]],[1744913759,[56,47,9]],[1744913760,[64,51,13]],[1744913761,[185,37,148]],[1744913762,[143,29,114]],[1744913763,[119,33,86]],[1744913764,[142,39,103]],[1744913765,[227,71,156]],[1744913766,[40,39,1]],[1744913767,[50,47,3]],[1744913768,[25,25,0]],[1744913769,[21,21,0]],[1744913770,[12,12,0]],[1744913771,[771,16,755]],[1744913772,[2934,16,2918]],[1744913773,[2855,9,2846]],[1744913774,[2499,8,2491]],[1744913775,[653,2,651]],[1744913776,[3,3,0]],[1744913777,[3,2,1]],[1744913778,[1,0,1]],[1744913779,[1,1,0]],[1744913780,[3,1,2]],[1744913781,[3,0,3]],[1744913782,[1,1,0]],[1744913783,[1,0,1]],[1744913784,[0,0,0]],[1744913785,[0,0,0]],[1744913786,[0,0,0]],[1744913787,[0,0,0]],[1744913788,[1,1,0]],[1744913789,[1,1,0]],[1744913790,[1,0,1]],[1744913791,[6,0,6]],[1744913792,[3,1,2]],[1744913793,[2,0,2]],[1744913794,[0,0,0]],[1744913795,[0,0,0]],[1744913796,[0,0,0]],[1744913797,[0,0,0]],[1744913798,[0,0,0]],[1744913799,[0,0,0]],[1744913800,[0,0,0]],[1744913801,[0,0,0]],[1744913802,[0,0,0]],[1744913803,[0,0,0]],[1744913804,[0,0,0]],[1744913805,[0,0,0]],[1744913806,[0,0,0]],[1744913807,[0,0,0]],[1744913808,[0,0,0]],[1744913809,[0,0,0]],[1744913810,[0,0,0]],[1744913811,[0,0,0]],[1744913812,[0,0,0]],[1744913813,[0,0,0]],[1744913814,[0,0,0]],[1744913815,[0,0,0]],[1744913816,[0,0,0]],[1744913817,[0,0,0]],[1744913818,[0,0,0]],[1744913819,[0,0,0]],[1744913820,[0,0,0]],[1744913821,[0,0,0]],[1744913822,[0,0,0]],[1744913823,[0,0,0]],[1744913824,[0,0,0]],[1744913825,[0,0,0]],[1744913826,[0,0,0]],[1744913827,[0,0,0]],[1744913828,[0,0,0]],[1744913829,[0,0,0]],[1744913830,[0,0,0]],[1744913831,[0,0,0]],[1744913832,[0,0,0]]]);
  722. var requestsChart = new Highcharts.StockChart({
  723. chart: {
  724. renderTo: 'responses',
  725. zoomType: 'x',
  726. marginBottom: 60
  727. },
  728. credits: { enabled: false },
  729. legend: {
  730. enabled: true,
  731. floating: true,
  732. y: -65,
  733. borderWidth: 0,
  734. itemStyle: { fontWeight: "normal" },
  735. symbolRadius: 0
  736. },
  737. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  738. navigator: {
  739. maskInside: false
  740. },
  741. rangeSelector: {
  742. buttonSpacing: 0,
  743. buttonTheme: {
  744. fill: '#CFC9C6',
  745. padding: 1,
  746. stroke: '#000000',
  747. 'stroke-width': 0.25,
  748. style: {
  749. color: '#000000',
  750. fontWeight: 'bold',
  751. },
  752. states: {
  753. stroke: '#000000',
  754. 'stroke-width': 0.25,
  755. hover: {
  756. fill: '#92918C',
  757. style: { color: 'black' }
  758. },
  759. select: {
  760. fill: '#FFA900',
  761. style: { color: 'white' }
  762. }
  763. }
  764. },
  765. buttons : [
  766. {
  767. type : 'minute',
  768. count : 1,
  769. text : '1m'
  770. }, {
  771. type : 'minute',
  772. count : 10,
  773. text : '10m'
  774. }, {
  775. type : 'hour',
  776. count : 1,
  777. text : '1h'
  778. }, {
  779. type : 'all',
  780. count : 1,
  781. text : 'All'
  782. }
  783. ],
  784. selected : 3,
  785. inputEnabled : false
  786. },
  787. plotOptions: {
  788. series: {
  789. dataGrouping: { enabled: false }
  790. },
  791. area: {
  792. stacking: 'normal'
  793. }
  794. },
  795. xAxis: {
  796. type: 'datetime',
  797. ordinal: false,
  798. maxZoom: 10000 // three days
  799. },
  800. yAxis:[
  801. {
  802. min: 0,
  803. title: { text: 'Number of responses' },
  804. opposite: false,
  805. reversedStacks: false
  806. }, {
  807. min: 0,
  808. title: {
  809. text: 'Active Users',
  810. style: { color: '#FFA900' }
  811. },
  812. opposite: true
  813. }
  814. ],
  815. series: [
  816. {
  817. color: '#5E7BE2',
  818. name: 'All',
  819. data: responses[0],
  820. tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
  821. },
  822. {
  823. color: '#68b65c',
  824. name: 'OK',
  825. data: responses[1],
  826. tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
  827. ,type: 'area'},
  828. {
  829. color: '#f15b4f',
  830. name: 'KO',
  831. data: responses[2],
  832. tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 }
  833. ,type: 'area'},
  834. allUsersData,
  835. {
  836. type: 'pie',
  837. name: 'Distribution',
  838. data: [
  839. {name: 'OK', y: 5400.0, color: '#68b65c'},{name: 'KO', y: 19600.0, color: '#f15b4f'}
  840. ],
  841. center: [775, -40],
  842. size: 70,
  843. showInLegend: false,
  844. dataLabels: { enabled: false },
  845. dataGrouping: { enabled: false }
  846. }
  847. ]
  848. });
  849. requestsChart.setTitle({
  850. text: '<span class="chart_title">Number of responses per second</span>',
  851. useHTML: true
  852. });
  853. var scatterChart = new Highcharts.Chart({
  854. chart: {
  855. renderTo: 'container_response_time_dispersion',
  856. defaultSeriesType: 'scatter',
  857. zoomType: 'xy',
  858. marginBottom: 90
  859. },
  860. credits: { enabled: false },
  861. xAxis: {
  862. title: {
  863. enabled: true,
  864. text: 'Global number of requests per second',
  865. style: { fontWeight: 'bold' }
  866. },
  867. startOnTick: true,
  868. endOnTick: true,
  869. showLastLabel: true,
  870. min: 0
  871. },
  872. title: { text: 'A title to let highcharts reserve the place for the title set later' },
  873. yAxis: {
  874. min: 0,
  875. title: { text: 'Response Time (ms)' }
  876. },
  877. tooltip: {
  878. formatter: function() {
  879. return ''+ this.y +' ms at ' + this.x + ' allreq/s';
  880. }
  881. },
  882. legend: {
  883. enabled: true,
  884. floating: true,
  885. y: 0,
  886. borderWidth: 0,
  887. itemStyle: { fontWeight: "normal" },
  888. },
  889. plotOptions: {
  890. scatter: {
  891. marker: {
  892. radius: 3,
  893. states: {
  894. hover: {
  895. enabled: true,
  896. lineColor: 'rgb(100,100,100)'
  897. }
  898. }
  899. },
  900. states: {
  901. hover: {
  902. marker: { enabled: false }
  903. }
  904. }
  905. }
  906. },
  907. series: [
  908. {
  909. type: 'scatter',
  910. color: '#68b65c',
  911. name: 'OK',
  912. data: [
  913. [1775,12643],[2192,10879],[3562,39401],[4882,38546],[5196,35993],[5954,39718]
  914. ]},
  915. {
  916. type: 'scatter',
  917. color: '#f15b4f',
  918. name: 'KO',
  919. data: [
  920. [1198,640],[1693,4016],[1775,41184],[3562,42081],[4882,41653],[5196,42054],[5954,19870]
  921. ]}
  922. ]
  923. });
  924. scatterChart.setTitle({
  925. text: '<span class="chart_title">Response Time against Global Throughput</span>',
  926. useHTML: true
  927. });
  928. });
  929. </script>
  930. </div>
  931. </body>
  932. </html>