From cd8fe33d08221c2378a3c6e663d25d04dfdc554e Mon Sep 17 00:00:00 2001 From: Amirhossein Khalili Date: Sun, 20 Sep 2026 10:40:33 +0330 Subject: [PATCH] fix(load): send the exact assessment request count --- scripts/load_test.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/scripts/load_test.js b/scripts/load_test.js index 03bb486..ce1bde7 100644 --- a/scripts/load_test.js +++ b/scripts/load_test.js @@ -6,17 +6,15 @@ import exec from 'k6/execution'; const API_URL = __ENV.API_URL || 'http://localhost:8000/api/v1/cdr/raw'; const PROFILE = (__ENV.PROFILE || 'assessment').toLowerCase(); -const P95_MS = Number(__ENV.P95_MS || 50); +const P95_MS = __ENV.P95_MS ? Number(__ENV.P95_MS) : null; // Assessment profile directly models the required scenario: // 500 records in <5s. 125 iterations/s for 4 seconds schedules exactly 500 iterations. const assessmentScenario = { - executor: 'constant-arrival-rate', - rate: 125, - timeUnit: '1s', - duration: '4s', - preAllocatedVUs: 50, - maxVUs: 250, + executor: 'shared-iterations', + vus: 50, + iterations: 500, + maxDuration: '5s', gracefulStop: '5s', }; @@ -50,9 +48,10 @@ export const options = { assessment_completion_ms: ['max<5000'], } : {}), - // This is a project performance guardrail, not an assessment requirement. - // Override it with P95_MS=100 (etc.) if you want a different SLA. - http_req_duration: [`p(95)<${P95_MS}`], + // Optional project performance guardrail; the assessment defines no p95 SLA. + ...(Number.isFinite(P95_MS) && P95_MS > 0 ? { + http_req_duration: [`p(95)<${P95_MS}`], + } : {}), }, };