Skip to content

Voice Checks and Load Test

Tobias Vorwachs edited this page Oct 27, 2026 · 1 revision

Voice checks and load test

Voice checks

The test bot sends and receives real Opus voice (same codec settings as the Mumcord client), over UDP with the TCP tunnel as fallback.

Subcommand Does Prints
play <FILE> [--loop] [--seconds S] [--position x,y,z] Plays a WAV file as voice into the current channel. played <n> packets in <ms> ms
record <OUT> --seconds S [--from USER] Records received voice to a 48 kHz mono WAV. recorded <s> s to <path>
expect-audio [--from USER] [--min-rms DBFS] [--timeout S] Waits until voice reaches the level (default -40 dBFS). <level dB> <latency ms>
game-context <CONTEXT> Announces a Mumble Link game context for positional audio.

Start expect-audio before the sender plays; only audio after the command counts.

# Ear waits for Mouth's voice; exit 0 when it arrived loud enough.
printf '%s\n' 'join Lobby' 'expect-audio --from Mouth --min-rms -50 --timeout 12' \
  | mumbot --port 44738 --name Ear script &
sleep 3
printf '%s\n' 'join Lobby' 'play testenv/audio/speech.wav' | mumbot --port 44738 --name Mouth script
wait $!

A 6 s speech-like reference clip is in testenv/audio/speech.wav.

Load test

examples/loadtest.rs is a separate program (not a mumbot subcommand). It connects many users to a local load-test server, then adds churn (moves, leaves, joins, chat) and talkers while control files exist.

testenv/scale/up.sh
mkdir -p /tmp/loadtest
cargo run --release --example loadtest -- --users 1000 \
  --churn-file /tmp/loadtest/churn --talk-file /tmp/loadtest/talk --cert-dir /tmp/loadtest/certs
touch /tmp/loadtest/churn      # churn on; rm switches it off
testenv/scale/down.sh
Option Default Meaning
--users 1000 Users to connect.
--talkers 6 Users speaking in bursts.
--moves / --joins / --chat 10 / 2 / 1 per second Churn rates.
--connect-parallel 50 Logins in flight.
--churn-file, --talk-file, --cert-dir required Control files and certificate folder.

Only for the local load-test server. Details: docs/cli.md.

Clone this wiki locally