Files
security-scan-test/k6/load-test.js
demo-bot 17bd84b39f
Some checks failed
Build and Push to ACR / Build and Push (push) Has been skipped
SonarQube Analysis / Build, Test & Analyse (push) Failing after 8s
Build and Publish TechDocs / build-and-publish (push) Successful in 1m5s
feat: add service discovery, OTel instrumentation, and k6 load tests (#1)
2026-04-17 11:21:43 +00:00

37 lines
1.3 KiB
JavaScript

// FALLBACK k6 load-test script.
// This static skeleton is only used when The Watcher agent fails to generate
// a bespoke k6 script tailored to the application's detected HTTP endpoints.
// When generation succeeds, the agent produces a custom script that replaces
// this file in the scaffolded output repository.
import http from 'k6/http';
import { check, sleep } from 'k6';
export const options = {
scenarios: {
load_test: {
executor: 'ramping-vus',
startVUs: 0,
stages: [
{ duration: '${{ values.k6_ramp_up | default("10s") }}', target: ${{ values.k6_virtual_users | default(10) }} },
{ duration: '${{ values.k6_duration | default("30s") }}', target: ${{ values.k6_virtual_users | default(10) }} },
{ duration: '5s', target: 0 },
],
},
},
thresholds: {
http_req_duration: ['p(95)<500'],
http_req_failed: ['rate<0.01'],
},
};
const BASE_URL = `http://${{ values.frontend_service_name | default("frontend") }}.${{ values.destination_namespace }}.svc.cluster.local:${{ values.frontend_service_port | default(80) }}`;
export default function () {
const res = http.get(`${BASE_URL}${{ values.k6_target_path | default("/") }}`);
check(res, {
'status is 200': (r) => r.status === 200,
'response time < 500ms': (r) => r.timings.duration < 500,
});
sleep(0.5);
}