docs(linux): document test setups for exercising all the Linux code (#3660)

Trying to make sure I don't overlook anything. The possible combinations
of setups is like 100+, but these 6 will at least exercise everything
one time, and they're probably going to be the most common, right?

---------

Signed-off-by: Reactor Scram <ReactorScram@users.noreply.github.com>
This commit is contained in:
Reactor Scram
2024-02-15 18:12:26 -06:00
committed by GitHub
parent 9054f70995
commit 75e447f9d4

View File

@@ -0,0 +1,42 @@
# Linux client use cases
This document lists the most common use cases that we could test. Exhaustively
tesing everything would be difficult. These cases at least exercise every
feature once, although they don't exercise every combination of features.
1. Alpine Docker container, CLI only, resolv.conf DNS (Easy to test)
2. Exe only, Manual startup, CLI only, No DNS (Embedded / IoT)
3. Exe only, Manual startup, CLI only, resolv.conf DNS (Embedded / IoT)
4. Package manager installation, activated by NetworkManager, CLI only, NetworkManager DNS (To get NM working before committing to a GUI)
5. Package manager installation, runs as always-on systemd service unit, Tauri GUI, resolvectl DNS (A desktop that doesn't have NetworkManager)
6. Package manager installation, runs as systemd service unit, activated by NetworkManager, Tauri GUI and NetworkManager interfaces, NetworkManager DNS (The "Make me one with everything" option)
If we don't test a real package manager (e.g. apt, yum) we can consider
a tarball artifact to be a "package" and untar it in CI to get the systemd and NetworkManager service files. `cargo-deb` does work well for Debian systems.
## Code paths to be exercised
### Install method
1. Exe only
2. Package manager (e.g. apt / yum) or equivalent manual install
3. Docker (Unsupported in prod, only for testing?)
### Startup
1. Manual
2. Systemd service unit
3. D-Bus service activation by NetworkManager
### Interface
1. CLI only
2. Tauri GUI
3. NetworkManager plugin
### DNS control method
1. None
2. resolv.conf
3. resolvectl
4. NetworkManager (Ubuntu 20.04 Desktop and Debian 12 with XFCE both come with NM by default, so it's very popular)