From 75e447f9d433ae8bcc2be6fcc7524ec9ac135c9b Mon Sep 17 00:00:00 2001 From: Reactor Scram Date: Thu, 15 Feb 2024 18:12:26 -0600 Subject: [PATCH] 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 --- rust/linux-client/docs/use_cases.md | 42 +++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 rust/linux-client/docs/use_cases.md diff --git a/rust/linux-client/docs/use_cases.md b/rust/linux-client/docs/use_cases.md new file mode 100644 index 000000000..292ac37fb --- /dev/null +++ b/rust/linux-client/docs/use_cases.md @@ -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)