1
0
mirror of https://github.com/ZeroCatDev/ClassworksKV.git synced 2025-07-01 20:09:23 +00:00
ClassworksKV/scripts/run-all-tests.js

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);