Skip to content

feat: integrate optional FlatBuffers RPC support with regression tests - #45

Open
Spicy-cream wants to merge 9 commits into
LinQuickDev:masterfrom
Spicy-cream:feature/flatbuffers-rpc-tests
Open

feat: integrate optional FlatBuffers RPC support with regression tests#45
Spicy-cream wants to merge 9 commits into
LinQuickDev:masterfrom
Spicy-cream:feature/flatbuffers-rpc-tests

Conversation

@Spicy-cream

@Spicy-cream Spicy-cream commented Sep 10, 2026

Copy link
Copy Markdown

变更目的

为社区提供可选启用的 FlatBuffers RPC 原型,并补齐消息所有权和请求拒绝路径的回归验证。本实现基于 apache#3196apache#3197

相关设计讨论:#44

主要改动

  • 移植 FlatBuffers 消息构造与 RPC 协议。
  • 修复 Message 的移动语义,避免移动操作走入不支持的 MergeFrom 路径。
  • 增加默认关闭的 WITH_FLATBUFFERS CMake 选项、条件编译和导出配置宏。
  • 示例服务校验请求,客户端校验响应并比较字段。
  • 新增四项消息测试和三项 TCP RPC 测试;OFF 模式排除 FlatBuffers 测试。

本地验证

  • ON/OFF 核心库构建通过,ON 模式外部示例构建通过。
  • brpc_flatbuffers_message_unittest:4 项用例通过。
  • brpc_flatbuffers_rpc_unittest:3 项用例通过。
  • OFF 配置查询 FlatBuffers 测试得到 Total Tests: 0。

测试覆盖消息生命周期、移动所有权、损坏根偏移、正常 RPC、EREQUEST 返回及拒绝后正常调用。RPC 测试使用本地动态端口并禁用重试。

ctest --test-dir build-flatbuffers-tests-on \
  -R '^brpc_flatbuffers_(message|rpc)_unittest$' \
  --timeout 60 --output-on-failure

最近已验证提交:0f591739。验证环境为 Ubuntu 24.04 WSL2、GCC 13.3、Protobuf 3.21.12、FlatBuffers 25.12.19。

评审边界

  • Verify 由服务主动调用,尚非协议层统一校验。
  • 目前只传递错误码,客户端使用通用错误文本。
  • 测试复用示例生成代码,生成流程及版本依赖还需整理。
  • 同一源码目录 ON/OFF 配置会共同写入 src/butil/config.h,构建前需配置正确模式。
  • 后续继续审查协议边界、内存生命周期及其他构建系统。
  • 本 PR 不宣称完整端到端零拷贝或已经获得性能收益。

远端分支还包含进展文档提交 032119c;代码测试结果对应 0f59173

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant