Files
ZYZ/game-server/test/qps.test.ts
T
2023-10-20 20:24:14 +08:00

179 lines
5.8 KiB
TypeScript

// import { Client } from './Client';
// import 'mocha';
// import { PinusWSClient } from 'pinus-robot-plugin';
// import async from 'async';
// describe('共鸣', function () {
// let pinusClient: PinusWSClient;
// let roleInfo;
// before(function (done) {
// const c = new Client();
// const timer = setInterval(() => {
// if (c.client) {
// pinusClient = c.client;
// roleInfo = c.roleInfo;
// clearInterval(timer);
// done();
// }
// }, 500);
// });
// after(function (done) {
// pinusClient.disconnect();
// // disconnect 后等待 500ms,供服务器清理环境、退出频道等
// setTimeout(() => {
// done();
// }, 500);
// });
// it('', function (done) {
// const NUM_CONCURRENT_REQUESTS = 10; // 设置并发请求数
// let totalRequests = 0; //总共请求数量
// let successfulRequests = 0; //成功数据
// function makeRequest(callback) {
// pinusClient.request('role.resonanceHandler.getData', {}, (result) => {
// totalRequests++;
// if (result && result.code == 0) {
// successfulRequests++;
// }
// callback();
// });
// }
// async.times(NUM_CONCURRENT_REQUESTS, (n, next) => {
// makeRequest(next);
// }, (err) => {
// if (err) {
// console.error('Error in making requests:', err);
// } else {
// console.log('Test completed.');
// console.log('Total requests:', totalRequests);
// console.log('Successful requests:', successfulRequests);
// console.log('QPS:', totalRequests);
// }
// // Cleanup and disconnect
// // pinusClient.disconnect();
// });
// // done();
// })
// });
import { Client } from './Client';
import 'mocha';
import { PinusWSClient } from 'pinus-robot-plugin';
import async from 'async';
describe('共鸣', function () {
let pinusClient: PinusWSClient;
let roleInfo;
before(function (done) {
const c = new Client();
const timer = setInterval(() => {
if (c.client) {
pinusClient = c.client;
roleInfo = c.roleInfo;
clearInterval(timer);
done();
}
}, 500);
});
after(function (done) {
pinusClient.disconnect();
// disconnect 后等待 500ms,供服务器清理环境、退出频道等
setTimeout(() => {
done();
}, 500);
});
// 在测试开始前记录开始时间
const startTime = Date.now();
it('', function (done) {
const NUM_CONCURRENT_REQUESTS = 8;
let totalRequests = 0;
let successfulRequests = 0;
function makeRequest(callback, requestNumber) {
const timerName = `RequestTime_${requestNumber}`;
console.time(timerName); // 开始计时
pinusClient.request('role.resonanceHandler.getData', {}, (result) => {
console.timeEnd(timerName); // 结束计时并输出耗时
totalRequests++;
if (result && result.code == 0) {
successfulRequests++;
}
callback();
});
}
async.times(NUM_CONCURRENT_REQUESTS, (n, next) => {
makeRequest(() => {
next();
}, n);
}, (err) => {
if (err) {
console.error('Error in making requests:', err);
} else {
// 在测试结束后记录结束时间
const endTime = Date.now();
const testDuration = (endTime - startTime - 500) / 1000; // 将毫秒转换为秒
console.log('testDuration', endTime - startTime - 500)
const qps = totalRequests / testDuration;
console.log('Test completed.');
console.log('Total requests:', totalRequests);
console.log('Successful requests:', successfulRequests);
// console.log('QPS:', qps);
}
done();
});
});
// it('', function (done) {
// const NUM_CONCURRENT_REQUESTS = 6;
// const REQUEST_INTERVAL = 170; // 125毫秒的间隔
// let totalRequests = 0;
// let successfulRequests = 0;
// let currentRequest = 0;
// function makeRequest(callback, requestNumber) {
// const timerName = `RequestTime_${requestNumber}`;
// console.time(timerName); // 开始计时
// pinusClient.request('role.resonanceHandler.getData', {}, (result) => {
// console.timeEnd(timerName); // 结束计时并输出耗时
// totalRequests++;
// if (result && result.code == 0) {
// successfulRequests++;
// }
// callback();
// });
// }
// function sendNextRequest() {
// if (currentRequest < NUM_CONCURRENT_REQUESTS) {
// makeRequest(() => {
// currentRequest++;
// if (currentRequest === NUM_CONCURRENT_REQUESTS) {
// done();
// }
// }, currentRequest);
// }
// }
//
// const requestIntervalId = setInterval(sendNextRequest, REQUEST_INTERVAL);
// // 当所有请求完成后清除定时器
// if (currentRequest === NUM_CONCURRENT_REQUESTS) {
// clearInterval(requestIntervalId);
// }
// });
});