blaze-performance-tester 3.2.36 → 3.2.38
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 +47 -6
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -5605,7 +5605,6 @@ var i18n = {
|
|
|
5605
5605
|
breakdown: "\u{1F522} HTTP Status Code Breakdown Rate",
|
|
5606
5606
|
code: "Code"
|
|
5607
5607
|
},
|
|
5608
|
-
rca: "\u26A1 Gemini 2.5 Flash Autonomous Root Cause Analysis (RCA)",
|
|
5609
5608
|
charts: {
|
|
5610
5609
|
volume: "\u{1F4CA} Throughput Velocity & Workload Volume",
|
|
5611
5610
|
concurrency: "\u{1F504} Active Concurrency (VUs) vs. TTF Trend & AI Load Forecast",
|
|
@@ -5657,7 +5656,7 @@ var i18n = {
|
|
|
5657
5656
|
breakdown: "\u{1F522} Tasa de Desglose de C\xF3digos HTTP",
|
|
5658
5657
|
code: "C\xF3digo"
|
|
5659
5658
|
},
|
|
5660
|
-
rca: "\u26A1
|
|
5659
|
+
rca: "\u26A1 Gemini 2.5 Flash Autonomous Root Cause Analysis (RCA)",
|
|
5661
5660
|
charts: {
|
|
5662
5661
|
volume: "\u{1F4CA} Velocidad de Rendimiento y Carga de Trabajo",
|
|
5663
5662
|
concurrency: "\u{1F504} Concurrencia (VUs) vs Tendencia TTF",
|
|
@@ -5697,7 +5696,7 @@ var i18n = {
|
|
|
5697
5696
|
verdict: "\u{1F916} \u062D\u0643\u0645 \u0648\u0643\u064A\u0644 \u0627\u062E\u062A\u0628\u0627\u0631 \u0627\u0644\u062C\u0647\u062F \u0628\u0627\u0644\u0630\u0643\u0627\u0621 \u0627\u0644\u0627\u0635\u0637\u0646\u0627\u0639\u064A",
|
|
5698
5697
|
health: {
|
|
5699
5698
|
title: "\u0646\u0642\u0627\u0637 \u0635\u062D\u0629 \u062A\u0634\u063A\u064A\u0644 \u0628\u0644\u064A\u0632",
|
|
5700
|
-
subtitle: "\u0627\u0644\u062A\u0642\u064A\u064A\u0645 \u0627\u0644\u0645\u0631\u0643\u0628 \u0644\u0645\u062D\u0631\u0643 \u0627\u0644\u062C\u0648\u062F\u0629"
|
|
5699
|
+
subtitle: "\u0627\u0644\u062A\u0642\u064A\u064A\u0645 \u0627\u0644\u0645\u0631\u0643\u0628\u0629 \u0644\u0645\u062D\u0631\u0643 \u0627\u0644\u062C\u0648\u062F\u0629"
|
|
5701
5700
|
},
|
|
5702
5701
|
matrix: {
|
|
5703
5702
|
title: "\u{1F4CB} \u0645\u0635\u0641\u0648\u0641\u0629 \u0627\u0633\u062A\u062C\u0627\u0628\u0629 HTTP",
|
|
@@ -5867,7 +5866,7 @@ var i18n = {
|
|
|
5867
5866
|
title: "\u0DA7\u0DD9\u0DBD\u0DD2\u0DB8\u0DD9\u0DA7\u0DCA\u200D\u0DBB\u0DD2 \u0D85\u0DB1\u0DD4\u0D9A\u0DD8\u0DAD\u0DD2 \u0DBD\u0DDC\u0D9C\u0DCA",
|
|
5868
5867
|
threads: "\u0DC3\u0DB8\u0D9C\u0DCF\u0DB8\u0DD3\u0DAD\u0DCA\u0DC0\u0DBA (Threads)",
|
|
5869
5868
|
throughput: "\u0DB4\u0DCA\u200D\u0DBB\u0DC0\u0DCF\u0DC4 \u0D85\u0DB1\u0DD4\u0DB4\u0DCF\u0DAD\u0DBA",
|
|
5870
|
-
avgLatency: "\u0DC3\u0DCF\u0DB8\u0DCF\u0DB1\u0DCA\u200D\
|
|
5869
|
+
avgLatency: "\u0DC3\u0DCF\u0DB8\u0DCF\u0DB1\u0DCA\u200D\u0E22 \u0DB4\u0DCA\u200D\u0DBB\u0DB8\u0DCF\u0DAF\u0DBA",
|
|
5871
5870
|
p95: "P95 \u0DB4\u0DCA\u200D\u0DBB\u0DB8\u0DCF\u0DAF\u0DBA",
|
|
5872
5871
|
errors: "\u0DAF\u0DDD\u0DC2 \u0D85\u0DB1\u0DD4\u0DB4\u0DCF\u0DAD\u0DBA",
|
|
5873
5872
|
status: "\u0DAD\u0DAD\u0DCA\u0DC0\u0DBA",
|
|
@@ -6391,7 +6390,8 @@ async function runIntelligentAgenticStressTest(config) {
|
|
|
6391
6390
|
apdex: metrics.apdexScore,
|
|
6392
6391
|
throughput: metrics.requestsPerSecond,
|
|
6393
6392
|
successRequests: metrics.c2xx + metrics.c3xx,
|
|
6394
|
-
failedRequests: metrics.c4xx + metrics.c5xx
|
|
6393
|
+
failedRequests: metrics.c4xx + metrics.c5xx,
|
|
6394
|
+
c429: metrics.codeCounts[429] || 0
|
|
6395
6395
|
};
|
|
6396
6396
|
printMatrixDashboard(metrics, currentThreads);
|
|
6397
6397
|
history.push(currentState);
|
|
@@ -6488,7 +6488,8 @@ async function runStandardStressTest(config) {
|
|
|
6488
6488
|
apdex: metrics.apdexScore,
|
|
6489
6489
|
throughput: metrics.requestsPerSecond,
|
|
6490
6490
|
successRequests: metrics.c2xx + metrics.c3xx,
|
|
6491
|
-
failedRequests: metrics.c4xx + metrics.c5xx
|
|
6491
|
+
failedRequests: metrics.c4xx + metrics.c5xx,
|
|
6492
|
+
c429: metrics.codeCounts[429] || 0
|
|
6492
6493
|
}];
|
|
6493
6494
|
let semanticReport = null;
|
|
6494
6495
|
if (config.clusterLogs) {
|
|
@@ -6703,6 +6704,11 @@ function exportHtmlDashboard(history, config, verdictReason, semanticReport, res
|
|
|
6703
6704
|
const estimatedMonthlyCost = (cards.throughput * 0.045 * 24 * 30).toFixed(2);
|
|
6704
6705
|
const recommendedCpuCores = Math.max(2, Math.ceil(cards.saturationKneePoint / 75));
|
|
6705
6706
|
const recommendedRamGb = recommendedCpuCores * 2;
|
|
6707
|
+
const recThreadsTarget = cards.healthScore >= 85 ? Math.floor(cards.saturationKneePoint * 1.5) : Math.max(5, Math.floor(cards.saturationKneePoint * 0.8));
|
|
6708
|
+
const recRampPattern = cards.errorRate > 0.02 || cards.stdDev > 50 ? `Gradual Linear Ramp-Up (${Math.max(30, config.durationSec * 0.3)}s duration)` : "Standard Fast Step Load Profile";
|
|
6709
|
+
const recStrategyText = cards.healthScore >= 85 ? "System exhibits reliable resource headroom. Future stress waves can step up thread footprints confidently." : "Resource degradation detected under peak stress. Restrict thread allocation caps and extend your warm-up timelines.";
|
|
6710
|
+
const rateLimitWave = history.find((h) => h.c429 > 0);
|
|
6711
|
+
const rateLimitBreakpointHtml = rateLimitWave ? `<span style="color: #ef4444; font-weight: bold;">${rateLimitWave.throughput.toFixed(1)} req/s</span> (at ${rateLimitWave.threads} VUs concurrency tier)` : `<span style="color: #10b981; font-weight: bold;">Not Triggered</span> (Gateway did not enforce any 429 constraints during stress thresholds)`;
|
|
6706
6712
|
const firstTimestamp = rawRequests[0]?.timestampMs || Date.now();
|
|
6707
6713
|
const scatterPoints = rawRequests.slice(0, 180).map((r) => ({
|
|
6708
6714
|
x: Number(((r.timestampMs - firstTimestamp) / 1e3).toFixed(2)),
|
|
@@ -6993,6 +6999,41 @@ ${formattedTicketLogs}
|
|
|
6993
6999
|
</div>
|
|
6994
7000
|
</div>
|
|
6995
7001
|
|
|
7002
|
+
<!-- \u{1F4A1} Smart Config Recommendation Cards Feature -->
|
|
7003
|
+
<div class="card" style="margin-bottom: 2rem; background: #0f172a; border: 1px dashed #38bdf8;">
|
|
7004
|
+
<h3 style="color: #38bdf8; display: flex; align-items: center; gap: 0.6rem; font-size: 1.2rem; border-bottom: 1px solid #1e293b; padding-bottom: 0.5rem;">
|
|
7005
|
+
\u{1F4A1} Smart Config Recommendation Cards
|
|
7006
|
+
</h3>
|
|
7007
|
+
<div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; margin-top: 1rem;">
|
|
7008
|
+
<div style="background: #131c2e; padding: 1.25rem; border-radius: 6px; border: 1px solid #1e293b;">
|
|
7009
|
+
<div class="card-title" style="color: #94a3b8;">Suggested Concurrency Limit</div>
|
|
7010
|
+
<div style="font-size: 1.8rem; font-weight: bold; color: #38bdf8; margin-top: 0.25rem;">${recThreadsTarget} <span style="font-size: 0.9rem; font-weight: 500; color: #94a3b8;">Target Threads</span></div>
|
|
7011
|
+
<div style="font-size: 0.85rem; color: #cbd5e1; margin-top: 0.5rem; line-height: 1.4;">Based on your capacity limits and saturation markers.</div>
|
|
7012
|
+
</div>
|
|
7013
|
+
<div style="background: #131c2e; padding: 1.25rem; border-radius: 6px; border: 1px solid #1e293b;">
|
|
7014
|
+
<div class="card-title" style="color: #94a3b8;">Ideal Ramp-Up Pattern</div>
|
|
7015
|
+
<div style="font-size: 1.2rem; font-weight: bold; color: #f43f5e; margin-top: 0.5rem; line-height: 1.3;">${recRampPattern}</div>
|
|
7016
|
+
<div style="font-size: 0.85rem; color: #cbd5e1; margin-top: 0.5rem; line-height: 1.4;">Derived from variance calculations and request error trends.</div>
|
|
7017
|
+
</div>
|
|
7018
|
+
</div>
|
|
7019
|
+
<div style="margin-top: 1.25rem; background: #090d16; padding: 0.75rem 1rem; border-radius: 4px; font-size: 0.9rem; border-inline-start: 4px solid #38bdf8; color: #cbd5e1;">
|
|
7020
|
+
<strong>Strategic Forecast:</strong> ${recStrategyText}
|
|
7021
|
+
</div>
|
|
7022
|
+
</div>
|
|
7023
|
+
|
|
7024
|
+
<!-- \u{1F6D1} Rate-Limit Enforcement Breakpoint Walls -->
|
|
7025
|
+
<div class="card" style="margin-bottom: 2rem; background: #191316; border: 1px solid #f43f5e;">
|
|
7026
|
+
<h3 style="color: #f43f5e; display: flex; align-items: center; gap: 0.6rem; font-size: 1.2rem; border-bottom: 1px solid #2e181f; padding-bottom: 0.5rem;">
|
|
7027
|
+
\u{1F6D1} Rate-Limit Enforcement Breakpoint Wall
|
|
7028
|
+
</h3>
|
|
7029
|
+
<div style="padding: 0.5rem 0; font-size: 0.95rem; color: #e2e8f0; line-height: 1.5;">
|
|
7030
|
+
Identifies the boundary capacity vector indicating exactly at what transaction velocity structural HTTP <code>429 Too Many Requests</code> errors are initiated by target enforcement mechanisms:
|
|
7031
|
+
<div style="font-size: 1.4rem; margin-top: 0.75rem; color: #ffffff; background: #0f0a0d; padding: 0.75rem 1rem; border-radius: 6px; border: 1px solid #3a1c24;">
|
|
7032
|
+
${rateLimitBreakpointHtml}
|
|
7033
|
+
</div>
|
|
7034
|
+
</div>
|
|
7035
|
+
</div>
|
|
7036
|
+
|
|
6996
7037
|
${baselineComparisonHtml}
|
|
6997
7038
|
${crossBrowserMatrixSectionHtml}
|
|
6998
7039
|
|