import http from 'k6/http'; import { check, sleep } from 'k6'; const BASE_URL = __ENV.BASE_URL || 'http://app:3000'; const seed = JSON.parse(open('./seed-data.json')); export const options = { stages: [ { duration: '15s', target: 1 }, { duration: '20s', target: 3 }, { duration: '20s', target: 5 }, { duration: '10s', target: 0 }, ], thresholds: { http_req_failed: ['rate<0.01'], http_req_duration: ['p(95)<500'], checks: ['rate>0.99'], }, }; export default function () { const user = seed.users[(__VU + __ITER) % seed.users.length]; const session = seed.sessions[(__VU + __ITER) % seed.sessions.length]; const requests = [ ['users', `${BASE_URL}/users/`], ['teachers', `${BASE_URL}/teachers/`], [ 'available sessions', `${BASE_URL}/sessions/available?dateTimestamp=${encodeURIComponent(session.dateTimestamp)}`, ], [ 'user session history', `${BASE_URL}/sessions/${user.id}/sessions`, ], ]; for (const [name, url] of requests) { const response = http.get(url); check(response, { [`${name}: HTTP 200`]: (r) => r.status === 200, [`${name}: JSON response`]: (r) => r.headers['Content-Type']?.includes('application/json'), }); } sleep(1); }