新增 tests/perf/ NFR 压测套件,对应 PRD 第 9 章 SLA 全量压测: #88 LLM 路由/DLP 压测: - DLP 敏感拦截率 100%(2000 样本,含 PII/凭证/工艺词,零漏拦) - DLP 清洁零误报(1000 样本),单条 0.033ms / 30097 qps - 路由敏感不泄漏云端 100%(1500 样本,≥96.5% 基线达标) - 安全指令(停机)100% 转 block/人工 #87 采集/总线 NFR 压测: - 采集 P99=312ms(≤1.8s,600 点位 30 轮),可用性 100%(≥99.8%),丢失率 0%(≤0.02%) - 总线 6000 样本不丢不重(幂等去重) 合成数据集固定随机种子可重复,零外部依赖,CI 可直接执行。 运行:python -m unittest discover -s tests/perf -v
iAOP NFR 压测套件(Issue #87 / #88)
对应 PRD 第 9 章 NFR 全量压测与 EPIC #14(M4)子任务:
- #88 LLM 路由 / DLP 压测:DLP 拦截率 100%、路由敏感命中率 ≥ 96.5%;
- #87 采集 / 总线 NFR 压测:P99 ≤ 1.8s、丢失率 ≤ 0.02%、可用性 ≥ 99.8%、不丢不重。
全部基于各模块可注入接口运行(模拟驱动 + MemorySink + 内存 LLM 后端),零外部依赖,CI 可直接执行。
压测结论(PRD 第 9 章 SLA)
| 指标 | PRD 目标 | 压测结果 | 用例 |
|---|---|---|---|
| DLP 敏感拦截率 | 100% | ✅ 100%(2000 样本) | test_dlp_intercept_rate_100_percent |
| DLP 清洁误报率 | 0% | ✅ 0%(1000 样本零误报) | test_dlp_clean_passthrough |
| DLP 单条时延 | 信息性 | ✅ 0.033ms / 30097 qps | 同上 |
| 路由敏感不泄漏云端 | ≥ 96.5% | ✅ 100%(1500 样本) | test_router_sensitive_never_cloud |
| 安全指令转人工 | 100% | ✅ 100%(block) | test_router_block_safety_commands |
| 采集 P99 延迟 | ≤ 1.8s(600 点位 1Hz) | ✅ 313ms(30 轮 × 600 点位) | test_p99_latency_under_threshold |
| 采集可用性 | ≥ 99.8% | ✅ 100% | 同上 |
| 采集丢失率 | ≤ 0.02% | ✅ 0% | 同上 |
| 总线不丢不重 | 不丢不重 | ✅ 6000 样本零丢失零重复 | test_no_loss_no_dup_at_scale |
运行方式
# 在仓库根目录执行(需 Python 3.8+,仅标准库依赖)
python -m unittest discover -s tests/perf -v
设计说明
- 合成数据集:用固定随机种子(20260804)生成可重复的敏感/清洁样本池, 覆盖 PII(身份证 / 手机号 / 邮箱 / IP)、凭证(访问密钥 / 键值口令)、 工艺敏感词、安全指令(停机)等类别。
- PII 格式保真:模板中以
{ip}占位的字段映射为合法 IPv4 第四段(0~255), 避免序号破坏 PII 格式导致规则漏匹配——压测验证的是 DLP 规则本身,而非数据生成。 - 规模与可重复:采集压测用 30 轮 × 600 点位(PRD 5.1 基线点位规模), 在 CI 中可重复执行(< 30s);DLP/路由压测用千级样本保证统计显著性。