Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tweak 0.3 docs #79

Open
wants to merge 22 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
aae884e
Start on UNDERSTANDING document
richb-hanover Sep 15, 2024
b477c79
Update screen shots to 0.3 version;
richb-hanover Sep 17, 2024
e66966b
Merge branch 'master' into Tweak-0.3-docs
richb-hanover Sep 17, 2024
a0e038b
Better screen shots
richb-hanover Sep 17, 2024
e9547a1
Fix the results-with-stats screen shot and its description
richb-hanover Sep 17, 2024
9446b04
Merge branch 'master' into Tweak-0.3-docs
richb-hanover Sep 17, 2024
a9f92b5
Editorial pass
richb-hanover Sep 17, 2024
7eb3e36
Improved screen shots for numeric summaries
richb-hanover Sep 17, 2024
33ae0a2
Editorial tweaks
richb-hanover Sep 18, 2024
bd390eb
Editorial tweaks
richb-hanover Sep 18, 2024
d8e3d9b
Factor out BUILDING.md from other files;
richb-hanover Sep 18, 2024
58974ff
Update README.md
Zoxc Sep 19, 2024
97db21a
Update description of Throughput;
richb-hanover Sep 20, 2024
cef0ec2
Merge commit '58974ff026c25bbf434935bdda4fead4ef87dd71' into Tweak-0.…
richb-hanover Sep 20, 2024
dcf6830
Fix Monitor screen shot
richb-hanover Sep 21, 2024
4dc570f
Merge branch 'master' into Tweak-0.3-docs
richb-hanover Sep 23, 2024
d432bbc
Revised screenshots;
richb-hanover Sep 23, 2024
6a2ba56
Revert parts of "Editorial tweaks"
Zoxc Sep 24, 2024
a1e38cc
Clarify use of TCP & UDP ports 35481
richb-hanover Oct 3, 2024
f78a64a
Merge commit '6a2ba56a3421749299575ef4b1adeed44c38ce22' into Tweak-0.…
richb-hanover Oct 3, 2024
72bcbf1
Reorganize to include a _docs_ directory;
richb-hanover Nov 11, 2024
9ca60a6
Merge branch 'master' into Tweak-0.3-docs
richb-hanover Nov 11, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 50 additions & 0 deletions BUILDING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Building Crusader from source

Reminder: [Pre-built binaries](https://github.com/Zoxc/crusader/releases)
are available for everyday tests.

## Required dependencies

* A Rust and C toolchain.
* `fontconfig` (optional, required for `crusader-gui`)

_Note:_ To install `fontconfig` on Ubuntu:

```sh
sudo apt install libfontconfig1-dev
```

## Building Crusader

To develop or debug Crusader, use the commands below
to build the full set of binaries.
Executables are placed in _src/target/release_

To build the `crusader` command line executable:

```sh
cd src
cargo build -p crusader --release
```

To build both command line and GUI executables:

```sh
cd src
cargo build --release
```

## Debug build

Create a debug build by using `cargo build`
(instead of `cargo build --release`).
Binaries are saved in the _src/target/debug_ directory

## Docker

To build a docker container that runs the server:

```sh
cd docker
docker build .. -t crusader -f server-static.Dockerfile
```
12 changes: 7 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,15 +9,17 @@ This file lists the changes that have occurred since January 2024 in the project

## Unreleased

* No unreleased changes

## 0.3 - 2024-09-16

* Show throughput, latency, and packet loss summaries in plots and with the `test` command
* Rename both option to bidirectional
* Show numeric throughput, latency, and packet loss summaries in plots and with the `test` command
* Rename `both` option to `bidirectional`
* Rename `--latency-peer-server` to `--latency-peer-address`
* Continuous clock synchronization with the latency monitor
* Support opening result files in the GUI by drag and drop
* Add `--out-name` command line option to specify result filename prefix
* Change filename prefix for both raw result and plots to `test`
* Use `test` as default filename prefix for both raw result and plots
* Add file dialog to save options in GUI
* Add buttons to save and load from the `crusader-results` folder in GUI
* Add an `export` command line command to convert result files to JSON
Expand All @@ -32,7 +34,7 @@ This file lists the changes that have occurred since January 2024 in the project

* Added support for local discovery of server and peers using UDP port 35483
* The `test` command line option `--latency-peer` is renamed to `--latency-peer-server`.
A new flag `--latency-peer` will instead search for a local peer.
A new boolean flag `--latency-peer` triggers a search for a local peer.
* Improved error messages
* Fix date/time display in remote web page
* Rename the `Latency` tab to `Monitor`
Expand All @@ -58,7 +60,7 @@ This file lists the changes that have occurred since January 2024 in the project
* Added `--idle` option to the client to test without traffic
* Save results in a `crusader-results` folder
* Allow building of a server-only binary
* Generated files will use a YYYY-MM-DD HH.MM.SS format
* Generated files use a YYYY-MM-DD HH.MM.SS format
* Rename bandwidth to throughput
* Rename sample rate to sample interval
* Rename `Both` to `Aggregate` and `Total` to `Round-trip` in plots
Expand Down
101 changes: 101 additions & 0 deletions CLI.md
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It probably makes sense to do these changes in the code too.

Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Running Crusader from the command line

## Server

To host a Crusader server, run this on the _server_ machine:

```sh
crusader serve
```

## Client

To start a test, run this on the _client machine_.
See the [command-line options](.options-for-the-test-command) below for details.

```sh
crusader test <server-ip>
```

## Remote

To host a web server that provides remote control of a Crusader client,
run the command below, then connect to
`http://ip-of-the-crusader-device:35482`

```sh
crusader remote
```

## Plot

Crusader creates a `.png` file from a `.crr` file using `./crusader plot path-to-crr-file`
richb-hanover marked this conversation as resolved.
Show resolved Hide resolved
The resulting `.png` is saved in the same directory as the input file.

## Export

Crusader exports raw data samples from a `.crr` file
into a `.json` file using `./crusader export path-to-crr-file`
The resulting `.json` is saved in the same directory as the input file.

## Options for the `test` command

**Usage: `crusader test [OPTIONS] <SERVER-ADDRESS>`**

**Arguments:** `<SERVER-ADDRESS>` address of a Crusader server

**Options:**

* **`--download`**
Run a download test
* **`--upload`**
Run an upload test
* **`--bidirectional`**
Run a test doing both download and upload
* **`--idle`**
Run a test, only measuring latency without inducing traffic.
The duration is specified by `grace_duration`
* **`--port <PORT>`**
Specify the TCP and UDP port used by the server
[default: 35481]
* **`--streams <STREAMS>`**
The number of TCP connections used to generate
traffic in a single direction
[default: 8]
* **`--stream-stagger <SECONDS>`**
The delay between the start of each stream
[default: 0.0]
* **`--load-duration <SECONDS>`**
The duration in which traffic is generated
[default: 10.0]
* **`--grace-duration <SECONDS>`**
The idle time between each test
[default: 2.0]
* **`--latency-sample-interval <MILLISECONDS>`**
[default: 5.0]
* **`--throughput-sample-interval <MILLISECONDS>`**
[default: 60.0]
* **`--plot-transferred`**
Plot transferred bytes
* **`--plot-split-throughput`**
Plot upload and download separately and plot streams
* **`--plot-max-throughput <BPS>`**
Set the axis for throughput to at least this value.
SI units are supported so `100M` would specify 100 Mbps
* **`--plot-max-latency <MILLISECONDS>`**
Set the axis for latency to at least this value
* **`--plot-width <PIXELS>`**
* **`--plot-height <PIXELS>`**
* **`--plot-title <PLOT_TITLE>`**
* **`--latency-peer-address <LATENCY_PEER_ADDRESS>`**
Address of another Crusader server (the "peer") which
concurrently measures the latency to the server and reports
the values to the client
* **`--latency-peer`**
Trigger the client to instruct a peer (another Crusader server)
to begin measuring the latency to the main server
and report the latency back
* **`--out-name <OUT_NAME>`**
The filename prefix used for the raw data and plot filenames
* **`-h, --help`**
Print help (see a summary with '-h')
Loading
Loading