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

2.9 KiB
Raw Blame History

Cocoon 发展规划(自主维护)

此文件由 cron 任务每3小时更新记录项目状态与下一步计划。

路线图

Phase 1 — 核心稳定(当前)

  • HTTP/1.1 请求解析
  • 响应头格式化
  • 静态文件服务sendfile
  • 目录浏览
  • Range 请求
  • MIME 类型识别
  • 多线程 M:N 调度
  • 命令行参数
  • 优雅关闭

Phase 2 — 健壮性

  • HTTP 缓存ETag / Last-Modified / If-None-Match 2026-06-03
  • 连接超时管理(空闲连接自动清理) 2026-06-03
  • 最大并发连接数限制 2026-06-03
  • 分级日志系统error / warn / info / debug 2026-06-03
  • Gzip 压缩 2026-06-03已接入响应流程
  • 集成测试 suite27 项 curl/bash 测试全部通过) 2026-06-03
  • 性能基准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.sh27 项测试)+ benchmark.sh + fixtures
    • 执行 wrk 压测16,179 RPS / 59.86μs 平均延迟4 线程 100 连接 10s
    • 更新 README.md添加 Gzip/缓存/超时/日志特性,更新命令行参数,补充性能表格
    • Makefile 新增 make testmake bench 快捷目标