Files
chanora/docs/designs/protocol-probe-tool.md
T
Edison Jwa 72ded4e011 docs: add test tool designs and iOS test plan (TODO-020,043,044,046,047)
Design documents for event replay, audio processing test, audio
loopback test, and protocol probe tools. iOS audio session test
plan with 28 scenarios and 3-phase automation approach.
2026-06-11 21:04:45 +09:00

3.3 KiB

Protocol Probe Tool Design

Date: 2026-06-11 Status: Design proposal TODO: TODO-047 Requirements: SysRS-128, SRS-123 Effort: L

Purpose

Connect to a TeamSpeak 3-compatible server and enumerate its capabilities. Validates server compatibility, reports supported features, permissions, and protocol behavior for verification and compatibility tracking.

Inputs

  • Server address (host:port)
  • Optional: nickname, identity, server password

Outputs

  • Server info: version, platform, name, welcome message
  • Supported features: text messaging, voice, file transfer, channel permissions
  • Client permissions: talk power, poke power, channel join capabilities
  • Protocol compatibility report: pass/fail/warning per feature
  • Error codes encountered during probing

Architecture

┌──────────┐     ┌───────────────┐     ┌──────────────────┐
│ CLI      │────>│ Probe Session │────>│ tsclientlib      │
│ (host,   │     │ (chanora_     │     │ Protocol Adapter │
│  port)   │     │  protocol)    │     │                  │
└──────────┘     └───────┬───────┘     └──────────────────┘
                         │
              ┌──────────v──────────┐
              │ Probe Commands:     │
              │  1. connect         │
              │  2. server info     │
              │  3. channel list    │
              │  4. client list     │
              │  5. send test msg   │
              │  6. voice capability│
              │  7. permissions     │
              └──────────┬──────────┘
                         │
              ┌──────────v──────────┐
              │ Compatibility      │
              │ Report (JSON/text) │
              └────────────────────┘
  1. Connect: Establish session via chanora_protocol adapter
  2. Query: Execute probe commands sequentially with timeout
  3. Collect: Gather responses, errors, and timing for each probe
  4. Report: Output structured compatibility report

Implementation Plan

  • New Rust binary crate: tools/protocol-probe/
  • Reuse chanora_protocol::adapter for tsclientlib connection
  • Probe sequence: connect → server info → channels → clients → text test → voice check → permissions
  • Each probe step has independent timeout (5s default)
  • CLI interface: protocol-probe <host[:port]> [--nick probe-bot] [--password <pw>] [--output json|text]
  • JSON output for CI integration; text output for human readability

Dependencies

  • chanora_protocol (adapter, tsclientlib wrapper)
  • chanora_core (connection manager, event types)
  • serde_json (report output)
  • clap (CLI argument parsing)

Verification

  • Unit test: mock protocol responses, verify report generation
  • Integration test: probe local test server, verify all features detected
  • Demo: probe public TeamSpeak server, show compatibility report
  • CI: run against test server in CI environment, assert pass on required features