Files
wwjcloud-nest-v1/wwjcloud-nest-v1/docker/k6/ai_simple_test.js
wanwujie 699680c93a feat: 重构v1框架架构和清理整理
- 将preset.ts移动到config目录,符合架构规范
- 迁移php-tools到java-tools,参考Java架构而非PHP
- 清理AI层文档,整合为单一README
- 删除core层,专注boot和ai层
- 集成AI层与Boot层,实现100%组件集成
- 清理废弃js文件和临时报告文件
- 更新导入路径,保持代码一致性
2025-10-20 23:07:37 +08:00

67 lines
2.0 KiB
JavaScript
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 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);
}