Test Todos中文
测试待办事项
日期: 2026-08-27
状态: 待完成
当前覆盖率
| 项目 | 包 | 覆盖率 | 状态 |
|---|---|---|---|
| core | auth | 88.0% | ✅ |
| core | cmd/pki | 74.7% | ⚠️ |
| core | internal | 90.4% | ✅ |
| core | internal/ca | 78.4% | ⚠️ |
| core | internal/capregistry | 79.5% | ⚠️ |
| core | internal/i18n | 91.2% | ✅ |
| core | internal/notifier | 87.3% | ✅ |
| core | internal/ocsp | 84.2% | ✅ |
| core | internal/pkcs12 | 84.2% | ✅ |
| core | internal/provisioner | 79.6% | ⚠️ |
| core | internal/remotesigner | 89.9% | ✅ |
| core | internal/routing | 91.7% | ✅ |
| core | internal/secrets | 95.7% | ✅ |
| core | internal/serve | 78.5% | ⚠️ |
| core | internal/signer | 80.4% | ✅ |
| core | internal/tsa | 87.8% | ✅ |
| client | client | 70.2% | ⚠️ |
| gateway | capreg | 94.1% | ✅ |
| gateway | http | 76.2% | ⚠️ |
| gateway | tcp | 68.6% | ❌ |
| gateway | udp | 64.5% | ❌ |
目标: 所有包 ≥ 80%
待办事项
1. 补充 gateway/udp 测试 (覆盖率 64.5%)
- 添加 DTLS 握手失败测试
- 添加 mTLS 认证失败测试
- 添加 QUIC 连接超时测试
- 添加非法数据包处理测试
- 添加连接限制触发测试
- 添加 nonce 重放过期测试
2. 补充 gateway/tcp 测试 (覆盖率 68.6%)
- 添加 tunnel 连接失败测试
- 添加 mesh 节点断开测试
- 添加端口映射冲突测试
- 添加审计日志写入失败测试
- 添加证书过期断开测试
- 添加并发连接限制测试
3. 补充 client 测试 (覆盖率 70.2%)
- 添加 AIC 批量签发边界测试
- 添加加密密钥解密失败测试
- 添加配置文件权限拒绝测试
- 添加网络超时重试测试
- 添加跨主机重定向拦截测试 (CL2)
- 添加策略签名伪造检测测试
4. 补充 core/cmd/pki 测试 (覆盖率 74.7%)
- 添加
init-full层级模式测试 - 添加
ca offline-sign流程测试 - 添加
cold-backup加密验证测试 - 添加
verify-path策略验证测试 - 添加
benchmark输出格式测试 - 添加
reportPDF 生成测试
5. 补充 core/internal/ca 测试 (覆盖率 78.4%)
- 添加名称约束违反测试
- 添加策略约束违反测试
- 添加路径长度超限测试
- 添加交叉证书吊销链测试
- 添加信任桥联邦失败测试
- 添加密钥轮换原子性测试
6. 补充 core/internal/serve 测试 (覆盖率 78.5%)
- 添加 RBAC 企业模式 CA scope 拒绝测试
- 添加委派代理会话过期测试
- 添加配置热重载原子性测试
- 添加审计日志 Merkle 链完整性测试
- 添加速率限制触发测试
- 添加 CORS 跨域拒绝测试
7. 补充 core/internal/provisioner 测试 (覆盖率 79.6%)
- 添加 OIDC 认证流程测试
- 添加 Basic Auth Argon2id 验证测试
- 添加 mTLS 证书链不完整测试
- 添加 token 过期/撤销测试
- 添加 AIC 能力交集为空测试
8. 补充 core/internal/routing 测试 (覆盖率 91.7%)
- 添加通配符路径匹配边界测试
- 添加 allow_aic=false 拒绝测试
- 添加 require_role 后缀匹配测试
9. 负面测试 (全部项目)
- 认证失败场景 (无效 token, 过期证书, 错误密码)
- 权限拒绝场景 (角色不足, CA scope 不匹配)
- 无效输入场景 (畸形 JSON, 超长字段, 空必填项)
- 并发冲突场景 (同时吊销同一证书)
- 资源耗尽场景 (内存, 连接数, 文件句柄)
10. 安全测试 (全部项目)
- SQL 注入防护测试
- 路径遍历防护测试
- 证书伪造检测测试
- 私钥泄露防护测试
- 策略文件篡改检测测试
- 重放攻击防护测试 (nonce)
11. 压力测试
- 并发证书签发 (100+ 并发)
- 并发 API 请求 (1000+ QPS)
- 大量证书吊销 (10000+ 条)
- CRL 生成性能
- OCSP 响应缓存命中率
12. 大规模 Agent 模拟 (5万人 × 10 agent × 24小时)
现有工具(varwof 各仓库中):
engine/engine/aic_sim_bench_test.go— 20万/100万/200万证书模拟engine/engine/scale_bench_test.go— 索引扩展 0/1万/10万 × 1/16 并发core/cmd/pki/benchmark.go— 加密算法基准core/deploy/enterprise-full-test.sh— 14 CA + 80+ 证书全栈集成
缺失工具:
- 开发大规模 agent 并发模拟器 (Go 程序) — 已完成:
bench/(嵌入式 serve.NewFull + SQLite, regular/AIC 双场景, stress/random 双模式) - 支持配置: 企业数、每企业 agent 数、请求间隔、持续时间 —
-agents/-users/-interval/-duration - 支持指标采集: QPS、延迟 P50/P95/P99、错误率、DB 大小 — JSON + 文本报告 (
../results/) - 支持多机分布式压测 (SSH 调度)
- 生成 HTML 报告 (图表)
- 基线对比功能 (与上次结果比较)
首轮基准测试 (2026-08-27, 18 核 / 32 GB 内存, SQLite 文件 DB; 标题误标 48 核——勘误见性能工作日志 §1):
- 报告:
./benchmark-report-2026-08-27.md| 工程记录:./performance-worklog-2026-08-27.md| 原始 JSON:../results/*.json - 关键发现: 默认 record_buffer (max_pending=20000) 下持续签发被背压限制到 ~560/s (大量 503); 调大 max_pending 后 regular 达 ~5,600/s; AIC 并发提升后因每次签发的同步
da_nonces写入 + SQLite 单写锁争用, 2500 agent 时退化到 533/s。
待办 — 首轮基准发现的跟进项:
- 验证默认
record_buffer.max_pending=20000背压语义: 确认 503 是 P1 设计中的有意图全链路限流, 补充配置文档 (max_pending/阈值调优指南) - AIC 写路径优化 ①: 启用内存引擎 (
EnableEngine) 使da_nonces走内存 - AIC 写路径优化 ②: Postgres DSN 对比测试 (引擎已支持 pgx 方言)
- 存储模型: 估算 3.6 亿证书的磁盘/行数模型 (1.9KB/行), 制定 SQLite WAL 生命周期与归档策略
- bench 工具增强: 增加
-engine(内存引擎模式) 与 Postgres DSN (postgres://) 支持, 记录 WAL 峰值 - 复测基线: 修复 record buffer 关闭时 flush (2026-08-27 已修) 后重跑矩阵
- argon2 根因: 每请求 Basic Auth →
authByBasic→db.HashPassword→argon2.IDKey占 CPU 44%; bench 改 login-once + Bearer token, AIC/regular 各 +60% (详见性能工作日志 §1) - engine 遗留: PG 上
StoreDANonce同步单行 INSERT 改造为批量 (见下 "DA nonce 批量写"); MariaDB+engine 写管线崩溃 (21GB/conn reset) 修复 —— 详见下 "MariaDB+engine 写管线崩溃根因与修复" -
BulkInsertAICExtensions落地; engine 启动 LOAD 改分批 (替代 LIMIT/OFFSET) - AIC 剩余墙定位: 非 ECDSA/argon2。除 argon2 后 ECDSA 验签仅 ~3 核 (CPU 利用率 65% 未满), 真瓶颈 = 每请求同步单行
INSERT INTO da_nonces同步过 WAL fsync (pg_stat_activity 采样实证), 修复方向见报告 - DA nonce 批量写 (engine 侧已修):
StoreDANonce非 WAL 分支改走RecordBuffer.AddDANonce批量收敛 + 满刷; AIC 复测 3,529/s、p50 47ms (性能工作日志 §2 表) - User/Token 内存索引 (engine + serve 双仓已落地): engine 新增 User/Token 索引 + 启动载入; serve 认证读路径
getUserByUsername/getTokenengine 优先回退 DB; 写路径写穿 (login/create/delete/password-rotate)。AIC @600ms 达 4,111 certs/s (注入上限), p50 2.7ms; DB 活动仅剩批量INSERT INTO certificates。新增测试均绿 (engine 4 项 + core rbac_engine_test 4 项, race 通过) - MariaDB+engine 写管线崩溃根因与修复 (R12, engine 仓已落地): 双层根因 —— ① 文档记录的 21GB 经 dmesg 实证为 OOM 击杀 (
oom-kill bench-smoke anon-rss ~21GB, 现版本 2GiBMaxResidentBytes预算兜底, 不再复现); ② 真实缺陷 = MariaDB 无读超时, 半开连接让bulkInsertChunk→Exec→readPacket永久阻塞并持有flushMu→ drain 卡死 (pending 钉 maxPending, 全 503) →Stop()→FlushAll()死锁挂死。修复: mysql DSN 注入timeout=10s&readTimeout=30s&writeTimeout=30s(ensureMariaDBTimeouts) +ExecContext+BulkInsertCertRecordsCtx/BulkStoreDANoncesCtx+ recordbufferflushDBTimeout=2minctx 兜底。顺带 PG/MariaDB 批量分块 39→500 行/条 (certChunkSize, 往返降 ~13×)。复测 (均 exit=0 打印报告): MariaDB regular @100ms 7,575/s、AIC @100ms 6,034/s (修复前 4,325)、AIC @600ms 4,114/s; PG AIC @600ms 4,054/s 无回归。-race全绿; 新单测TestEnsureMariaDBTimeouts/TestBulkInsertCertRecordsCtxCancelled/TestBulkStoreDANoncesCtxCancelled - 下一个墙: write pipeline 批量落库吞吐 —— 已随 R12 分块优化提升 (MariaDB AIC 4,325→6,034/s), 但 100ms 高注入下仍可能背压 (503); 继续评估更大 chunk/批量 AIC 扩展
- engine 遗留:
BulkInsertAICExtensions落地; 启动 LOAD 改分批 (替代 LIMIT/OFFSET)
13. 模糊测试 (Fuzz)
- 证书解析器 fuzz
- CSR 解析器 fuzz
- JSON 请求体 fuzz
- 配置文件解析 fuzz
- PEM 编解码 fuzz
优先级
| 优先级 | 任务 | 影响 |
|---|---|---|
| P0 | 负面测试 | 防止生产环境错误行为 |
| P0 | 安全测试 | 防止安全漏洞 |
| P1 | gateway/udp 补充 | 覆盖率 < 70% |
| P1 | gateway/tcp 补充 | 覆盖率 < 70% |
| P1 | client 补充 | 覆盖率 < 75% |
| P2 | core/cmd/pki 补充 | CLI 完整性 |
| P2 | core/internal/ca 补充 | CA 核心逻辑 |
| P2 | core/internal/serve 补充 | API 服务层 |
| P3 | 压力测试 | 性能验证 |
| P3 | 模糊测试 | 鲁棒性验证 |
| P3 | 大规模 Agent 模拟 | 生产环境验证 |
| P3 | 基准跟进: AIC 写路径优化 (engine/Postgres) | 生产 4,167 req/s 承载能力 |
进度跟踪
| 任务 | 负责人 | 开始日期 | 完成日期 | 状态 |
|---|---|---|---|---|