- 将preset.ts移动到config目录,符合架构规范 - 迁移php-tools到java-tools,参考Java架构而非PHP - 清理AI层文档,整合为单一README - 删除core层,专注boot和ai层 - 集成AI层与Boot层,实现100%组件集成 - 清理废弃js文件和临时报告文件 - 更新导入路径,保持代码一致性
67 lines
2.0 KiB
JavaScript
67 lines
2.0 KiB
JavaScript
import http from 'k6/http';
|
||
import { check, sleep } from 'k6';
|
||
|
||
export const options = {
|
||
stages: [
|
||
{ duration: '10s', target: 5 }, // 预热阶段
|
||
{ duration: '30s', target: 20 }, // 正常负载
|
||
{ duration: '20s', target: 50 }, // 高负载
|
||
{ duration: '10s', target: 0 }, // 冷却
|
||
],
|
||
thresholds: {
|
||
http_req_duration: ['p(95)<500', 'p(99)<1000'],
|
||
http_req_failed: ['rate<0.1'],
|
||
checks: ['rate>0.8'],
|
||
},
|
||
};
|
||
|
||
const BASE = __ENV.BASE_URL || 'http://api:3000';
|
||
const API = BASE.endsWith('/api') ? BASE : `${BASE}/api`;
|
||
|
||
function safeJson(res) {
|
||
try { return res.json(); } catch (e) { return null; }
|
||
}
|
||
|
||
export default function () {
|
||
// 1. 测试AI恢复状态(公开端点)
|
||
const aiStatus = http.get(`${API}/ai/recovery/status`);
|
||
const statusData = safeJson(aiStatus);
|
||
|
||
check(aiStatus, {
|
||
'ai recovery status 200': (r) => r.status === 200,
|
||
'ai recovery status success': () => statusData && statusData.code === 1,
|
||
'ai recovery status has data': () => statusData && statusData.data !== null,
|
||
'ai recovery status structure': () => statusData && statusData.data && typeof statusData.data === 'object',
|
||
});
|
||
|
||
sleep(0.1);
|
||
|
||
// 2. 测试系统健康状态
|
||
const health = http.get(`${API}/health/quick`);
|
||
const healthData = safeJson(health);
|
||
|
||
check(health, {
|
||
'system health 200': (r) => r.status === 200,
|
||
'system health success': () => healthData && healthData.code === 1,
|
||
'system health status ok': () => healthData && healthData.data && healthData.data.status === 'ok',
|
||
});
|
||
|
||
sleep(0.1);
|
||
|
||
// 3. 测试AI治理的并发能力
|
||
const concurrentRequests = [
|
||
http.get(`${API}/ai/recovery/status`),
|
||
http.get(`${API}/health/quick`),
|
||
];
|
||
|
||
concurrentRequests.forEach((response, index) => {
|
||
const data = safeJson(response);
|
||
check(response, {
|
||
[`ai governance concurrent ${index + 1} response`]: (r) => r.status === 200,
|
||
[`ai governance concurrent ${index + 1} valid`]: () => data && data.code >= 0,
|
||
});
|
||
});
|
||
|
||
sleep(0.1);
|
||
}
|