20 stable releases
new 1.3.4 | Apr 13, 2025 |
---|---|
1.3.1 | Mar 2, 2025 |
1.3.0 | Dec 2, 2024 |
1.2.6 | Aug 29, 2024 |
0.1.10 | Mar 17, 2023 |
#214 in Command line utilities
1,821 downloads per month
30KB
637 lines
cfspeedtest - Unofficial CLI for speed.cloudflare.com
Installation
Install using cargo
:
cargo install cfspeedtest
Or download the latest binary release here: cfspeedtest/releases/latest
Alternatively there is also a docker image available on dockerhub
docker run cybuerg/cfspeedtest
Usage
> cfspeedtest --help
Unofficial CLI for speed.cloudflare.com
Usage: cfspeedtest [OPTIONS]
Options:
-n, --nr-tests <NR_TESTS>
Number of test runs per payload size [default: 10]
--nr-latency-tests <NR_LATENCY_TESTS>
Number of latency tests to run [default: 25]
-m, --max-payload-size <MAX_PAYLOAD_SIZE>
The max payload size in bytes to use [100k, 1m, 10m, 25m or 100m] [default: 25MB]
-o, --output-format <OUTPUT_FORMAT>
Set the output format [csv, json or json-pretty] > This silences all other output to stdout [default: StdOut]
-v, --verbose
Enable verbose output i.e. print boxplots of the measurements
--ipv4 [<IPv4>]
Force IPv4 with provided source IPv4 address or the default IPv4 address bound to the main interface
--ipv6 [<IPv6>]
Force IPv6 with provided source IPv6 address or the default IPv6 address bound to the main interface
-d, --disable-dynamic-max-payload-size
Disables dynamically skipping tests with larger payload sizes if the tests for the previous payload size took longer than 5 seconds
--download-only
Test download speed only
--upload-only
Test upload speed only
--generate-completion <COMPLETION>
Generate shell completion script for the specified shell [possible values: bash, elvish, fish, powershell, zsh]
-h, --help
Print help
-V, --version
Print version
Example with json-pretty output:
Shell Completion
cfspeedtest
supports generating shell completion scripts. Use the --generate-completion
flag followed by your shell name (e.g., bash
, zsh
, fish
, powershell
, elvish
).
Example for bash (add to ~/.bashrc
or similar):
cfspeedtest --generate-completion bash > ~/.local/share/bash-completion/completions/cfspeedtest
# Or, if you don't have a completions directory set up:
# source <(cfspeedtest --generate-completion bash)
Example for zsh (add to ~/.zshrc
or similar):
# Ensure your fpath includes a directory for completions, e.g., ~/.zfunc
# mkdir -p ~/.zfunc
# echo 'fpath=(~/.zfunc $fpath)' >> ~/.zshrc
cfspeedtest --generate-completion zsh > ~/.zfunc/_cfspeedtest
# You may need to run compinit:
# autoload -U compinit && compinit
Example for fish:
cfspeedtest --generate-completion fish > ~/.config/fish/completions/cfspeedtest.fish
Development
Logging
Set the log level using the RUST_LOG
env var:
RUST_LOG=debug cargo run
Release
Using cargo-release
Install cargo-release
:
cargo install cargo-release
Create the release (version bump levels are [patch, minor, major]
):
cargo release patch --execute
This will bump the cfspeedtest
version in both Cargo.toml
and Cargo.lock
and run cargo publish
to push the release on crates.io. Additionally a version git tag is created and pushed to master
triggering the GH action that creates the binary releases.
On GitHub
Release builds are published automatically using github actions. They are triggered when a git tag in the format v[0-9]+.*
is pushed.
git tag v1.0.0
git push origin v1.0.0
On crates.io
- Update
cfspeedtest
version inCargo.toml
cargo publish --dry-run
- Verify contents using
cargo package --list
- Upload to crates.io
cargo publish
Dependencies
~9–26MB
~293K SLoC