7 Commits

Author SHA1 Message Date
xfy911
2568ca6508 chore: 更新 .gitignore,忽略 Phase 4 单元测试二进制
新增 test_grpc / test_http3 / test_load_balance / test_middleware_ext。
2026-06-10 13:46:36 +08:00
xfy911
5d4c78c8cb test(proxy): 新增反向代理模块单元测试(31项)
覆盖:
- proxy_init: 配置初始化清零
- proxy_add_rule: 添加规则、追加后端、参数校验(空值/空字符串)
- proxy_match: 精确匹配、前缀匹配、多规则、NULL参数
- select_backend_sww: 平滑加权轮询(单后端、等权重、不等权重3:1、跳过不健康、全不健康)
- select_backend_sww_all: fallback包含不健康后端
- parse_backend_url: http/https/无scheme/无端口/带路径
- proxy_build_forwarded_path: 无目标路径/有目标路径/空剩余路径
- proxy_update_health: 成功阈值恢复、失败阈值标记、计数器重置
- proxy_pool_init: 默认大小、超上限裁剪、零值回退

编译零警告,190个单元测试 + 106项集成测试全部通过。
2026-06-09 21:10:49 +08:00
xfy911
2dc29d0687 feat(config): 插件配置支持 JSON 数组格式
- 极简 JSON 解析器新增 '[' / ']' token 支持
- plugins 字段可同时兼容字符串和字符串数组
- 向后兼容:单字符串 "plugins.so" 仍有效
- 向前扩展:数组 ["a.so", "b.so"] 支持多插件

修复:
- .gitignore 添加遗漏的 test_websocket 二进制
- Makefile 补全 test_log 单元测试编译规则
- cocoon.json 示例改为数组格式
- test_config.c 新增 3 项 plugins 解析测试(字符串/单数组/多数组)

全部 142 个单元测试 + 68 项集成测试通过 ✓
2026-06-06 09:07:28 +08:00
xfy911
952cc663fe feat(plugin): 实现动态插件系统(.so 加载 + 中间件注册)
新增插件系统:
- plugin.h / plugin.c:dlopen/dlsym 动态加载,最多8个插件
- 插件接口:cocoon_plugin_init / cocoon_plugin_shutdown / cocoon_plugin_version
- 插件可通过 cocoon_middleware_register() 注册中间件参与请求处理
- 命令行:--plugin <path>(可多次指定)
- 配置文件:plugins 字段(字符串,单插件路径)
- server.c 在 server_create 时加载,server_destroy 时逆序卸载
- plugins/hello.c:示例插件,演示中间件注册
- 集成测试:新增插件加载 + 日志验证测试(68项全部通过)
- 单元测试:127个全部通过
- 编译:Makefile 添加 plugin.c 和 -ldl
- .gitignore 排除编译产物和上传目录
2026-06-06 03:13:59 +08:00
xfy911
c036615d58 chore: 添加 test_server 到 gitignore + 更新待办池
- .gitignore: 补充 tests/unit/test_server,避免误提交编译产物
- .cocoon-plan.md: 新增 signal handler cleanup bug 和中文注释完善到待办池
2026-06-04 00:29:31 +08:00
xfy911
19c97ae6a9 test(config): 补充边界与异常路径测试
- test_load_invalid_field_type: 字段类型非法(port 为字符串),验证不 crash
- test_load_log_level_invalid: 非法 log_level 值保持默认 INFO
- test_load_nested_ignored: 嵌套对象——极简解析器返回 false 但不 crash
- test_load_array_ignored: 数组——同上,不 crash 即可
- test_merge_cmdline_null_root_dir: cmdline root_dir 为 NULL 时不覆盖 base
2026-06-04 00:24:29 +08:00
xfy911
84b415470b chore: 初始化项目骨架(README + Makefile + .gitignore) 2026-06-03 16:42:10 +08:00