rpki_rs_test_client
rpki_rs_test_client 是一个基于 rpki-rs RTR 客户端接口的测试工具,参数风格对齐 rtr_debug_client。
实现上直接调用外部 crate 的 client API(Client / PayloadTarget),不重复实现 RTR 客户端状态机。
构建
cargo build --bin rpki_rs_test_client
基本用法
cargo run --bin rpki_rs_test_client -- <addr> <version> [reset|serial|serial <session_id> <serial>] [options]
默认值:
addr:127.0.0.1:323version:2mode:reset
常用参数
--steps <n>: 执行client.step()次数(默认1)--follow: bootstrap 结束后持续执行client.step()(常驻模式)--print-records: 打印当前收敛后的 payload 记录--assert-min-records <n>: 断言收敛记录数下限--assert-substr <text>: 在 payload 的Debug输出中做字符串断言(可重复)
TLS 参数:
--tls--ca-cert <path>--server-name <name>--client-cert <path>--client-key <path>
限制说明
- 当前
rpki-rs v0.18client API 不支持显式覆盖初始版本,因此这里只接受version=2。 - 支持
serial(无参数)模式:会基于 client 内部 state 自动走 serial 更新。 - 当前不支持
serial <session_id> <serial>显式注入状态(传入会直接报错)。
示例
TCP 连通 + 最小记录数断言:
cargo run --bin rpki_rs_test_client -- \
127.0.0.1:323 \
2 reset \
--steps 1 \
--assert-min-records 1
自动 serial(无需传 sid/serial):
cargo run --bin rpki_rs_test_client -- \
127.0.0.1:323 \
2 serial --steps 2 --follow
结合 mini_data 的内容做字符串断言:
cargo run --bin rpki_rs_test_client -- \
127.0.0.1:323 \
2 reset \
--assert-substr "10.0.1.0" \
--assert-substr "65003"
TLS 场景:
cargo run --bin rpki_rs_test_client -- \
127.0.0.1:324 \
2 reset \
--tls \
--ca-cert tests/fixtures/tls/client-ca.crt \
--server-name localhost
Docker 启动(deploy)
构建并启动(Linux 服务器,host 网络):
docker compose -f deploy/rpki-rs-client/docker-compose.yml up --build
按需覆盖运行参数(覆盖 compose 默认 command):
docker compose -f deploy/rpki-rs-client/docker-compose.yml run --rm \
rpki-rs-test-client 127.0.0.1:323 2 reset --steps 1 --assert-min-records 1
常驻跟进模式(先 bootstrap,再持续 serial/notify):
docker compose -f deploy/rpki-rs-client/docker-compose.yml run --rm \
rpki-rs-test-client 127.0.0.1:323 2 serial --steps 2 --follow
停止:
docker compose -f deploy/rpki-rs-client/docker-compose.yml down