61 lines
1.5 KiB
JavaScript
61 lines
1.5 KiB
JavaScript
import http from 'k6/http';
|
|
import { check, sleep } from 'k6';
|
|
|
|
/**
|
|
* ST-GW-01 — Gateway health liveness bajo carga.
|
|
*
|
|
* k6 run -e BASE_URL=http://127.0.0.1:8189 -e PROFILE=shared8g k6_gateway_health.js
|
|
* k6 run -e PROFILE=lab k6_gateway_health.js
|
|
*
|
|
* Perfiles:
|
|
* shared8g (default) — host Ubuntu 8GiB compartido (MLflow/Airflow/etc.)
|
|
* lab — Docker dedicado a IPS
|
|
*/
|
|
const PROFILE = __ENV.PROFILE || 'shared8g';
|
|
|
|
const profiles = {
|
|
shared8g: {
|
|
stages: [
|
|
{ duration: '20s', target: 5 },
|
|
{ duration: '40s', target: 15 },
|
|
{ duration: '40s', target: 25 },
|
|
{ duration: '20s', target: 0 },
|
|
],
|
|
thresholds: {
|
|
http_req_failed: ['rate<0.01'],
|
|
http_req_duration: ['p(95)<500'],
|
|
},
|
|
},
|
|
lab: {
|
|
stages: [
|
|
{ duration: '30s', target: 20 },
|
|
{ duration: '1m', target: 50 },
|
|
{ duration: '1m', target: 100 },
|
|
{ duration: '30s', target: 0 },
|
|
],
|
|
thresholds: {
|
|
http_req_failed: ['rate<0.001'],
|
|
http_req_duration: ['p(95)<300'],
|
|
},
|
|
},
|
|
};
|
|
|
|
const cfg = profiles[PROFILE] || profiles.shared8g;
|
|
|
|
export const options = {
|
|
stages: cfg.stages,
|
|
thresholds: cfg.thresholds,
|
|
tags: { profile: PROFILE, host: 'ubuntu-shared-8g' },
|
|
};
|
|
|
|
const BASE_URL = __ENV.BASE_URL || 'http://127.0.0.1:8189';
|
|
|
|
export default function () {
|
|
const res = http.get(`${BASE_URL}/health/live`);
|
|
check(res, {
|
|
'status is 200': (r) => r.status === 200,
|
|
'body ok': (r) => String(r.body).includes('ok'),
|
|
});
|
|
sleep(0.2);
|
|
}
|