rpki/src/bin/rpki_rs_test_client
xiuting.xu b60d579a38 增加ssh
增加deploy下细分的tcp、tls、ssh
2026-04-22 16:02:42 +08:00
..
2026-04-22 16:02:42 +08:00
2026-04-15 15:43:59 +08:00

rpki_rs_test_client

rpki_rs_test_client 是一个基于 rpki-rs RTR 客户端接口的测试工具,参数风格对齐 rtr_debug_client

实现上直接调用外部 crate 的 client APIClient / 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:323
  • version: 2
  • mode: 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.18 client 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