load test
This commit is contained in:
@@ -0,0 +1,24 @@
|
|||||||
|
config:
|
||||||
|
target: "http://localhost:8080"
|
||||||
|
phases:
|
||||||
|
- duration: 50
|
||||||
|
arrivalRate: 20
|
||||||
|
name: "Ramp to ~1000 concurrent users" # 20 * 50 = 1000 users created
|
||||||
|
- pause: 120
|
||||||
|
maxVusers: 1000
|
||||||
|
http:
|
||||||
|
timeout: 30
|
||||||
|
|
||||||
|
scenarios:
|
||||||
|
- name: "Fetch University References"
|
||||||
|
flow:
|
||||||
|
- loop:
|
||||||
|
- get:
|
||||||
|
url: "/v1/references/univ"
|
||||||
|
headers:
|
||||||
|
Accept-Encoding: identity
|
||||||
|
capture:
|
||||||
|
- json: "$[0].code"
|
||||||
|
as: "first_univ_code"
|
||||||
|
- think: 2
|
||||||
|
count: 60
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
let requestCount = 0;
|
||||||
|
let startTime = Date.now();
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
setup: function (context, ee, next) {
|
||||||
|
console.log("🚀 Test started\n");
|
||||||
|
|
||||||
|
ee.on(
|
||||||
|
"response",
|
||||||
|
function (latency, statusCode, requestParams, response, startTime) {
|
||||||
|
requestCount++;
|
||||||
|
const elapsedSeconds = (Date.now() - startTime) / 1000;
|
||||||
|
const reqPerSec = (requestCount / elapsedSeconds).toFixed(2);
|
||||||
|
|
||||||
|
console.log(
|
||||||
|
`[${new Date().toLocaleTimeString()}] Requests sent: ${requestCount} | Rate: ${reqPerSec} req/s | Status: ${statusCode}`,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
return next();
|
||||||
|
},
|
||||||
|
|
||||||
|
cleanup: function (context, ee, next) {
|
||||||
|
const totalTime = (Date.now() - startTime) / 1000;
|
||||||
|
const avgRate = (requestCount / totalTime).toFixed(2);
|
||||||
|
console.log(`\n✅ Test completed`);
|
||||||
|
console.log(`Total requests: ${requestCount}`);
|
||||||
|
console.log(`Average rate: ${avgRate} req/s`);
|
||||||
|
return next();
|
||||||
|
},
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user