locust 2.33.3.dev17__tar.gz → 2.33.3.dev19__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/PKG-INFO +1 -1
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/_version.py +2 -2
- locust-2.33.3.dev17/locust/webui/dist/assets/index-CBHdqxi-.js → locust-2.33.3.dev19/locust/webui/dist/assets/index-B5kHPwXy.js +1 -1
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/webui/dist/auth.html +1 -1
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/webui/dist/index.html +1 -1
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/webui/dist/report.html +1 -1
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/.gitignore +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/LICENSE +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/README.md +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/hatch_build.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/__init__.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/__main__.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/argument_parser.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/clients.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/contrib/__init__.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/contrib/fasthttp.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/contrib/mongodb.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/contrib/oai.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/contrib/postgres.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/debug.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/dispatch.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/env.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/event.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/exception.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/html.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/input_events.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/log.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/main.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/py.typed +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/rpc/__init__.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/rpc/protocol.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/rpc/zmqrpc.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/runners.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/shape.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/stats.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/user/__init__.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/user/inspectuser.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/user/sequential_taskset.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/user/task.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/user/users.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/user/wait_time.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/util/__init__.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/util/cache.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/util/date.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/util/deprecation.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/util/directory.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/util/exception_handler.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/util/load_locustfile.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/util/rounding.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/util/timespan.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/util/url.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/web.py +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/webui/dist/assets/favicon-dark.png +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/webui/dist/assets/favicon-light.png +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/webui/dist/assets/graphs-dark.png +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/webui/dist/assets/graphs-light.png +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/webui/dist/assets/testruns-dark.png +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/locust/webui/dist/assets/testruns-light.png +0 -0
- {locust-2.33.3.dev17 → locust-2.33.3.dev19}/pyproject.toml +0 -0
@@ -17,5 +17,5 @@ __version__: str
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
18
18
|
version_tuple: VERSION_TUPLE
|
19
19
|
|
20
|
-
__version__ = version = '2.33.3.
|
21
|
-
__version_tuple__ = version_tuple = (2, 33, 3, '
|
20
|
+
__version__ = version = '2.33.3.dev19'
|
21
|
+
__version_tuple__ = version_tuple = (2, 33, 3, 'dev19')
|
@@ -218,7 +218,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
218
218
|
<span style="color:${h};">
|
219
219
|
${v}: ${URe({chartValueFormatter:i,value:g})}
|
220
220
|
</span>
|
221
|
-
`,""):"No data",borderWidth:0},xAxis:s||{type:"time",min:(e.time||[new Date().toISOString()])[0],startValue:(e.time||[])[0],axisLabel:{formatter:jRe}},grid:l||{left:60,right:40},yAxis:WRe({splitAxis:a,yAxisLabels:o}),series:G7({charts:e,lines:r,scatterplot:u}),color:n,toolbox:{right:10,feature:{dataZoom:{title:{zoom:"Zoom Select",back:"Zoom Reset"},yAxisIndex:!1},saveAsImage:{name:t.replace(/\s+/g,"_").toLowerCase()+"_"+new Date().getTime()/1e3,title:"Download as PNG",emphasis:{iconStyle:{textPosition:"left"}}}}}}),qRe=e=>({symbol:"none",label:{formatter:t=>`Run #${t.dataIndex+1}`,padding:[0,0,8,0]},data:(e.markers||[]).map(t=>({xAxis:t}))}),XRe=e=>t=>{const{batch:r}=t;if(!r)return;const[{start:n,startValue:i,end:a}]=r,o=n>0&&a<=100||i>0;e.setOption({dataZoom:[{type:"slider",show:o}]})};function ZRe({charts:e,title:t,lines:r,colors:n,chartValueFormatter:i,splitAxis:a,yAxisLabels:o,xAxis:s,grid:l,scatterplot:u,shouldReplaceMergeLines:c=!1}){const[f,d]=G.useState(null),h=fi(({theme:{isDarkMode:g}})=>g),v=G.useRef(null);return G.useEffect(()=>{if(!v.current)return;const g=L1e(v.current);g.setOption(YRe({charts:e,title:t,lines:r,colors:n,chartValueFormatter:i,splitAxis:a,yAxisLabels:o,xAxis:s,grid:l,scatterplot:u})),g.on("datazoom",XRe(g));const y=()=>g.resize();return window.addEventListener("resize",y),g.group="swarmCharts",O1e("swarmCharts"),d(g),()=>{N1e(g),window.removeEventListener("resize",y)}},[v]),G.useEffect(()=>{const g=r.every(({key:y})=>!!e[y]);f&&g&&f.setOption({series:r.map(({key:y,yAxisIndex:x,...S},b)=>({...S,data:e[y],...a?{yAxisIndex:x||b}:{},...b===0?{markLine:qRe(e)}:{}}))})},[e,f,r]),G.useEffect(()=>{if(f){const{textColor:g,axisColor:y,backgroundColor:x,splitLine:S}=h?tV.DARK:tV.LIGHT;f.setOption({backgroundColor:x,textStyle:{color:g},title:{textStyle:{color:g}},legend:{icon:"circle",inactiveColor:g,textStyle:{color:g}},tooltip:{backgroundColor:x,textStyle:{color:g}},xAxis:{axisLine:{lineStyle:{color:y}}},yAxis:{axisLine:{lineStyle:{color:y}},splitLine:{lineStyle:{color:S}}}})}},[f,h]),G.useEffect(()=>{f&&f.setOption({series:G7({charts:e,lines:r,scatterplot:u})},c?{replaceMerge:["series"]}:void 0)},[r]),N.jsx("div",{ref:v,style:{width:"100%",height:"300px"}})}function KRe(){const{data:e,refetch:t}=Ude(),r=Zo(av.setUi),n=fi(({swarm:a})=>a.state),i=n===bn.SPAWNING||n==bn.RUNNING;G.useEffect(()=>{e&&r({ratios:e})},[e]),qx(t,5e3,{shouldRunInterval:i,immediate:!0})}const QRe=2e3;function JRe(){const e=Zo(yk.setSwarm),t=Zo(av.setUi),r=Zo(av.updateCharts),n=Zo(av.updateChartMarkers),i=fi(({swarm:f})=>f),a=G.useRef(i.state),[o,s]=G.useState(!1),{data:l,refetch:u}=jde(),c=i.state===bn.SPAWNING||i.state==bn.RUNNING;G.useEffect(()=>{if(!l)return;const{state:f,currentResponseTimePercentiles:d,extendedStats:h,stats:v,errors:g,totalRps:y,totalFailPerSec:x,failRatio:S,workers:b,userCount:w,totalAvgResponseTime:T}=l,C=new Date().toISOString();o&&(s(!1),n(C));const A=Lp(y,2),k=Lp(x,2),I=Lp(S*100),R={...Object.entries(d).reduce((L,[O,z])=>({...L,[O]:[C,z||0]}),{}),currentRps:[C,A],currentFailPerSec:[C,k],totalAvgResponseTime:[C,Lp(T,2)],userCount:[C,w],time:C};t({extendedStats:h,stats:v,errors:g,totalRps:A,failRatio:I,workers:b,userCount:w}),r(R),e({state:f})},[l]),qx(u,QRe,{shouldRunInterval:c}),G.useEffect(()=>{i.state===bn.RUNNING&&a.current===bn.STOPPED&&s(!0),a.current=i.state},[i.state,a])}function eEe(){const{data:e,refetch:t}=Yde(),r=Zo(av.setUi),n=fi(({swarm:a})=>a.state),i=n===bn.SPAWNING||n==bn.RUNNING;G.useEffect(()=>{e&&r({exceptions:e.exceptions})},[e]),qx(t,5e3,{shouldRunInterval:i,immediate:!0})}function tEe(){return eEe(),N.jsx(Rhe,{})}const rEe=[{key:"occurrences",title:"# Failures"},{key:"method",title:"Method"},{key:"name",title:"Name"},{key:"error",title:"Message",markdown:!0}];function nEe({errors:e}){return N.jsx(Tg,{rows:e,structure:rEe})}const iEe=({ui:{errors:e}})=>({errors:e}),aEe=Ii(iEe)(nEe),oEe=`
|
221
|
+
`,""):"No data",borderWidth:0},xAxis:s||{type:"time",min:(e.time||[new Date().toISOString()])[0],startValue:(e.time||[])[0],splitNumber:window.innerWidth<900?2:7,minInterval:1,axisLabel:{formatter:jRe}},grid:l||{left:60,right:40},yAxis:WRe({splitAxis:a,yAxisLabels:o}),series:G7({charts:e,lines:r,scatterplot:u}),color:n,toolbox:{right:10,feature:{dataZoom:{title:{zoom:"Zoom Select",back:"Zoom Reset"},yAxisIndex:!1},saveAsImage:{name:t.replace(/\s+/g,"_").toLowerCase()+"_"+new Date().getTime()/1e3,title:"Download as PNG",emphasis:{iconStyle:{textPosition:"left"}}}}},legend:{top:25}}),qRe=e=>({symbol:"none",label:{formatter:t=>`Run #${t.dataIndex+1}`,padding:[0,0,8,0]},data:(e.markers||[]).map(t=>({xAxis:t}))}),XRe=e=>t=>{const{batch:r}=t;if(!r)return;const[{start:n,startValue:i,end:a}]=r,o=n>0&&a<=100||i>0;e.setOption({dataZoom:[{type:"slider",show:o}]})};function ZRe({charts:e,title:t,lines:r,colors:n,chartValueFormatter:i,splitAxis:a,yAxisLabels:o,xAxis:s,grid:l,scatterplot:u,shouldReplaceMergeLines:c=!1}){const[f,d]=G.useState(null),h=fi(({theme:{isDarkMode:g}})=>g),v=G.useRef(null);return G.useEffect(()=>{if(!v.current)return;const g=L1e(v.current);g.setOption(YRe({charts:e,title:t,lines:r,colors:n,chartValueFormatter:i,splitAxis:a,yAxisLabels:o,xAxis:s,grid:l,scatterplot:u})),g.on("datazoom",XRe(g));const y=()=>{g.resize(),g.setOption({xAxis:{splitNumber:window.innerWidth<900?2:7}})};return window.addEventListener("resize",y),g.group="swarmCharts",O1e("swarmCharts"),d(g),()=>{N1e(g),window.removeEventListener("resize",y)}},[v]),G.useEffect(()=>{const g=r.every(({key:y})=>!!e[y]);f&&g&&f.setOption({series:r.map(({key:y,yAxisIndex:x,...S},b)=>({...S,data:e[y],...a?{yAxisIndex:x||b}:{},...b===0?{markLine:qRe(e)}:{}}))})},[e,f,r]),G.useEffect(()=>{if(f){const{textColor:g,axisColor:y,backgroundColor:x,splitLine:S}=h?tV.DARK:tV.LIGHT;f.setOption({backgroundColor:x,textStyle:{color:g},title:{textStyle:{color:g}},legend:{icon:"circle",inactiveColor:g,textStyle:{color:g}},tooltip:{backgroundColor:x,textStyle:{color:g}},xAxis:{axisLine:{lineStyle:{color:y}}},yAxis:{axisLine:{lineStyle:{color:y}},splitLine:{lineStyle:{color:S}}}})}},[f,h]),G.useEffect(()=>{f&&f.setOption({series:G7({charts:e,lines:r,scatterplot:u})},c?{replaceMerge:["series"]}:void 0)},[r]),N.jsx("div",{ref:v,style:{width:"100%",height:"300px"}})}function KRe(){const{data:e,refetch:t}=Ude(),r=Zo(av.setUi),n=fi(({swarm:a})=>a.state),i=n===bn.SPAWNING||n==bn.RUNNING;G.useEffect(()=>{e&&r({ratios:e})},[e]),qx(t,5e3,{shouldRunInterval:i,immediate:!0})}const QRe=2e3;function JRe(){const e=Zo(yk.setSwarm),t=Zo(av.setUi),r=Zo(av.updateCharts),n=Zo(av.updateChartMarkers),i=fi(({swarm:f})=>f),a=G.useRef(i.state),[o,s]=G.useState(!1),{data:l,refetch:u}=jde(),c=i.state===bn.SPAWNING||i.state==bn.RUNNING;G.useEffect(()=>{if(!l)return;const{state:f,currentResponseTimePercentiles:d,extendedStats:h,stats:v,errors:g,totalRps:y,totalFailPerSec:x,failRatio:S,workers:b,userCount:w,totalAvgResponseTime:T}=l,C=new Date().toISOString();o&&(s(!1),n(C));const A=Lp(y,2),k=Lp(x,2),I=Lp(S*100),R={...Object.entries(d).reduce((L,[O,z])=>({...L,[O]:[C,z||0]}),{}),currentRps:[C,A],currentFailPerSec:[C,k],totalAvgResponseTime:[C,Lp(T,2)],userCount:[C,w],time:C};t({extendedStats:h,stats:v,errors:g,totalRps:A,failRatio:I,workers:b,userCount:w}),r(R),e({state:f})},[l]),qx(u,QRe,{shouldRunInterval:c}),G.useEffect(()=>{i.state===bn.RUNNING&&a.current===bn.STOPPED&&s(!0),a.current=i.state},[i.state,a])}function eEe(){const{data:e,refetch:t}=Yde(),r=Zo(av.setUi),n=fi(({swarm:a})=>a.state),i=n===bn.SPAWNING||n==bn.RUNNING;G.useEffect(()=>{e&&r({exceptions:e.exceptions})},[e]),qx(t,5e3,{shouldRunInterval:i,immediate:!0})}function tEe(){return eEe(),N.jsx(Rhe,{})}const rEe=[{key:"occurrences",title:"# Failures"},{key:"method",title:"Method"},{key:"name",title:"Name"},{key:"error",title:"Message",markdown:!0}];function nEe({errors:e}){return N.jsx(Tg,{rows:e,structure:rEe})}const iEe=({ui:{errors:e}})=>({errors:e}),aEe=Ii(iEe)(nEe),oEe=`
|
222
222
|
Ready to take your load tests to the next level? With [Locust Cloud](https://locust.cloud), we take care of everything!
|
223
223
|
|
224
224
|
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<meta name="theme-color" content="#000000" />
|
9
9
|
|
10
10
|
<title>{{ auth_title | default("Locust") }}</title>
|
11
|
-
<script type="module" crossorigin src="./assets/index-
|
11
|
+
<script type="module" crossorigin src="./assets/index-B5kHPwXy.js"></script>
|
12
12
|
</head>
|
13
13
|
<body>
|
14
14
|
<div id="root"></div>
|
@@ -8,7 +8,7 @@
|
|
8
8
|
<meta name="theme-color" content="#000000" />
|
9
9
|
|
10
10
|
<title>Locust</title>
|
11
|
-
<script type="module" crossorigin src="./assets/index-
|
11
|
+
<script type="module" crossorigin src="./assets/index-B5kHPwXy.js"></script>
|
12
12
|
</head>
|
13
13
|
<body>
|
14
14
|
<div id="root"></div>
|
@@ -220,7 +220,7 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
220
220
|
<span style="color:${d};">
|
221
221
|
${v}: ${DSe({chartValueFormatter:i,value:y})}
|
222
222
|
</span>
|
223
|
-
`,""):"No data",borderWidth:0},xAxis:s||{type:"time",min:(t.time||[new Date().toISOString()])[0],startValue:(t.time||[])[0],axisLabel:{formatter:MSe}},grid:l||{left:60,right:40},yAxis:ASe({splitAxis:a,yAxisLabels:o}),series:y$({charts:t,lines:r,scatterplot:u}),color:n,toolbox:{right:10,feature:{dataZoom:{title:{zoom:"Zoom Select",back:"Zoom Reset"},yAxisIndex:!1},saveAsImage:{name:e.replace(/\s+/g,"_").toLowerCase()+"_"+new Date().getTime()/1e3,title:"Download as PNG",emphasis:{iconStyle:{textPosition:"left"}}}}}}),PSe=t=>({symbol:"none",label:{formatter:e=>`Run #${e.dataIndex+1}`,padding:[0,0,8,0]},data:(t.markers||[]).map(e=>({xAxis:e}))}),ISe=t=>e=>{const{batch:r}=e;if(!r)return;const[{start:n,startValue:i,end:a}]=r,o=n>0&&a<=100||i>0;t.setOption({dataZoom:[{type:"slider",show:o}]})},ESe=oq;function LSe({charts:t,title:e,lines:r,colors:n,chartValueFormatter:i,splitAxis:a,yAxisLabels:o,xAxis:s,grid:l,scatterplot:u,shouldReplaceMergeLines:c=!1}){const[f,h]=Q.useState(null),d=ESe(({theme:{isDarkMode:y}})=>y),v=Q.useRef(null);return Q.useEffect(()=>{if(!v.current)return;const y=yle(v.current);y.setOption(kSe({charts:t,title:e,lines:r,colors:n,chartValueFormatter:i,splitAxis:a,yAxisLabels:o,xAxis:s,grid:l,scatterplot:u})),y.on("datazoom",ISe(y));const m=()=>y.resize();return window.addEventListener("resize",m),y.group="swarmCharts",mle("swarmCharts"),h(y),()=>{_le(y),window.removeEventListener("resize",m)}},[v]),Q.useEffect(()=>{const y=r.every(({key:m})=>!!t[m]);f&&y&&f.setOption({series:r.map(({key:m,yAxisIndex:_,...S},w)=>({...S,data:t[m],...a?{yAxisIndex:_||w}:{},...w===0?{markLine:PSe(t)}:{}}))})},[t,f,r]),Q.useEffect(()=>{if(f){const{textColor:y,axisColor:m,backgroundColor:_,splitLine:S}=d?I5.DARK:I5.LIGHT;f.setOption({backgroundColor:_,textStyle:{color:y},title:{textStyle:{color:y}},legend:{icon:"circle",inactiveColor:y,textStyle:{color:y}},tooltip:{backgroundColor:_,textStyle:{color:y}},xAxis:{axisLine:{lineStyle:{color:m}}},yAxis:{axisLine:{lineStyle:{color:m}},splitLine:{lineStyle:{color:S}}}})}},[f,d]),Q.useEffect(()=>{f&&f.setOption({series:y$({charts:t,lines:r,scatterplot:u})},c?{replaceMerge:["series"]}:void 0)},[r]),ne.jsx("div",{ref:v,style:{width:"100%",height:"300px"}})}const RSe=zl.percentilesToChart?zl.percentilesToChart.map(t=>({name:`${t*100}th percentile`,key:`responseTimePercentile${t}`})):[],OSe=["#ff9f00","#9966CC","#8A2BE2","#8E4585","#E0B0FF","#C8A2C8","#E6E6FA"],NSe=[{title:"Total Requests per Second",lines:[{name:"RPS",key:"currentRps"},{name:"Failures/s",key:"currentFailPerSec"}],colors:["#00ca5a","#ff6d6d"]},{title:"Response Times (ms)",lines:RSe,colors:OSe},{title:"Number of Users",lines:[{name:"Number of Users",key:"userCount"}],colors:["#0099ff"]}];function m$({charts:t}){return NSe.map((e,r)=>ne.jsx(LSe,{...e,charts:t},`swarm-chart-${r}`))}const zSe=({ui:{charts:t}})=>({charts:t});Jd(zSe)(m$);function BSe(t){return(t*100).toFixed(1)+"%"}function KC({classRatio:t}){return ne.jsx("ul",{children:Object.entries(t).map(([e,{ratio:r,tasks:n}])=>ne.jsxs("li",{children:[`${BSe(r)} ${e}`,n&&ne.jsx(KC,{classRatio:n})]},`nested-ratio-${e}`))})}function _$({ratios:{perClass:t,total:e}}){return!t&&!e?null:ne.jsxs("div",{children:[t&&ne.jsxs(ne.Fragment,{children:[ne.jsx("h3",{children:"Ratio Per Class"}),ne.jsx(KC,{classRatio:t})]}),e&&ne.jsxs(ne.Fragment,{children:[ne.jsx("h3",{children:"Total Ratio"}),ne.jsx(KC,{classRatio:e})]})]})}const FSe=({ui:{ratios:t}})=>({ratios:t});Jd(FSe)(_$);const Ew={DARK:"dark",LIGHT:"light"},x$=localStorage.theme===Ew.DARK||!("theme"in localStorage)&&window.matchMedia("(prefers-color-scheme: dark)").matches?Ew.DARK:Ew.LIGHT,VSe={isDarkMode:!1},GSe=GZ({name:"theme",initialState:VSe,reducers:{setIsDarkMode:(t,{payload:e})=>{t.isDarkMode=e}}}),HSe=GSe.reducer,$Se=t=>gT({palette:{mode:t,primary:{main:"#15803d"},success:{main:"#00C853"}},components:{MuiCssBaseline:{styleOverrides:{":root":{"--footer-height":"40px"},p:{margin:0},ul:{paddingLeft:"16px"}}}}}),WSe=$Se(window.theme||x$),USe=(window.theme||x$)==="dark",jSe=[{key:"method",title:"Type"},{key:"name",title:"Name"},{key:"numRequests",title:"# Requests"},{key:"numFailures",title:"# Fails"},{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:"totalRps",title:"RPS",round:2},{key:"totalFailPerSec",title:"Failures/s",round:2}],YSe=EZ({reducer:kB({theme:HSe}),preloadedState:{theme:{isDarkMode:USe}}});function XSe({locustfile:t,showDownloadLink:e,startTime:r,endTime:n,duration:i,charts:a,host:o,exceptionsStatistics:s,requestsStatistics:l,failuresStatistics:u,responseTimeStatistics:c,tasks:f}){return ne.jsx(qq,{store:YSe,children:ne.jsxs(Z7,{theme:WSe,children:[ne.jsx(EY,{}),ne.jsxs(DY,{maxWidth:"lg",sx:{my:4},children:[ne.jsxs(Yn,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-end"},children:[ne.jsx(Qr,{component:"h1",noWrap:!0,sx:{fontWeight:700},variant:"h3",children:"Locust Test Report"}),e&&ne.jsx(AB,{href:`?download=1&theme=${window.theme}`,children:"Download the Report"})]}),ne.jsxs(Yn,{sx:{my:2},children:[ne.jsxs(Yn,{sx:{display:"flex",columnGap:.5},children:[ne.jsx(Qr,{fontWeight:600,children:"During:"}),ne.jsxs(Qr,{children:[qC(r)," - ",qC(n)," (",i,")"]})]}),ne.jsxs(Yn,{sx:{display:"flex",columnGap:.5},children:[ne.jsx(Qr,{fontWeight:600,children:"Target Host:"}),ne.jsx(Qr,{children:o||"None"})]}),ne.jsxs(Yn,{sx:{display:"flex",columnGap:.5},children:[ne.jsx(Qr,{fontWeight:600,children:"Script:"}),ne.jsx(Qr,{children:t})]})]}),ne.jsxs(Yn,{sx:{display:"flex",flexDirection:"column",rowGap:4},children:[ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Request Statistics"}),ne.jsx(R3,{stats:l,tableStructure:jSe})]}),!!c.length&&ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Response Time Statistics"}),ne.jsx(vte,{responseTimes:c})]}),ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Failures Statistics"}),ne.jsx(L3,{errors:u})]}),!!s.length&&ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Exceptions Statistics"}),ne.jsx(E3,{exceptions:s})]}),ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Charts"}),ne.jsx(m$,{charts:a})]}),ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Final ratio"}),ne.jsx(_$,{ratios:f})]})]})]})]})})}const ZSe=C8.createRoot(document.getElementById("root"));ZSe.render(ne.jsx(A8,{fallbackRender:D8,children:ne.jsx(XSe,{...E8})}));</script>
|
223
|
+
`,""):"No data",borderWidth:0},xAxis:s||{type:"time",min:(t.time||[new Date().toISOString()])[0],startValue:(t.time||[])[0],splitNumber:window.innerWidth<900?2:7,minInterval:1,axisLabel:{formatter:MSe}},grid:l||{left:60,right:40},yAxis:ASe({splitAxis:a,yAxisLabels:o}),series:y$({charts:t,lines:r,scatterplot:u}),color:n,toolbox:{right:10,feature:{dataZoom:{title:{zoom:"Zoom Select",back:"Zoom Reset"},yAxisIndex:!1},saveAsImage:{name:e.replace(/\s+/g,"_").toLowerCase()+"_"+new Date().getTime()/1e3,title:"Download as PNG",emphasis:{iconStyle:{textPosition:"left"}}}}},legend:{top:25}}),PSe=t=>({symbol:"none",label:{formatter:e=>`Run #${e.dataIndex+1}`,padding:[0,0,8,0]},data:(t.markers||[]).map(e=>({xAxis:e}))}),ISe=t=>e=>{const{batch:r}=e;if(!r)return;const[{start:n,startValue:i,end:a}]=r,o=n>0&&a<=100||i>0;t.setOption({dataZoom:[{type:"slider",show:o}]})},ESe=oq;function LSe({charts:t,title:e,lines:r,colors:n,chartValueFormatter:i,splitAxis:a,yAxisLabels:o,xAxis:s,grid:l,scatterplot:u,shouldReplaceMergeLines:c=!1}){const[f,h]=Q.useState(null),d=ESe(({theme:{isDarkMode:y}})=>y),v=Q.useRef(null);return Q.useEffect(()=>{if(!v.current)return;const y=yle(v.current);y.setOption(kSe({charts:t,title:e,lines:r,colors:n,chartValueFormatter:i,splitAxis:a,yAxisLabels:o,xAxis:s,grid:l,scatterplot:u})),y.on("datazoom",ISe(y));const m=()=>{y.resize(),y.setOption({xAxis:{splitNumber:window.innerWidth<900?2:7}})};return window.addEventListener("resize",m),y.group="swarmCharts",mle("swarmCharts"),h(y),()=>{_le(y),window.removeEventListener("resize",m)}},[v]),Q.useEffect(()=>{const y=r.every(({key:m})=>!!t[m]);f&&y&&f.setOption({series:r.map(({key:m,yAxisIndex:_,...S},w)=>({...S,data:t[m],...a?{yAxisIndex:_||w}:{},...w===0?{markLine:PSe(t)}:{}}))})},[t,f,r]),Q.useEffect(()=>{if(f){const{textColor:y,axisColor:m,backgroundColor:_,splitLine:S}=d?I5.DARK:I5.LIGHT;f.setOption({backgroundColor:_,textStyle:{color:y},title:{textStyle:{color:y}},legend:{icon:"circle",inactiveColor:y,textStyle:{color:y}},tooltip:{backgroundColor:_,textStyle:{color:y}},xAxis:{axisLine:{lineStyle:{color:m}}},yAxis:{axisLine:{lineStyle:{color:m}},splitLine:{lineStyle:{color:S}}}})}},[f,d]),Q.useEffect(()=>{f&&f.setOption({series:y$({charts:t,lines:r,scatterplot:u})},c?{replaceMerge:["series"]}:void 0)},[r]),ne.jsx("div",{ref:v,style:{width:"100%",height:"300px"}})}const RSe=zl.percentilesToChart?zl.percentilesToChart.map(t=>({name:`${t*100}th percentile`,key:`responseTimePercentile${t}`})):[],OSe=["#ff9f00","#9966CC","#8A2BE2","#8E4585","#E0B0FF","#C8A2C8","#E6E6FA"],NSe=[{title:"Total Requests per Second",lines:[{name:"RPS",key:"currentRps"},{name:"Failures/s",key:"currentFailPerSec"}],colors:["#00ca5a","#ff6d6d"]},{title:"Response Times (ms)",lines:RSe,colors:OSe},{title:"Number of Users",lines:[{name:"Number of Users",key:"userCount"}],colors:["#0099ff"]}];function m$({charts:t}){return NSe.map((e,r)=>ne.jsx(LSe,{...e,charts:t},`swarm-chart-${r}`))}const zSe=({ui:{charts:t}})=>({charts:t});Jd(zSe)(m$);function BSe(t){return(t*100).toFixed(1)+"%"}function KC({classRatio:t}){return ne.jsx("ul",{children:Object.entries(t).map(([e,{ratio:r,tasks:n}])=>ne.jsxs("li",{children:[`${BSe(r)} ${e}`,n&&ne.jsx(KC,{classRatio:n})]},`nested-ratio-${e}`))})}function _$({ratios:{perClass:t,total:e}}){return!t&&!e?null:ne.jsxs("div",{children:[t&&ne.jsxs(ne.Fragment,{children:[ne.jsx("h3",{children:"Ratio Per Class"}),ne.jsx(KC,{classRatio:t})]}),e&&ne.jsxs(ne.Fragment,{children:[ne.jsx("h3",{children:"Total Ratio"}),ne.jsx(KC,{classRatio:e})]})]})}const FSe=({ui:{ratios:t}})=>({ratios:t});Jd(FSe)(_$);const Ew={DARK:"dark",LIGHT:"light"},x$=localStorage.theme===Ew.DARK||!("theme"in localStorage)&&window.matchMedia("(prefers-color-scheme: dark)").matches?Ew.DARK:Ew.LIGHT,VSe={isDarkMode:!1},GSe=GZ({name:"theme",initialState:VSe,reducers:{setIsDarkMode:(t,{payload:e})=>{t.isDarkMode=e}}}),HSe=GSe.reducer,$Se=t=>gT({palette:{mode:t,primary:{main:"#15803d"},success:{main:"#00C853"}},components:{MuiCssBaseline:{styleOverrides:{":root":{"--footer-height":"40px"},p:{margin:0},ul:{paddingLeft:"16px"}}}}}),WSe=$Se(window.theme||x$),USe=(window.theme||x$)==="dark",jSe=[{key:"method",title:"Type"},{key:"name",title:"Name"},{key:"numRequests",title:"# Requests"},{key:"numFailures",title:"# Fails"},{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:"totalRps",title:"RPS",round:2},{key:"totalFailPerSec",title:"Failures/s",round:2}],YSe=EZ({reducer:kB({theme:HSe}),preloadedState:{theme:{isDarkMode:USe}}});function XSe({locustfile:t,showDownloadLink:e,startTime:r,endTime:n,duration:i,charts:a,host:o,exceptionsStatistics:s,requestsStatistics:l,failuresStatistics:u,responseTimeStatistics:c,tasks:f}){return ne.jsx(qq,{store:YSe,children:ne.jsxs(Z7,{theme:WSe,children:[ne.jsx(EY,{}),ne.jsxs(DY,{maxWidth:"lg",sx:{my:4},children:[ne.jsxs(Yn,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-end"},children:[ne.jsx(Qr,{component:"h1",noWrap:!0,sx:{fontWeight:700},variant:"h3",children:"Locust Test Report"}),e&&ne.jsx(AB,{href:`?download=1&theme=${window.theme}`,children:"Download the Report"})]}),ne.jsxs(Yn,{sx:{my:2},children:[ne.jsxs(Yn,{sx:{display:"flex",columnGap:.5},children:[ne.jsx(Qr,{fontWeight:600,children:"During:"}),ne.jsxs(Qr,{children:[qC(r)," - ",qC(n)," (",i,")"]})]}),ne.jsxs(Yn,{sx:{display:"flex",columnGap:.5},children:[ne.jsx(Qr,{fontWeight:600,children:"Target Host:"}),ne.jsx(Qr,{children:o||"None"})]}),ne.jsxs(Yn,{sx:{display:"flex",columnGap:.5},children:[ne.jsx(Qr,{fontWeight:600,children:"Script:"}),ne.jsx(Qr,{children:t})]})]}),ne.jsxs(Yn,{sx:{display:"flex",flexDirection:"column",rowGap:4},children:[ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Request Statistics"}),ne.jsx(R3,{stats:l,tableStructure:jSe})]}),!!c.length&&ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Response Time Statistics"}),ne.jsx(vte,{responseTimes:c})]}),ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Failures Statistics"}),ne.jsx(L3,{errors:u})]}),!!s.length&&ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Exceptions Statistics"}),ne.jsx(E3,{exceptions:s})]}),ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Charts"}),ne.jsx(m$,{charts:a})]}),ne.jsxs(Yn,{children:[ne.jsx(Qr,{component:"h2",mb:1,noWrap:!0,variant:"h4",children:"Final ratio"}),ne.jsx(_$,{ratios:f})]})]})]})]})})}const ZSe=C8.createRoot(document.getElementById("root"));ZSe.render(ne.jsx(A8,{fallbackRender:D8,children:ne.jsx(XSe,{...E8})}));</script>
|
224
224
|
</head>
|
225
225
|
{% endraw %}
|
226
226
|
<body>
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|