cocoon/.cocoon-plan.md
xfy911 d5b8782a1b feat: 添加 Unity 单元测试框架
- 引入 Unity 测试框架 (ThrowTheSwitch)
- 创建 test_http.c (35 个测试): 请求解析、响应格式化、MIME 类型、内存管理
- 创建 test_static.c (31 个测试): 压缩判断、时间处理、ETag、路径安全、HTML 转义、gzip、socket 层
- 更新 Makefile: make unit-test 一键编译运行
- 66 个测试全部通过,集成测试保持 30 项通过
2026-06-03 23:53:22 +08:00

85 lines
3.5 KiB
Markdown
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.

# Cocoon 发展规划(自主维护)
> 此文件由 cron 任务每3小时更新记录项目状态与下一步计划。
## 路线图
### Phase 1 — 核心稳定(当前)
- [x] HTTP/1.1 请求解析
- [x] 响应头格式化
- [x] 静态文件服务sendfile
- [x] 目录浏览
- [x] Range 请求
- [x] MIME 类型识别
- [x] 多线程 M:N 调度
- [x] 命令行参数
- [x] 优雅关闭
### Phase 2 — 健壮性
- [x] HTTP 缓存ETag / Last-Modified / If-None-Match✅ 2026-06-03
- [x] 连接超时管理(空闲连接自动清理)✅ 2026-06-03
- [x] 最大并发连接数限制 ✅ 2026-06-03
- [x] 分级日志系统error / warn / info / debug✅ 2026-06-03
- [x] Gzip 压缩 ✅ 2026-06-03已接入响应流程
- [x] 集成测试 suite30 项 curl/bash 测试全部通过)✅ 2026-06-03
- [x] 性能基准wrk: ~16.2K RPS / ~60μs 延迟)✅ 2026-06-03
- [x] 请求体解析POST 支持)✅ 2026-06-03
- Content-Length 读取
- JSON / form-urlencoded 回显
- 8MB 请求体上限
- [x] C 语言单元测试框架 ✅ 2026-06-03Unity 框架66 个测试全部通过)
### Phase 3 — 扩展
- [ ] 配置文件支持JSON / YAML
- [ ] 虚拟主机 / 多站点
- [ ] 反向代理支持
- [ ] HTTPS / TLS
- [ ] HTTP/2
### Phase 4 — 生态
- [ ] WebSocket 支持
- [ ] 中间件机制
- [ ] 插件系统
## 当前状态
- 编译通过,零警告(除 coco 子模块的 linker .note.GNU-stack 提示)
- 30 项集成测试全部通过GET/HEAD/POST/404/Range/304/gzip/MIME/目录浏览/路径防护)
- **66 个单元测试全部通过**Unity 框架,覆盖 http.c 和 static.c 核心逻辑)
- 压测数据wrk -t4 -c100 -d10s → 16,179 RPS平均延迟 59.86μs
- POST 支持JSON 和 form-urlencoded 回显Content-Length 解析8MB 上限
- README / Makefile 已更新
## 待办池
1. **Brotli 压缩** — 在 Gzip 基础上添加 br 支持
2. **配置文件支持** — JSON/YAML 配置替代纯命令行
3. **multipart/form-data 文件上传** — 从 POST 回显扩展到实际文件上传
4. **server.c 单元测试** — 需要 mock socket 和 coco 协程环境
## 最近行动记录
- 2026-06-03: 项目初始化,核心模块全部实现
- 2026-06-03: 添加缓存协商ETag + Last-Modified + 304修复编译警告
- 2026-06-03: 添加连接空闲超时管理 + 最大并发限制 + 分级日志系统
- 2026-06-03: 创建集成测试套件 + 性能基准 + 更新文档
- 2026-06-03: 添加 POST 请求体解析支持30 项测试全部通过README 更新
- 2026-06-03: **本轮行动 — 单元测试框架**
- 引入 Unity 测试框架ThrowTheSwitch
- 创建 `tests/unit/test_http.c`35 个测试):
- 请求解析方法、路径、头部、Range、缓存、编码、边界条件
- 响应格式化状态行、缓存头、Range、缓冲区溢出
- MIME 类型:常见类型、大小写、无扩展名、特殊类型
- 内存管理:请求体释放
- 创建 `tests/unit/test_static.c`31 个测试):
- 压缩判断:文本/二进制/空值
- 时间处理:格式化、解析、边界
- ETag生成、匹配精确/弱/通配符/空值)
- 路径安全:正常拼接、路径遍历、空值、边界
- HTML 转义:特殊字符、缓冲区溢出
- gzip 压缩:可压缩/不可压缩/小数据/溢出
- socket 层send_all、错误响应404/500/未知)
- 更新 Makefile`make unit-test` 一键编译运行
- 66 个测试全部通过,集成测试保持 30 项通过
- 推送到 main