You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.8 KiB
JavaScript
72 lines
1.8 KiB
JavaScript
import http from 'k6/http';
|
|
import { check, sleep } from 'k6';
|
|
|
|
const profile = __ENV.K6_PROFILE || 'smoke';
|
|
const baseURL = (__ENV.K6_BASE_URL || '').replace(/\/$/, '');
|
|
const authToken = __ENV.K6_AUTH_TOKEN || 'dev-token';
|
|
|
|
export const options = profile === 'load'
|
|
? {
|
|
vus: Number(__ENV.K6_VUS || 20),
|
|
duration: __ENV.K6_DURATION || '2m',
|
|
thresholds: {
|
|
http_req_failed: ['rate<0.05'],
|
|
http_req_duration: ['p(95)<500'],
|
|
},
|
|
}
|
|
: {
|
|
vus: Number(__ENV.K6_VUS || 2),
|
|
duration: __ENV.K6_DURATION || '20s',
|
|
thresholds: {
|
|
http_req_failed: ['rate<0.2'],
|
|
http_req_duration: ['p(95)<800'],
|
|
},
|
|
};
|
|
|
|
function assertBaseURL() {
|
|
if (!baseURL) {
|
|
throw new Error('K6_BASE_URL is required');
|
|
}
|
|
}
|
|
|
|
export default function gatewayCriticalPaths() {
|
|
assertBaseURL();
|
|
|
|
const headers = {
|
|
headers: {
|
|
'Content-Type': 'application/json',
|
|
Authorization: `Bearer ${authToken}`,
|
|
},
|
|
};
|
|
|
|
const top10 = http.get(`${baseURL}/api/v1/leaderboard/top10`);
|
|
check(top10, {
|
|
'leaderboard top10 responds without 5xx': (r) => r.status < 500,
|
|
});
|
|
|
|
const player = http.get(`${baseURL}/api/v1/leaderboard/players/player-1`, headers);
|
|
check(player, {
|
|
'player lookup responds without 5xx': (r) => r.status < 500,
|
|
});
|
|
|
|
const randomQuestion = http.post(
|
|
`${baseURL}/api/v1/questions/random`,
|
|
JSON.stringify({}),
|
|
headers,
|
|
);
|
|
check(randomQuestion, {
|
|
'random question responds without 5xx': (r) => r.status < 500,
|
|
});
|
|
|
|
const startSession = http.post(
|
|
`${baseURL}/api/v1/sessions/start`,
|
|
JSON.stringify({ user_id: 'player-1' }),
|
|
headers,
|
|
);
|
|
check(startSession, {
|
|
'session start responds without 5xx': (r) => r.status < 500,
|
|
});
|
|
|
|
sleep(Number(__ENV.K6_SLEEP_SECONDS || 0.5));
|
|
}
|