diff --git a/locust/webui/dist/assets/index-698db2ae.js b/locust/webui/dist/assets/index-fcdc76c8.js similarity index 99% rename from locust/webui/dist/assets/index-698db2ae.js rename to locust/webui/dist/assets/index-fcdc76c8.js index 4bd6bf98d6..baab57cf8a 100644 --- a/locust/webui/dist/assets/index-698db2ae.js +++ b/locust/webui/dist/assets/index-fcdc76c8.js @@ -168,7 +168,7 @@ ${W.current.stack} `});++n0&&r.push({type:"text",value:` `}),r}function rE(e){let t=0,r=e.charCodeAt(t);for(;r===9||r===32;)t++,r=e.charCodeAt(t);return e.slice(t)}function nE(e,t){const r=rve(e,t),n=r.one(e,void 0),i=jpe(r),a=Array.isArray(n)?{type:"root",children:n}:n||{type:"root",children:[]};return i&&a.children.push({type:"text",value:` -`},i),a}function sve(e,t){return e&&"run"in e?async function(r,n){const i=nE(r,t);await e.run(i,n)}:function(r){return nE(r,t||e)}}function iE(e){if(e)throw e}var Ym=Object.prototype.hasOwnProperty,V6=Object.prototype.toString,aE=Object.defineProperty,oE=Object.getOwnPropertyDescriptor,sE=function(t){return typeof Array.isArray=="function"?Array.isArray(t):V6.call(t)==="[object Array]"},lE=function(t){if(!t||V6.call(t)!=="[object Object]")return!1;var r=Ym.call(t,"constructor"),n=t.constructor&&t.constructor.prototype&&Ym.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!r&&!n)return!1;var i;for(i in t);return typeof i>"u"||Ym.call(t,i)},uE=function(t,r){aE&&r.name==="__proto__"?aE(t,r.name,{enumerable:!0,configurable:!0,value:r.newValue,writable:!0}):t[r.name]=r.newValue},cE=function(t,r){if(r==="__proto__")if(Ym.call(t,r)){if(oE)return oE(t,r).value}else return;return t[r]},lve=function e(){var t,r,n,i,a,o,s=arguments[0],l=1,u=arguments.length,c=!1;for(typeof s=="boolean"&&(c=s,s=arguments[1]||{},l=2),(s==null||typeof s!="object"&&typeof s!="function")&&(s={});lo.length;let l;s&&o.push(i);try{l=e.apply(this,o)}catch(u){const c=u;if(s&&r)throw c;return i(c)}s||(l instanceof Promise?l.then(a,i):l instanceof Error?i(l):a(l))}function i(o,...s){r||(r=!0,t(o,...s))}function a(o){i(null,o)}}const da={basename:fve,dirname:dve,extname:hve,join:pve,sep:"/"};function fve(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');Mv(e);let r=0,n=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){r=i+1;break}}else n<0&&(a=!0,n=i+1);return n<0?"":e.slice(r,n)}if(t===e)return"";let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){r=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(n=i):(s=-1,n=o));return r===n?n=o:n<0&&(n=e.length),e.slice(r,n)}function dve(e){if(Mv(e),e.length===0)return".";let t=-1,r=e.length,n;for(;--r;)if(e.codePointAt(r)===47){if(n){t=r;break}}else n||(n=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function hve(e){Mv(e);let t=e.length,r=-1,n=0,i=-1,a=0,o;for(;t--;){const s=e.codePointAt(t);if(s===47){if(o){n=t+1;break}continue}r<0&&(o=!0,r=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||r<0||a===0||a===1&&i===r-1&&i===n+1?"":e.slice(i,r)}function pve(...e){let t=-1,r;for(;++t0&&e.codePointAt(e.length-1)===47&&(r+="/"),t?"/"+r:r}function gve(e,t){let r="",n=0,i=-1,a=0,o=-1,s,l;for(;++o<=e.length;){if(o2){if(l=r.lastIndexOf("/"),l!==r.length-1){l<0?(r="",n=0):(r=r.slice(0,l),n=r.length-1-r.lastIndexOf("/")),i=o,a=0;continue}}else if(r.length>0){r="",n=0,i=o,a=0;continue}}t&&(r=r.length>0?r+"/..":"..",n=2)}else r.length>0?r+="/"+e.slice(i+1,o):r=e.slice(i+1,o),n=o-i-1;i=o,a=0}else s===46&&a>-1?a++:a=-1}return r}function Mv(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const mve={cwd:yve};function yve(){return"/"}function sT(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function xve(e){if(typeof e=="string")e=new URL(e);else if(!sT(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return Sve(e)}function Sve(e){if(e.hostname!==""){const n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}const t=e.pathname;let r=-1;for(;++r0){let[h,...p]=c;const v=n[d][1];oT(v)&&oT(h)&&(h=ob(!0,v,h)),n[d]=[u,h,...p]}}}}const Cve=new sk().freeze();function cb(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function fb(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function db(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function dE(e){if(!oT(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function hE(e,t,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Ag(e){return Tve(e)?e:new G6(e)}function Tve(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function Ave(e){return typeof e=="string"||Mve(e)}function Mve(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const pE={}.hasOwnProperty,kve="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",vE=[],gE={allowDangerousHtml:!0},Ive=/^(https?|ircs?|mailto|xmpp)$/i,Pve=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function Dve(e){const t=e.allowedElements,r=e.allowElement,n=e.children||"",i=e.className,a=e.components,o=e.disallowedElements,s=e.rehypePlugins||vE,l=e.remarkPlugins||vE,u=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...gE}:gE,c=e.skipHtml,f=e.unwrapDisallowed,d=e.urlTransform||Rve,h=Cve().use(dpe).use(l).use(sve,u).use(s),p=new G6;typeof n=="string"&&(p.value=n);for(const y of Pve)Object.hasOwn(e,y.from)&&(""+y.from+(y.to?"use `"+y.to+"` instead":"remove it")+kve+y.id,void 0);const v=h.parse(p);let g=h.runSync(v,p);return i&&(g={type:"element",tagName:"div",properties:{className:i},children:g.type==="root"?g.children:[g]}),F6(g,m),Yfe(g,{Fragment:R.Fragment,components:a,ignoreInvalidStyle:!0,jsx:R.jsx,jsxs:R.jsxs,passKeys:!0,passNode:!0});function m(y,x,S){if(y.type==="raw"&&S&&typeof x=="number")return c?S.children.splice(x,1):S.children[x]={type:"text",value:y.value},x;if(y.type==="element"){let _;for(_ in nb)if(pE.call(nb,_)&&pE.call(y.properties,_)){const b=y.properties[_],w=nb[_];(w===null||w.includes(y.tagName))&&(y.properties[_]=d(String(b||""),_,y))}}if(y.type==="element"){let _=t?!t.includes(y.tagName):o?o.includes(y.tagName):!1;if(!_&&r&&typeof x=="number"&&(_=!r(y,x,S)),_&&S&&typeof x=="number")return f&&y.children?S.children.splice(x,1,...y.children):S.children.splice(x,1),x}}}function Rve(e){return dde(e,Ive)}function Lve(e,t){const r=t?-1:1;return function(n,i){const a=n[e],o=i[e];return ao?r*1:0}}function Eve(e,{hasTotalRow:t=!1,defaultSortKey:r="name"}={hasTotalRow:!1,defaultSortKey:"name"}){const[n,i]=O.useState(e),[a,o]=O.useState(!1),s=O.useRef(),l=c=>{const d=(t?e.slice(0,-1):[...e]).sort(Lve(c,c===s.current&&!a));i(t?[...d,...e.slice(-1)]:d)},u=O.useCallback(c=>{s.current||(s.current=r);const f=c.target.getAttribute("data-sortkey");if(f===s.current)if(a){o(!1),s.current=void 0,l(r);return}else o(!0);else a&&o(!1);l(f),s.current=f},[s,e,a]);return O.useEffect(()=>{e.length&&l(s.current||r)},[e]),{onTableHeadClick:u,sortedRows:n,currentSortField:s.current}}const dh=(e,t=0)=>{const r=Math.pow(10,t);return Math.round(e*r)/r};function Ove({content:e,formatter:t,round:r,markdown:n}){return t?t(e):r?dh(e,r):n?R.jsx(Dve,{skipHtml:!1,children:e}):e}function qf({rows:e,structure:t,hasTotalRow:r,defaultSortKey:n}){const{onTableHeadClick:i,sortedRows:a,currentSortField:o}=Eve(e,{hasTotalRow:r,defaultSortKey:n});return R.jsx(vG,{component:Wf,children:R.jsxs(hG,{children:[R.jsx(gG,{children:R.jsx(Ky,{children:t.map(({title:s,key:l})=>R.jsx(zl,{"data-sortkey":l,onClick:i,sx:{cursor:"pointer",color:o===l?"primary.main":"text.primary"},children:s},`table-head-${l}`))})}),R.jsx(pG,{children:a.map((s,l)=>R.jsx(Ky,{children:t.map(({key:u,...c},f)=>R.jsx(zl,{children:R.jsx(Ove,{content:s[u],...c})},`table-row=${f}`))},`${s.name}-${l}`))})]})})}function Nve({rows:e,tableStructure:t}){return t?R.jsx(qf,{rows:e,structure:t}):null}const zve=({swarm:{extendedTables:e},ui:{extendedStats:t},url:{query:r}})=>{const n=r&&r.tab&&e&&e.find(({key:a})=>a===r.tab),i=r&&r.tab&&t&&t.find(({key:a})=>a===r.tab);return{tableStructure:n?n.structure.map(({key:a,...o})=>({key:FG(a),...o})):null,rows:i?i.data:[]}},Bve=Ln(zve)(Nve),$ve=[{key:"count",title:"# occurrences"},{key:"traceback",title:"Traceback"}];function H6({exceptions:e}){return R.jsx(qf,{rows:e,structure:$ve})}const Fve=({ui:{exceptions:e}})=>({exceptions:e}),Vve=Ln(Fve)(H6),Gve=[{key:"occurrences",title:"# Failures"},{key:"method",title:"Method"},{key:"name",title:"Name"},{key:"error",title:"Message",markdown:!0}];function W6({errors:e}){return R.jsx(qf,{rows:e,structure:Gve})}const Hve=({ui:{errors:e}})=>({errors:e}),Wve=Ln(Hve)(W6);function jve(){const e=Ys(({logViewer:{logs:t}})=>t);return R.jsxs(it,{children:[R.jsx(qe,{component:"h2",variant:"h4",children:"Logs"}),R.jsx("ul",{children:e.map((t,r)=>R.jsx("li",{children:t},`log-${r}`))})]})}function Uve({extendedCsvFiles:e,statsHistoryEnabled:t}){const r=Ys(({theme:{isDarkMode:n}})=>n);return R.jsxs(tG,{sx:{display:"flex",flexDirection:"column"},children:[R.jsx(tc,{children:R.jsx(on,{href:"/stats/requests/csv",children:"Download requests CSV"})}),t&&R.jsx(tc,{children:R.jsx(on,{href:"/stats/requests_full_history/csv",children:"Download full request statistics history CSV"})}),R.jsx(tc,{children:R.jsx(on,{href:"/stats/failures/csv",children:"Download failures CSV"})}),R.jsx(tc,{children:R.jsx(on,{href:"/exceptions/csv",children:"Download exceptions CSV"})}),R.jsx(tc,{children:R.jsx(on,{href:`/stats/report?theme=${r?Si.DARK:Si.LIGHT}`,target:"_blank",children:"Download Report"})}),e&&e.map(({href:n,title:i},a)=>R.jsx(tc,{children:R.jsx(on,{href:n,children:i})},`extended-csv-${a}`))]})}const qve=({swarm:{extendedCsvFiles:e,statsHistoryEnabled:t}})=>({extendedCsvFiles:e,statsHistoryEnabled:t}),Yve=Ln(qve)(Uve);var lk={},Xve=Ou;Object.defineProperty(lk,"__esModule",{value:!0});var j6=lk.default=void 0,Zve=Xve(Nu()),Kve=R,Qve=(0,Zve.default)((0,Kve.jsx)("path",{d:"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z"}),"ViewColumn");j6=lk.default=Qve;function Jve({structure:e,selectedColumns:t,addColumn:r,removeColumn:n}){const[i,a]=O.useState(null);return R.jsxs(YV,{direction:"row",justifyContent:"end",my:2,spacing:1,children:[R.jsx(qa,{onClick:o=>a(o.currentTarget),variant:"outlined",children:R.jsx(j6,{})}),R.jsx(aG,{anchorEl:i,anchorOrigin:{vertical:"bottom",horizontal:"left"},onClose:()=>a(null),open:!!i,children:R.jsx(ZV,{sx:{p:2},children:e.map(({key:o,title:s})=>R.jsx(XV,{control:R.jsx(Doe,{checked:t.includes(o),onChange:()=>{t.includes(o)?n(o):r(o)}}),label:s},o))})})]})}function ege(e){const[t,r]=O.useState(e.map(o=>o.key));return{selectedColumns:t,addColumn:o=>{r([...t,o])},removeColumn:o=>{r(t.filter(s=>s!==o))},filteredStructure:(o=>o.filter(s=>t.includes(s.key)))(e)}}const tge=La.percentilesToStatistics?La.percentilesToStatistics.map(e=>({title:`${e*100}%ile (ms)`,key:`responseTimePercentile${e}`})):[],mE=[{key:"method",title:"Type"},{key:"name",title:"Name"},{key:"numRequests",title:"# Requests"},{key:"numFailures",title:"# Fails"},{key:"medianResponseTime",title:"Median (ms)",round:2},...tge,{key:"avgResponseTime",title:"Average (ms)",round:2},{key:"minResponseTime",title:"Min (ms)"},{key:"maxResponseTime",title:"Max (ms)"},{key:"avgContentLength",title:"Average size (bytes)",round:2},{key:"currentRps",title:"Current RPS",round:2},{key:"currentFailPerSec",title:"Current Failures/s",round:2}];function U6({stats:e}){const{selectedColumns:t,addColumn:r,removeColumn:n,filteredStructure:i}=ege(mE);return R.jsxs(R.Fragment,{children:[R.jsx(Jve,{addColumn:r,removeColumn:n,selectedColumns:t,structure:mE}),R.jsx(qf,{hasTotalRow:!0,rows:e,structure:i})]})}const rge=({ui:{stats:e}})=>({stats:e}),nge=Ln(rge)(U6);/*! ***************************************************************************** +`},i),a}function sve(e,t){return e&&"run"in e?async function(r,n){const i=nE(r,t);await e.run(i,n)}:function(r){return nE(r,t||e)}}function iE(e){if(e)throw e}var Ym=Object.prototype.hasOwnProperty,V6=Object.prototype.toString,aE=Object.defineProperty,oE=Object.getOwnPropertyDescriptor,sE=function(t){return typeof Array.isArray=="function"?Array.isArray(t):V6.call(t)==="[object Array]"},lE=function(t){if(!t||V6.call(t)!=="[object Object]")return!1;var r=Ym.call(t,"constructor"),n=t.constructor&&t.constructor.prototype&&Ym.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!r&&!n)return!1;var i;for(i in t);return typeof i>"u"||Ym.call(t,i)},uE=function(t,r){aE&&r.name==="__proto__"?aE(t,r.name,{enumerable:!0,configurable:!0,value:r.newValue,writable:!0}):t[r.name]=r.newValue},cE=function(t,r){if(r==="__proto__")if(Ym.call(t,r)){if(oE)return oE(t,r).value}else return;return t[r]},lve=function e(){var t,r,n,i,a,o,s=arguments[0],l=1,u=arguments.length,c=!1;for(typeof s=="boolean"&&(c=s,s=arguments[1]||{},l=2),(s==null||typeof s!="object"&&typeof s!="function")&&(s={});lo.length;let l;s&&o.push(i);try{l=e.apply(this,o)}catch(u){const c=u;if(s&&r)throw c;return i(c)}s||(l instanceof Promise?l.then(a,i):l instanceof Error?i(l):a(l))}function i(o,...s){r||(r=!0,t(o,...s))}function a(o){i(null,o)}}const da={basename:fve,dirname:dve,extname:hve,join:pve,sep:"/"};function fve(e,t){if(t!==void 0&&typeof t!="string")throw new TypeError('"ext" argument must be a string');Mv(e);let r=0,n=-1,i=e.length,a;if(t===void 0||t.length===0||t.length>e.length){for(;i--;)if(e.codePointAt(i)===47){if(a){r=i+1;break}}else n<0&&(a=!0,n=i+1);return n<0?"":e.slice(r,n)}if(t===e)return"";let o=-1,s=t.length-1;for(;i--;)if(e.codePointAt(i)===47){if(a){r=i+1;break}}else o<0&&(a=!0,o=i+1),s>-1&&(e.codePointAt(i)===t.codePointAt(s--)?s<0&&(n=i):(s=-1,n=o));return r===n?n=o:n<0&&(n=e.length),e.slice(r,n)}function dve(e){if(Mv(e),e.length===0)return".";let t=-1,r=e.length,n;for(;--r;)if(e.codePointAt(r)===47){if(n){t=r;break}}else n||(n=!0);return t<0?e.codePointAt(0)===47?"/":".":t===1&&e.codePointAt(0)===47?"//":e.slice(0,t)}function hve(e){Mv(e);let t=e.length,r=-1,n=0,i=-1,a=0,o;for(;t--;){const s=e.codePointAt(t);if(s===47){if(o){n=t+1;break}continue}r<0&&(o=!0,r=t+1),s===46?i<0?i=t:a!==1&&(a=1):i>-1&&(a=-1)}return i<0||r<0||a===0||a===1&&i===r-1&&i===n+1?"":e.slice(i,r)}function pve(...e){let t=-1,r;for(;++t0&&e.codePointAt(e.length-1)===47&&(r+="/"),t?"/"+r:r}function gve(e,t){let r="",n=0,i=-1,a=0,o=-1,s,l;for(;++o<=e.length;){if(o2){if(l=r.lastIndexOf("/"),l!==r.length-1){l<0?(r="",n=0):(r=r.slice(0,l),n=r.length-1-r.lastIndexOf("/")),i=o,a=0;continue}}else if(r.length>0){r="",n=0,i=o,a=0;continue}}t&&(r=r.length>0?r+"/..":"..",n=2)}else r.length>0?r+="/"+e.slice(i+1,o):r=e.slice(i+1,o),n=o-i-1;i=o,a=0}else s===46&&a>-1?a++:a=-1}return r}function Mv(e){if(typeof e!="string")throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const mve={cwd:yve};function yve(){return"/"}function sT(e){return!!(e!==null&&typeof e=="object"&&"href"in e&&e.href&&"protocol"in e&&e.protocol&&e.auth===void 0)}function xve(e){if(typeof e=="string")e=new URL(e);else if(!sT(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if(e.protocol!=="file:"){const t=new TypeError("The URL must be of scheme file");throw t.code="ERR_INVALID_URL_SCHEME",t}return Sve(e)}function Sve(e){if(e.hostname!==""){const n=new TypeError('File URL host must be "localhost" or empty on darwin');throw n.code="ERR_INVALID_FILE_URL_HOST",n}const t=e.pathname;let r=-1;for(;++r0){let[h,...p]=c;const v=n[d][1];oT(v)&&oT(h)&&(h=ob(!0,v,h)),n[d]=[u,h,...p]}}}}const Cve=new sk().freeze();function cb(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `parser`")}function fb(e,t){if(typeof t!="function")throw new TypeError("Cannot `"+e+"` without `compiler`")}function db(e,t){if(t)throw new Error("Cannot call `"+e+"` on a frozen processor.\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.")}function dE(e){if(!oT(e)||typeof e.type!="string")throw new TypeError("Expected node, got `"+e+"`")}function hE(e,t,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}function Ag(e){return Tve(e)?e:new G6(e)}function Tve(e){return!!(e&&typeof e=="object"&&"message"in e&&"messages"in e)}function Ave(e){return typeof e=="string"||Mve(e)}function Mve(e){return!!(e&&typeof e=="object"&&"byteLength"in e&&"byteOffset"in e)}const pE={}.hasOwnProperty,kve="https://github.com/remarkjs/react-markdown/blob/main/changelog.md",vE=[],gE={allowDangerousHtml:!0},Ive=/^(https?|ircs?|mailto|xmpp)$/i,Pve=[{from:"astPlugins",id:"remove-buggy-html-in-markdown-parser"},{from:"allowDangerousHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"allowNode",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowElement"},{from:"allowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"allowedElements"},{from:"disallowedTypes",id:"replace-allownode-allowedtypes-and-disallowedtypes",to:"disallowedElements"},{from:"escapeHtml",id:"remove-buggy-html-in-markdown-parser"},{from:"includeElementIndex",id:"#remove-includeelementindex"},{from:"includeNodeIndex",id:"change-includenodeindex-to-includeelementindex"},{from:"linkTarget",id:"remove-linktarget"},{from:"plugins",id:"change-plugins-to-remarkplugins",to:"remarkPlugins"},{from:"rawSourcePos",id:"#remove-rawsourcepos"},{from:"renderers",id:"change-renderers-to-components",to:"components"},{from:"source",id:"change-source-to-children",to:"children"},{from:"sourcePos",id:"#remove-sourcepos"},{from:"transformImageUri",id:"#add-urltransform",to:"urlTransform"},{from:"transformLinkUri",id:"#add-urltransform",to:"urlTransform"}];function Dve(e){const t=e.allowedElements,r=e.allowElement,n=e.children||"",i=e.className,a=e.components,o=e.disallowedElements,s=e.rehypePlugins||vE,l=e.remarkPlugins||vE,u=e.remarkRehypeOptions?{...e.remarkRehypeOptions,...gE}:gE,c=e.skipHtml,f=e.unwrapDisallowed,d=e.urlTransform||Rve,h=Cve().use(dpe).use(l).use(sve,u).use(s),p=new G6;typeof n=="string"&&(p.value=n);for(const y of Pve)Object.hasOwn(e,y.from)&&(""+y.from+(y.to?"use `"+y.to+"` instead":"remove it")+kve+y.id,void 0);const v=h.parse(p);let g=h.runSync(v,p);return i&&(g={type:"element",tagName:"div",properties:{className:i},children:g.type==="root"?g.children:[g]}),F6(g,m),Yfe(g,{Fragment:R.Fragment,components:a,ignoreInvalidStyle:!0,jsx:R.jsx,jsxs:R.jsxs,passKeys:!0,passNode:!0});function m(y,x,S){if(y.type==="raw"&&S&&typeof x=="number")return c?S.children.splice(x,1):S.children[x]={type:"text",value:y.value},x;if(y.type==="element"){let _;for(_ in nb)if(pE.call(nb,_)&&pE.call(y.properties,_)){const b=y.properties[_],w=nb[_];(w===null||w.includes(y.tagName))&&(y.properties[_]=d(String(b||""),_,y))}}if(y.type==="element"){let _=t?!t.includes(y.tagName):o?o.includes(y.tagName):!1;if(!_&&r&&typeof x=="number"&&(_=!r(y,x,S)),_&&S&&typeof x=="number")return f&&y.children?S.children.splice(x,1,...y.children):S.children.splice(x,1),x}}}function Rve(e){return dde(e,Ive)}function Lve(e,t){const r=t?-1:1;return function(n,i){const a=n[e],o=i[e];return ao?r*1:0}}function Eve(e,{hasTotalRow:t=!1,defaultSortKey:r="name"}={hasTotalRow:!1,defaultSortKey:"name"}){const[n,i]=O.useState(e),[a,o]=O.useState(!1),s=O.useRef(),l=c=>{const d=(t?e.slice(0,-1):[...e]).sort(Lve(c,c===s.current&&!a));i(t?[...d,...e.slice(-1)]:d)},u=O.useCallback(c=>{s.current||(s.current=r);const f=c.target.getAttribute("data-sortkey");if(f===s.current)if(a){o(!1),s.current=void 0,l(r);return}else o(!0);else a&&o(!1);l(f),s.current=f},[s,e,a]);return O.useEffect(()=>{e.length&&l(s.current||r)},[e]),{onTableHeadClick:u,sortedRows:n,currentSortField:s.current}}const dh=(e,t=0)=>{const r=Math.pow(10,t);return Math.round(e*r)/r};function Ove({content:e,formatter:t,round:r,markdown:n}){return t?t(e):r?dh(e,r):n?R.jsx(Dve,{skipHtml:!1,children:e}):e}function qf({rows:e,structure:t,hasTotalRow:r,defaultSortKey:n}){const{onTableHeadClick:i,sortedRows:a,currentSortField:o}=Eve(e,{hasTotalRow:r,defaultSortKey:n});return R.jsx(vG,{component:Wf,children:R.jsxs(hG,{children:[R.jsx(gG,{children:R.jsx(Ky,{children:t.map(({title:s,key:l})=>R.jsx(zl,{"data-sortkey":l,onClick:i,sx:{cursor:"pointer",color:o===l?"primary.main":"text.primary"},children:s},`table-head-${l}`))})}),R.jsx(pG,{children:a.map((s,l)=>R.jsx(Ky,{children:t.map(({key:u,...c},f)=>R.jsx(zl,{children:R.jsx(Ove,{content:s[u],...c})},`table-row=${f}`))},`${s.name}-${l}`))})]})})}function Nve({rows:e,tableStructure:t}){return t?R.jsx(qf,{rows:e,structure:t}):null}const zve=({swarm:{extendedTables:e},ui:{extendedStats:t},url:{query:r}})=>{const n=r&&r.tab&&e&&e.find(({key:a})=>a===r.tab),i=r&&r.tab&&t&&t.find(({key:a})=>a===r.tab);return{tableStructure:n?n.structure.map(({key:a,...o})=>({key:FG(a),...o})):null,rows:i?i.data:[]}},Bve=Ln(zve)(Nve),$ve=[{key:"count",title:"# occurrences"},{key:"msg",title:"Message"},{key:"traceback",title:"Traceback"}];function H6({exceptions:e}){return R.jsx(qf,{rows:e,structure:$ve})}const Fve=({ui:{exceptions:e}})=>({exceptions:e}),Vve=Ln(Fve)(H6),Gve=[{key:"occurrences",title:"# Failures"},{key:"method",title:"Method"},{key:"name",title:"Name"},{key:"error",title:"Message",markdown:!0}];function W6({errors:e}){return R.jsx(qf,{rows:e,structure:Gve})}const Hve=({ui:{errors:e}})=>({errors:e}),Wve=Ln(Hve)(W6);function jve(){const e=Ys(({logViewer:{logs:t}})=>t);return R.jsxs(it,{children:[R.jsx(qe,{component:"h2",variant:"h4",children:"Logs"}),R.jsx("ul",{children:e.map((t,r)=>R.jsx("li",{children:t},`log-${r}`))})]})}function Uve({extendedCsvFiles:e,statsHistoryEnabled:t}){const r=Ys(({theme:{isDarkMode:n}})=>n);return R.jsxs(tG,{sx:{display:"flex",flexDirection:"column"},children:[R.jsx(tc,{children:R.jsx(on,{href:"/stats/requests/csv",children:"Download requests CSV"})}),t&&R.jsx(tc,{children:R.jsx(on,{href:"/stats/requests_full_history/csv",children:"Download full request statistics history CSV"})}),R.jsx(tc,{children:R.jsx(on,{href:"/stats/failures/csv",children:"Download failures CSV"})}),R.jsx(tc,{children:R.jsx(on,{href:"/exceptions/csv",children:"Download exceptions CSV"})}),R.jsx(tc,{children:R.jsx(on,{href:`/stats/report?theme=${r?Si.DARK:Si.LIGHT}`,target:"_blank",children:"Download Report"})}),e&&e.map(({href:n,title:i},a)=>R.jsx(tc,{children:R.jsx(on,{href:n,children:i})},`extended-csv-${a}`))]})}const qve=({swarm:{extendedCsvFiles:e,statsHistoryEnabled:t}})=>({extendedCsvFiles:e,statsHistoryEnabled:t}),Yve=Ln(qve)(Uve);var lk={},Xve=Ou;Object.defineProperty(lk,"__esModule",{value:!0});var j6=lk.default=void 0,Zve=Xve(Nu()),Kve=R,Qve=(0,Zve.default)((0,Kve.jsx)("path",{d:"M14.67 5v14H9.33V5h5.34zm1 14H21V5h-5.33v14zm-7.34 0V5H3v14h5.33z"}),"ViewColumn");j6=lk.default=Qve;function Jve({structure:e,selectedColumns:t,addColumn:r,removeColumn:n}){const[i,a]=O.useState(null);return R.jsxs(YV,{direction:"row",justifyContent:"end",my:2,spacing:1,children:[R.jsx(qa,{onClick:o=>a(o.currentTarget),variant:"outlined",children:R.jsx(j6,{})}),R.jsx(aG,{anchorEl:i,anchorOrigin:{vertical:"bottom",horizontal:"left"},onClose:()=>a(null),open:!!i,children:R.jsx(ZV,{sx:{p:2},children:e.map(({key:o,title:s})=>R.jsx(XV,{control:R.jsx(Doe,{checked:t.includes(o),onChange:()=>{t.includes(o)?n(o):r(o)}}),label:s},o))})})]})}function ege(e){const[t,r]=O.useState(e.map(o=>o.key));return{selectedColumns:t,addColumn:o=>{r([...t,o])},removeColumn:o=>{r(t.filter(s=>s!==o))},filteredStructure:(o=>o.filter(s=>t.includes(s.key)))(e)}}const tge=La.percentilesToStatistics?La.percentilesToStatistics.map(e=>({title:`${e*100}%ile (ms)`,key:`responseTimePercentile${e}`})):[],mE=[{key:"method",title:"Type"},{key:"name",title:"Name"},{key:"numRequests",title:"# Requests"},{key:"numFailures",title:"# Fails"},{key:"medianResponseTime",title:"Median (ms)",round:2},...tge,{key:"avgResponseTime",title:"Average (ms)",round:2},{key:"minResponseTime",title:"Min (ms)"},{key:"maxResponseTime",title:"Max (ms)"},{key:"avgContentLength",title:"Average size (bytes)",round:2},{key:"currentRps",title:"Current RPS",round:2},{key:"currentFailPerSec",title:"Current Failures/s",round:2}];function U6({stats:e}){const{selectedColumns:t,addColumn:r,removeColumn:n,filteredStructure:i}=ege(mE);return R.jsxs(R.Fragment,{children:[R.jsx(Jve,{addColumn:r,removeColumn:n,selectedColumns:t,structure:mE}),R.jsx(qf,{hasTotalRow:!0,rows:e,structure:i})]})}const rge=({ui:{stats:e}})=>({stats:e}),nge=Ln(rge)(U6);/*! ***************************************************************************** Copyright (c) Microsoft Corporation. Permission to use, copy, modify, and/or distribute this software for any diff --git a/locust/webui/dist/auth.html b/locust/webui/dist/auth.html index 31fb214a72..24855b1476 100644 --- a/locust/webui/dist/auth.html +++ b/locust/webui/dist/auth.html @@ -7,7 +7,7 @@ Locust - +
diff --git a/locust/webui/dist/index.html b/locust/webui/dist/index.html index a07f2acd42..de03e1055a 100644 --- a/locust/webui/dist/index.html +++ b/locust/webui/dist/index.html @@ -7,7 +7,7 @@ Locust - +
diff --git a/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx b/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx index 4c52403ba9..0a30eb082f 100644 --- a/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx +++ b/locust/webui/src/components/ExceptionsTable/ExceptionsTable.tsx @@ -6,6 +6,7 @@ import { ISwarmException } from 'types/ui.types'; const tableStructure = [ { key: 'count', title: '# occurrences' }, + { key: 'msg', title: 'Message' }, { key: 'traceback', title: 'Traceback' }, ];