修改文件结构,统一文档格式

This commit is contained in:
ylweng
2025-09-01 02:42:03 +08:00
parent 2bd1d8c032
commit abc1184f81
151 changed files with 870 additions and 589 deletions

View File

@@ -0,0 +1,233 @@
/**
* 性能监控系统测试脚本
* @file performance-monitor-test.js
* @description 测试性能监控系统的基本功能
*/
const { performanceMonitor, events: perfEvents } = require('../backend/utils/performance-monitor');
const logger = require('../backend/utils/logger');
// 配置测试日志
function log(message) {
console.log(`[${new Date().toISOString()}] ${message}`);
}
// 测试事件监听
function setupEventListeners() {
perfEvents.on('monitoringStarted', (data) => {
log(`✅ 监控启动事件触发,间隔: ${data.interval}ms`);
});
perfEvents.on('monitoringStopped', () => {
log('✅ 监控停止事件触发');
});
perfEvents.on('highCpuUsage', (data) => {
log(`⚠️ 高CPU使用率事件触发: ${data.usage}% (阈值: ${data.threshold}%)`);
});
perfEvents.on('highMemoryUsage', (data) => {
log(`⚠️ 高内存使用率事件触发: ${data.usage}% (阈值: ${data.threshold}%)`);
});
perfEvents.on('highDiskUsage', (data) => {
log(`⚠️ 高磁盘使用率事件触发: ${data.usage}% (阈值: ${data.threshold}%)`);
});
log('事件监听器已设置');
}
// 测试系统资源监控
async function testSystemMonitoring() {
log('\n--- 测试系统资源监控 ---');
try {
// 获取系统指标
const metrics = performanceMonitor.getSystemMetrics();
log('系统指标:');
log(`CPU使用率: ${metrics.current.cpu.usage}%`);
log(`内存使用率: ${metrics.current.memory.usage}%`);
log(`磁盘使用率: ${metrics.current.disk.usage}%`);
// 测试收集系统指标
const collected = performanceMonitor.collectSystemMetrics();
log('收集的系统指标:');
log(`CPU使用率: ${collected.cpuUsage.usage}%`);
log(`内存使用率: ${collected.memoryUsage.usage}%`);
log(`磁盘使用率: ${collected.diskUsage.usage}%`);
return true;
} catch (error) {
log(`❌ 系统资源监控测试失败: ${error.message}`);
return false;
}
}
// 测试警报阈值设置
async function testAlertThresholds() {
log('\n--- 测试警报阈值设置 ---');
try {
// 获取当前阈值
const originalThresholds = performanceMonitor.getAlertThresholds();
log('当前警报阈值:');
log(`CPU使用率阈值: ${originalThresholds.system.cpuUsage}%`);
log(`内存使用率阈值: ${originalThresholds.system.memoryUsage}%`);
log(`API响应时间阈值: ${originalThresholds.api.responseTime}ms`);
// 设置新阈值
const newThresholds = {
system: {
cpuUsage: 50,
memoryUsage: 60
},
api: {
responseTime: 200
}
};
const result = performanceMonitor.setAlertThresholds(newThresholds);
log('设置新阈值结果:');
log(`成功: ${result.success}`);
log(`CPU使用率新阈值: ${result.thresholds.system.cpuUsage}%`);
log(`内存使用率新阈值: ${result.thresholds.system.memoryUsage}%`);
log(`API响应时间新阈值: ${result.thresholds.api.responseTime}ms`);
// 恢复原始阈值
performanceMonitor.setAlertThresholds(originalThresholds);
log('已恢复原始阈值');
return true;
} catch (error) {
log(`❌ 警报阈值设置测试失败: ${error.message}`);
return false;
}
}
// 测试监控启动和停止
async function testMonitoringControl() {
log('\n--- 测试监控启动和停止 ---');
try {
// 获取当前状态
const originalStatus = performanceMonitor.getMonitoringStatus();
log(`当前监控状态: ${originalStatus.isMonitoring ? '运行中' : '已停止'}`);
// 如果已经在运行,先停止
if (originalStatus.isMonitoring) {
const stopResult = performanceMonitor.stopMonitoring();
log(`停止监控结果: ${stopResult.success ? '成功' : '失败'} - ${stopResult.message}`);
}
// 启动监控(使用短间隔进行测试)
const startResult = performanceMonitor.startMonitoring(5000); // 5秒间隔
log(`启动监控结果: ${startResult.success ? '成功' : '失败'} - ${startResult.message}`);
// 等待10秒让监控运行一段时间
log('等待10秒...');
await new Promise(resolve => setTimeout(resolve, 10000));
// 获取更新后的状态
const updatedStatus = performanceMonitor.getMonitoringStatus();
log(`更新后的监控状态: ${updatedStatus.isMonitoring ? '运行中' : '已停止'}`);
log(`监控间隔: ${updatedStatus.interval}ms`);
// 停止监控
const finalStopResult = performanceMonitor.stopMonitoring();
log(`停止监控结果: ${finalStopResult.success ? '成功' : '失败'} - ${finalStopResult.message}`);
// 恢复原始状态
if (originalStatus.isMonitoring) {
performanceMonitor.startMonitoring(originalStatus.interval);
log(`已恢复原始监控状态,间隔: ${originalStatus.interval}ms`);
}
return true;
} catch (error) {
log(`❌ 监控启动和停止测试失败: ${error.message}`);
return false;
}
}
// 测试API统计
async function testApiStats() {
log('\n--- 测试API统计 ---');
try {
// 模拟API请求
const req1 = { method: 'GET', path: '/api/test', headers: {}, ip: '127.0.0.1' };
const res1 = { statusCode: 200, end: function() {}, on: function(event, callback) { callback(); } };
const req2 = { method: 'POST', path: '/api/users', headers: {}, ip: '127.0.0.1' };
const res2 = { statusCode: 201, end: function() {}, on: function(event, callback) { callback(); } };
const req3 = { method: 'GET', path: '/api/error', headers: {}, ip: '127.0.0.1' };
const res3 = { statusCode: 500, end: function() {}, on: function(event, callback) { callback(); } };
// 重置API统计
performanceMonitor.resetApiStats();
log('API统计已重置');
// 记录API请求
log('记录API请求...');
performanceMonitor.recordApiRequest(req1, res1, Date.now() - 50); // 50ms响应时间
performanceMonitor.recordApiRequest(req2, res2, Date.now() - 100); // 100ms响应时间
performanceMonitor.recordApiRequest(req3, res3, Date.now() - 600); // 600ms响应时间慢请求
// 获取API统计
const apiStats = performanceMonitor.getApiStats();
log('API统计:');
log(`总请求数: ${apiStats.totalRequests}`);
log(`总错误数: ${apiStats.totalErrors}`);
log(`错误率: ${apiStats.errorRate}%`);
log(`平均响应时间: ${apiStats.avgResponseTime}ms`);
log(`每分钟请求数: ${apiStats.requestsPerMinute}`);
log('端点统计:');
apiStats.endpoints.forEach(endpoint => {
log(`- ${endpoint.endpoint}: ${endpoint.count}请求, ${endpoint.avgDuration}ms平均响应时间, ${endpoint.errorRate}%错误率`);
});
return true;
} catch (error) {
log(`❌ API统计测试失败: ${error.message}`);
return false;
}
}
// 运行所有测试
async function runAllTests() {
log('开始性能监控系统测试...');
// 设置事件监听器
setupEventListeners();
// 运行测试
const results = {
systemMonitoring: await testSystemMonitoring(),
alertThresholds: await testAlertThresholds(),
monitoringControl: await testMonitoringControl(),
apiStats: await testApiStats()
};
// 输出测试结果摘要
log('\n--- 测试结果摘要 ---');
Object.entries(results).forEach(([test, passed]) => {
log(`${test}: ${passed ? '✅ 通过' : '❌ 失败'}`);
});
const allPassed = Object.values(results).every(result => result === true);
log(`\n总体结果: ${allPassed ? '✅ 所有测试通过' : '❌ 部分测试失败'}`);
return allPassed;
}
// 执行测试
runAllTests()
.then(passed => {
log(`测试完成,${passed ? '全部通过' : '部分失败'}`);
process.exit(passed ? 0 : 1);
})
.catch(error => {
log(`测试执行错误: ${error.message}`);
process.exit(1);
});