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

179 lines
5.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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);
// }
// });
});