-
Build the release version of neqo-client and neqo-server by running
cargo build --release
-
Start neqo-server
./target/release/neqo-server
-
Start neqo-client and specify parameters to start the upload test
./target/release/neqo-client http://127.0.0.1:4433/ --test upload --upload-size ${size_in_bytes}
This can be done by setting the RUST_LOG environment variable to neqo_transport=info.
For example, the command below starts neqo-client and uploads 8MB of content to the server.
RUST_LOG=neqo_transport=info ./target/release/neqo-client http://127.0.0.1:4433/ --test upload --upload-size 8388608 &>upload.logThe upload_test.sh script automates testing network conditions for neqo-client and neqo-server. It runs the upload test under various network parameters like bandwidth, RTT (Round-Trip Time), and PLR (Packet Loss Rate).
- Server Address and Port: Defaults to
127.0.0.1and4433. - Upload Size: Set to 8MB by default.
- Network Conditions: Modify
network_conditions,network_bandwidths,network_rtts, andplrsarrays for different conditions. - Runs: Number of test iterations, default is
1.
- Start the Script: Execute with
./upload_test.sh. - Root Password Prompt: Enter the root password when prompted for executing network configuration commands.
- Automated Test Execution: The script sets up network conditions and runs
neqo-clientandneqo-servertests. - Cleanup: At the end, it resets network conditions and stops the server.
Run ./mozlog-neqo-cwnd.py upload.log to view the logs with matplotlib and python.
Two scripts help keep Cargo.lock aligned with Firefox/Gecko's lockfile.
Both must be run from the workspace root (not inside test/).
Dependencies are managed via test/pyproject.toml and resolved automatically by uv.
uv run --project test compare-lockfileFetches Gecko's Cargo.lock and reports which packages match, which differ,
and whether mismatches are production-affecting or dev/build-only.
uv run --project test update-lockfileRuns cargo update --precise to align shared dependencies with Gecko's pinned
versions. Pass --update-neqo-only to also bump neqo-exclusive packages to
their latest available versions:
uv run --project test update-lockfile --update-neqo-onlySet GITHUB_TOKEN (or GITHUB_API_TOKEN) in the environment to avoid GitHub
API rate limits when fetching Gecko metadata.
uv run --project test --group dev ruff check test/
uv run --project test --group dev mypy --config-file test/pyproject.toml test/