mirror of
https://github.com/ZeroCatDev/ClassworksKV.git
synced 2025-07-01 20:09:23 +00:00
83 lines
2.6 KiB
JavaScript
83 lines
2.6 KiB
JavaScript
import { spawn } from 'child_process';
|
|
import { fileURLToPath } from 'url';
|
|
import { dirname, join } from 'path';
|
|
|
|
// 获取当前文件的目录路径
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = dirname(__filename);
|
|
|
|
// 颜色输出
|
|
const colors = {
|
|
reset: '\x1b[0m',
|
|
red: '\x1b[31m',
|
|
green: '\x1b[32m',
|
|
yellow: '\x1b[33m',
|
|
blue: '\x1b[34m',
|
|
magenta: '\x1b[35m',
|
|
cyan: '\x1b[36m'
|
|
};
|
|
|
|
/**
|
|
* 运行脚本
|
|
* @param {string} scriptName 脚本文件名
|
|
* @param {string} description 测试描述
|
|
*/
|
|
function runScript(scriptName, description) {
|
|
return new Promise((resolve, reject) => {
|
|
console.log(`\n${colors.cyan}=======================================${colors.reset}`);
|
|
console.log(`${colors.cyan}运行: ${description}${colors.reset}`);
|
|
console.log(`${colors.cyan}=======================================${colors.reset}\n`);
|
|
|
|
const scriptPath = join(__dirname, scriptName);
|
|
const child = spawn('node', [scriptPath], { stdio: 'inherit' });
|
|
|
|
child.on('close', (code) => {
|
|
if (code === 0) {
|
|
console.log(`\n${colors.green}${description}完成,退出码: ${code}${colors.reset}`);
|
|
resolve();
|
|
} else {
|
|
console.error(`\n${colors.red}${description}失败,退出码: ${code}${colors.reset}`);
|
|
reject(new Error(`脚本退出码: ${code}`));
|
|
}
|
|
});
|
|
|
|
child.on('error', (error) => {
|
|
console.error(`\n${colors.red}启动脚本时出错: ${error.message}${colors.reset}`);
|
|
reject(error);
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 主函数
|
|
*/
|
|
async function main() {
|
|
console.log(`${colors.magenta}开始运行所有限速测试...${colors.reset}`);
|
|
|
|
try {
|
|
// 运行功能测试
|
|
await runScript('test-rate-limit.js', '功能测试');
|
|
|
|
// 等待一段时间以确保限速计数器重置
|
|
console.log(`\n${colors.yellow}等待30秒以确保限速计数器重置...${colors.reset}`);
|
|
await new Promise(resolve => setTimeout(resolve, 30000));
|
|
|
|
// 运行压力测试
|
|
await runScript('stress-test.js', '压力测试');
|
|
|
|
// 等待一段时间以确保限速计数器重置
|
|
console.log(`\n${colors.yellow}等待30秒以确保限速计数器重置...${colors.reset}`);
|
|
await new Promise(resolve => setTimeout(resolve, 30000));
|
|
|
|
// 运行分布式测试
|
|
await runScript('distributed-test.js', '分布式测试');
|
|
|
|
console.log(`\n${colors.green}所有测试已完成!${colors.reset}`);
|
|
} catch (error) {
|
|
console.error(`\n${colors.red}测试过程中发生错误: ${error.message}${colors.reset}`);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
// 执行主函数
|
|
main().catch(console.error); |