feat: add service discovery, OTel instrumentation, and k6 load tests
Some checks failed
SonarQube Analysis / Build, Test & Analyse (pull_request) Failing after 17s
Integration Test / Platform Conformance (pull_request) Successful in 13s
Integration Test / Unit Tests + Container Smoke (workflow_dispatch) All checks passed
SonarQube Analysis / Build, Test & Analyse (push) Failing after 10s
Integration Test / Unit Tests + Container Smoke (pull_request) Successful in 8s
Security Scanning / Gitleaks — Secret Scan (pull_request) Successful in 7s
Security Scanning / Trivy — Filesystem & Dependency Scan (pull_request) Successful in 39s
Security Scanning / Security Summary (pull_request) Successful in 6s

This commit is contained in:
2026-04-17 11:21:36 +00:00
parent 6475133df4
commit a8641f2847

36
k6/load-test.js Normal file
View File

@@ -0,0 +1,36 @@
// 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);
}