cocoon/.cocoon-plan.md
xfy911 b6beb8bb9c feat(tests): 添加集成测试套件 + 性能基准 + 更新文档
- 新增 tests/ 目录:
  - integration_test.sh: 27 项 curl/bash 集成测试(GET/HEAD/404/Range/304/gzip/MIME/目录浏览/路径防护)
  - benchmark.sh: wrk 压测脚本,支持单线程和多线程模式
  - fixtures/: 测试用静态资源(HTML/CSS/JS/JSON/PNG)
- Makefile 新增 test / bench 快捷目标
- README 全面更新:
  - 补充 Gzip/缓存/超时/日志等已实现特性
  - 更新命令行参数(-m/-o/-l/-v)
  - 添加性能基准表格(~16K RPS / ~60μs 延迟)
  - 路线图标记已完成项
- .cocoon-plan.md 更新 Phase 2 进度
2026-06-03 21:15:05 +08:00

72 lines
2.9 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] 集成测试 suite27 项 curl/bash 测试全部通过)✅ 2026-06-03
- [x] 性能基准wrk: ~16.2K RPS / ~60μs 延迟)✅ 2026-06-03
- [ ] 请求体解析POST 支持)
### Phase 3 — 扩展
- [ ] 配置文件支持JSON / YAML
- [ ] 虚拟主机 / 多站点
- [ ] 反向代理支持
- [ ] HTTPS / TLS
- [ ] HTTP/2
### Phase 4 — 生态
- [ ] WebSocket 支持
- [ ] 中间件机制
- [ ] 插件系统
## 当前状态
- 编译通过,零警告(除 coco 子模块的 linker .note.GNU-stack 提示)
- 27 项集成测试全部通过GET/HEAD/404/Range/304/gzip/MIME/目录浏览/路径防护)
- 压测数据wrk -t4 -c100 -d10s → 16,179 RPS平均延迟 59.86μs
- 示例页面 + 测试 fixtures 正常
- README 已更新Makefile 新增 `test` / `bench` 目标
## 待办池
1. **请求体解析POST 支持)** — 解析 Content-Length / chunked支持 form-data / JSON
2. **C 语言单元测试框架** — 用 Unity/CMock 或自定义轻量框架替代 shell 测试
3. **Brotli 压缩** — 在 Gzip 基础上添加 br 支持
4. **配置文件支持** — JSON/YAML 配置替代纯命令行
## 最近行动记录
- 2026-06-03: 项目初始化,核心模块全部实现
- 2026-06-03: 添加缓存协商ETag + Last-Modified + 304修复编译警告
- 2026-06-03: 添加连接空闲超时管理 + 最大并发限制 + 分级日志系统
- 使用 `coco_timer` + `shutdown` + `coco_cancel` 实现空闲超时,默认 30 秒
- 使用原子计数器限制最大并发连接,超限返回 503
- 新增 `log.c` / `log.h`,支持 error/warn/info/debug 四级输出
- 命令行新增 `-m``-o``-l` 选项
- 修复 http.c 中 Range 解析被错误嵌套在 accept-encoding 分支的 bug
- 修复 static.c 缺失 `<errno.h>``<zlib.h>` 导致的编译失败
- Makefile 添加 `-lz` 链接参数
- 2026-06-03: **本轮行动**
- 创建 `tests/` 目录,含 `integration_test.sh`27 项测试)+ `benchmark.sh` + fixtures
- 执行 wrk 压测16,179 RPS / 59.86μs 平均延迟4 线程 100 连接 10s
- 更新 README.md添加 Gzip/缓存/超时/日志特性,更新命令行参数,补充性能表格
- Makefile 新增 `make test``make bench` 快捷目标