37 lines
1.3 KiB
JavaScript
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);
|
|
}
|