blaze-performance-tester 3.0.33 → 3.0.36
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.
- package/dist/cli.js +43 -6
- package/dist/index.win32-x64-msvc.node +0 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -217,7 +217,7 @@ async function runIntelligentAgenticStressTest(config) {
|
|
|
217
217
|
console.log("\u{1F680} Initializing Intelligent Autonomous Load Agent...");
|
|
218
218
|
const history = [];
|
|
219
219
|
let aggregateErrorLogs = [];
|
|
220
|
-
let total2xx = 0, total3xx = 0, total4xx = 0, total5xx = 0;
|
|
220
|
+
let total1xx = 0, total2xx = 0, total3xx = 0, total4xx = 0, total5xx = 0;
|
|
221
221
|
let globalMetricsAccumulator = { dns: [], tcp: [], tls: [], ttfb: [], latencies: [], bandwidths: [] };
|
|
222
222
|
let currentThreads = Math.min(config.maxThreads, Math.max(5, Math.floor(config.maxThreads * 0.2)));
|
|
223
223
|
let baseStep = config.stepSize;
|
|
@@ -230,6 +230,7 @@ async function runIntelligentAgenticStressTest(config) {
|
|
|
230
230
|
if (config.clusterLogs) {
|
|
231
231
|
aggregateErrorLogs = aggregateErrorLogs.concat(rawErrors);
|
|
232
232
|
}
|
|
233
|
+
total1xx += metrics.c1xx;
|
|
233
234
|
total2xx += metrics.c2xx;
|
|
234
235
|
total3xx += metrics.c3xx;
|
|
235
236
|
total4xx += metrics.c4xx;
|
|
@@ -302,7 +303,7 @@ async function runIntelligentAgenticStressTest(config) {
|
|
|
302
303
|
saturationKneePoint: saturationKneePoint || history[history.length - 1]?.threads || 50
|
|
303
304
|
};
|
|
304
305
|
generateFinalAgentReport(history);
|
|
305
|
-
exportHtmlDashboard(history, config, verdictReason, semanticReport, { total2xx, total3xx, total4xx, total5xx }, finalSummaryCards);
|
|
306
|
+
exportHtmlDashboard(history, config, verdictReason, semanticReport, { total1xx, total2xx, total3xx, total4xx, total5xx }, finalSummaryCards);
|
|
306
307
|
}
|
|
307
308
|
async function runStandardStressTest(config) {
|
|
308
309
|
console.log(`\u{1F3CB}\uFE0F Running Standard Stress Test [Threads: ${config.threads} | Duration: ${config.durationSec}s]`);
|
|
@@ -339,6 +340,7 @@ async function runStandardStressTest(config) {
|
|
|
339
340
|
const isPassed = metrics.apdexScore >= config.targetApdex && metrics.errorRate <= config.targetErrorRate;
|
|
340
341
|
const verdictReason = isPassed ? "Static single-wave baseline checks concluded successfully without triggering health boundaries." : "Static verification loop completed with values exceeding defined quality thresholds.";
|
|
341
342
|
exportHtmlDashboard(history, config, verdictReason, semanticReport, {
|
|
343
|
+
total1xx: metrics.c1xx,
|
|
342
344
|
total2xx: metrics.c2xx,
|
|
343
345
|
total3xx: metrics.c3xx,
|
|
344
346
|
total4xx: metrics.c4xx,
|
|
@@ -396,9 +398,10 @@ function processMetricsTelemetry(requests, durationSec) {
|
|
|
396
398
|
const avgTcpMs = mathUtils.mean(requests.map((r) => r.tcpTimeMs || 0));
|
|
397
399
|
const avgTlsMs = mathUtils.mean(requests.map((r) => r.tlsTimeMs || 0));
|
|
398
400
|
const avgTtfbMs = avgDnsMs + avgTcpMs + avgTlsMs + avgLatencyMs * 0.3;
|
|
399
|
-
let c2xx = 0, c3xx = 0, c4xx = 0, c5xx = 0;
|
|
401
|
+
let c1xx = 0, c2xx = 0, c3xx = 0, c4xx = 0, c5xx = 0;
|
|
400
402
|
requests.forEach((r) => {
|
|
401
|
-
if (r.statusCode >=
|
|
403
|
+
if (r.statusCode >= 100 && r.statusCode < 200) c1xx++;
|
|
404
|
+
else if (r.statusCode >= 200 && r.statusCode < 300) c2xx++;
|
|
402
405
|
else if (r.statusCode >= 300 && r.statusCode < 400) c3xx++;
|
|
403
406
|
else if (r.statusCode >= 400 && r.statusCode < 500) c4xx++;
|
|
404
407
|
else if (r.statusCode >= 500) c5xx++;
|
|
@@ -418,6 +421,7 @@ function processMetricsTelemetry(requests, durationSec) {
|
|
|
418
421
|
p95LatencyMs,
|
|
419
422
|
errorRate,
|
|
420
423
|
apdexScore,
|
|
424
|
+
c1xx,
|
|
421
425
|
c2xx,
|
|
422
426
|
c3xx,
|
|
423
427
|
c4xx,
|
|
@@ -592,13 +596,14 @@ function exportHtmlDashboard(history, config, verdictReason, semanticReport, res
|
|
|
592
596
|
.matrix-box .matrix-row:last-child { border-bottom: none; }
|
|
593
597
|
.matrix-label { font-size: 0.9rem; color: #f8fafc; display: flex; align-items: center; gap: 0.5rem; }
|
|
594
598
|
.matrix-badge { font-size: 0.7rem; font-weight: bold; padding: 0.1rem 0.3rem; border-radius: 4px; }
|
|
599
|
+
.badge-1xx { background: rgba(56, 189, 248, 0.2); color: #38bdf8; }
|
|
595
600
|
.badge-2xx { background: rgba(22, 163, 74, 0.2); color: #4ade80; }
|
|
596
601
|
.badge-3xx { background: rgba(148, 163, 184, 0.2); color: #cbd5e1; }
|
|
597
602
|
.badge-4xx { background: rgba(234, 179, 8, 0.2); color: #fde047; }
|
|
598
603
|
.badge-5xx { background: rgba(220, 38, 38, 0.2); color: #f87171; }
|
|
599
604
|
.matrix-value { font-size: 1rem; font-weight: bold; color: #ffffff; }
|
|
600
605
|
|
|
601
|
-
.charts-grid { display: grid; grid-template-columns:
|
|
606
|
+
.charts-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; margin-bottom: 2rem; }
|
|
602
607
|
.graph-card { background: #131c2e; border: 1px solid #1e293b; border-radius: 8px; padding: 1.5rem; }
|
|
603
608
|
.graph-title { font-size: 1.1rem; font-weight: 700; color: #ffffff; margin-bottom: 1.2rem; display: flex; align-items: center; gap: 0.5rem; }
|
|
604
609
|
|
|
@@ -661,6 +666,10 @@ function exportHtmlDashboard(history, config, verdictReason, semanticReport, res
|
|
|
661
666
|
|
|
662
667
|
<div class="matrix-box">
|
|
663
668
|
<div class="matrix-title">\u{1F4CB} HTTP Response Matrix</div>
|
|
669
|
+
<div class="matrix-row">
|
|
670
|
+
<div class="matrix-label">Informational <span class="matrix-badge badge-1xx">1xx</span></div>
|
|
671
|
+
<div class="matrix-value">${responseMatrix.total1xx}</div>
|
|
672
|
+
</div>
|
|
664
673
|
<div class="matrix-row">
|
|
665
674
|
<div class="matrix-label">Successful <span class="matrix-badge badge-2xx">2xx</span></div>
|
|
666
675
|
<div class="matrix-value">${responseMatrix.total2xx}</div>
|
|
@@ -689,11 +698,18 @@ function exportHtmlDashboard(history, config, verdictReason, semanticReport, res
|
|
|
689
698
|
</div>
|
|
690
699
|
|
|
691
700
|
<div class="graph-card">
|
|
692
|
-
<div class="graph-title">\u{1F504} Active Concurrency (VUs) vs.
|
|
701
|
+
<div class="graph-title">\u{1F504} Active Concurrency (VUs) vs. TTF Trend</div>
|
|
693
702
|
<div style="height: 280px; position: relative;">
|
|
694
703
|
<canvas id="concurrencyChart"></canvas>
|
|
695
704
|
</div>
|
|
696
705
|
</div>
|
|
706
|
+
|
|
707
|
+
<div class="graph-card">
|
|
708
|
+
<div class="graph-title">\u{1F369} HTTP Status Code Proportions</div>
|
|
709
|
+
<div style="height: 280px; position: relative;">
|
|
710
|
+
<canvas id="statusDonutChart"></canvas>
|
|
711
|
+
</div>
|
|
712
|
+
</div>
|
|
697
713
|
</div>
|
|
698
714
|
|
|
699
715
|
<div class="card">
|
|
@@ -824,6 +840,27 @@ function exportHtmlDashboard(history, config, verdictReason, semanticReport, res
|
|
|
824
840
|
}
|
|
825
841
|
}
|
|
826
842
|
});
|
|
843
|
+
|
|
844
|
+
new Chart(document.getElementById('statusDonutChart'), {
|
|
845
|
+
type: 'doughnut',
|
|
846
|
+
data: {
|
|
847
|
+
labels: ['1xx Info', '2xx Success', '3xx Redirect', '4xx Client Err', '5xx Server Err'],
|
|
848
|
+
datasets: [{
|
|
849
|
+
data: [${responseMatrix.total1xx}, ${responseMatrix.total2xx}, ${responseMatrix.total3xx}, ${responseMatrix.total4xx}, ${responseMatrix.total5xx}],
|
|
850
|
+
backgroundColor: ['#38bdf8', '#4ade80', '#cbd5e1', '#fde047', '#f87171'],
|
|
851
|
+
borderWidth: 1,
|
|
852
|
+
borderColor: '#1e293b'
|
|
853
|
+
}]
|
|
854
|
+
},
|
|
855
|
+
options: {
|
|
856
|
+
responsive: true,
|
|
857
|
+
maintainAspectRatio: false,
|
|
858
|
+
plugins: {
|
|
859
|
+
legend: { position: 'top', labels: { color: '#94a3b8', font: { size: 11 } } }
|
|
860
|
+
},
|
|
861
|
+
cutout: '65%'
|
|
862
|
+
}
|
|
863
|
+
});
|
|
827
864
|
</script></body></html>`;
|
|
828
865
|
try {
|
|
829
866
|
fs.writeFileSync(config.outputHtml, htmlContent, "utf-8");
|
|
Binary file
|