aded k6 and script and updated code with better logic and indexing on schema
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
import http from 'k6/http';
|
||||
import { check } from 'k6';
|
||||
import { Counter } from 'k6/metrics';
|
||||
|
||||
const seed = JSON.parse(open('./seed-data.json'));
|
||||
const BASE_URL = __ENV.BASE_URL || 'http://app:3000';
|
||||
|
||||
const successfulBookings = new Counter('successful_bookings');
|
||||
|
||||
export const options = {
|
||||
scenarios: {
|
||||
concurrent_booking: {
|
||||
executor: 'per-vu-iterations',
|
||||
vus: 10,
|
||||
iterations: 1,
|
||||
maxDuration: '30s',
|
||||
},
|
||||
},
|
||||
thresholds: {
|
||||
successful_bookings: ['count==1'],
|
||||
},
|
||||
};
|
||||
|
||||
export default function () {
|
||||
const session = seed.sessions[0];
|
||||
const user = seed.users[__VU - 1];
|
||||
|
||||
const response = http.post(
|
||||
`${BASE_URL}/sessions/${session.id}/book`,
|
||||
JSON.stringify({ userId: user.id }),
|
||||
{
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
responseCallback: http.expectedStatuses(200, 400),
|
||||
}
|
||||
);
|
||||
|
||||
if (response.status === 200) {
|
||||
successfulBookings.add(1);
|
||||
}
|
||||
|
||||
check(response, {
|
||||
'booking returned expected status': (r) =>
|
||||
r.status === 200 || r.status === 400,
|
||||
});
|
||||
|
||||
console.log(
|
||||
`VU ${__VU}: status=${response.status}, session=${session.id}`
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user