35 lines
1.0 KiB
JavaScript
35 lines
1.0 KiB
JavaScript
import http from 'k6/http';
|
|
import { check, sleep } from 'k6';
|
|
|
|
// k6 Load Test Configuration for NextGen Sync Engine & API
|
|
// SLA Target: 5,000 events/sec/shard
|
|
export const options = {
|
|
stages: [
|
|
{ duration: '30s', target: 50 }, // Ramp up to 50 VUs
|
|
{ duration: '1m', target: 200 }, // Sustain 200 VUs for high throughput testing
|
|
{ duration: '30s', target: 0 }, // Ramp down
|
|
],
|
|
thresholds: {
|
|
http_req_duration: ['p(95)<200'], // 95% of requests must complete within 200ms
|
|
http_req_failed: ['rate<0.01'], // Error rate must be under 1%
|
|
},
|
|
};
|
|
|
|
const BASE_URL = __ENV.TARGET_URL || 'http://localhost:3001';
|
|
|
|
export default function () {
|
|
// Test 1: Health check / SLA probe
|
|
const healthRes = http.get(`${BASE_URL}/api/health`);
|
|
check(healthRes, {
|
|
'health status is 200': (r) => r.status === 200,
|
|
});
|
|
|
|
// Test 2: Sync Engine metrics SLA probe
|
|
const metricsRes = http.get(`${BASE_URL}/api/metrics`);
|
|
check(metricsRes, {
|
|
'metrics status is 200': (r) => r.status === 200,
|
|
});
|
|
|
|
sleep(0.1);
|
|
}
|