nix-bitcoin/test
Jonas Nick 282c45b746
Merge fort-nix/nix-bitcoin#575: Improve lndconnect, support WireGuard
cea69b73d2 nodeinfo: enable required option `nix-bitcoin.operator` (Erik Arvstedt)
27d95fda85 nodeinfo/lnd: add `onion_rest_address` (Erik Arvstedt)
54a21874ae nodeinfo/lnd: add `rest_address` (Erik Arvstedt)
a4bfefd562 add `presets/wireguard.nix` (Erik Arvstedt)
477e1709fb lndconnect: update to Zeus 0.7.1 (Erik Arvstedt)
f996ef37d9 lnd, clightning-rest: remove `lndconnectOnion`, add generic option `lndconnect` (Erik Arvstedt)
b4bc621b8c rename `lndconnect-onion.nix` -> `lndconnect.nix` (Erik Arvstedt)
907cfe4f4c docs/services: improve title, fix numbering (Erik Arvstedt)

Pull request description:

ACKs for top commit:
  jonasnick:
    ACK cea69b73d2

Tree-SHA512: 747d95b49f5c1b63dfaa2c6bc302fb102e3788c36e279cc28266ea230e8daae54973d8bdb51f2a81e7e84eb86b6b1e504fbe8af85c2318525c54d901678b3f55
2023-03-13 12:55:59 +00:00
..
ci tests: define tests via flake 2022-11-03 23:08:06 +01:00
lib test: support run, debug commands in basic NixOS tests 2023-02-02 10:51:41 +01:00
nixos-search update nixpkgs 2023-03-07 21:08:35 +00:00
clightning-replication.nix tests/clightning-replication: reuse pkgs instance 2023-02-02 10:51:41 +01:00
README.md docs: move test docs from examples/README to test/README 2023-01-15 20:28:48 +01:00
run-tests.sh add presets/wireguard.nix 2023-03-11 20:10:54 +01:00
shellcheck.sh tests: add shellcheckServices 2022-09-12 21:00:00 +02:00
tests.nix add presets/wireguard.nix 2023-03-11 20:10:54 +01:00
tests.py lnd, clightning-rest: remove lndconnectOnion, add generic option lndconnect 2023-02-27 14:39:29 +01:00
wireguard-lndconnect.nix add presets/wireguard.nix 2023-03-11 20:10:54 +01:00

The run-tests.sh command is most convenient and versatile way to run tests.
It leave no traces (outside of /nix/store) on the host system.

run-tests.sh requires Nix >= 2.10.

Summary

./run-tests.sh [--scenario|-s <scenario>] [build|vm|debug|container]

See the top of run-tests.sh for a complete documentation.
Test scenarios are defined in tests.nix and tests.py.

Tutorial

Running tests

# Run the basic set of tests. These tests are also run on the GitHub CI server.
./run-tests.sh

# Run the test for scenario `regtest`.
# The test is run via the Nix build system. Successful runs are cached.
./run-tests.sh -s regtest build
./run-tests.sh -s regtest # Shorthand, equivalent

# To test a single service, use its name as a scenario.
./run-tests.sh -s clightning

# When no scenario is specified, scenario `default` is used.
./run-tests.sh build

Debugging

# Start a shell is inside a test VM. No tests are executed.
./run-tests.sh -s bitcoind vm
systemctl status bitcoind

# Run a Python NixOS test shell inside a VM.
# See https://nixos.org/manual/nixos/stable/#ssec-machine-objects for available commands.
./run-tests.sh debug
print(succeed("systemctl status bitcoind"))
run_test("bitcoind")

# Start a shell in a container node. Requires systemd and root privileges.
./run-tests.sh container

# In the container shell: Run command in container (with prefix `c`)
c systemctl status bitcoind

# Explore a single feature
./run-tests.sh -s electrs container

# Run a command in a container.
# The container is deleted afterwards.
./run-tests.sh -s clightning container --run c lightning-cli getinfo

# Define a custom scenario
./run-tests.sh --scenario '{
  services.clightning.enable = true;
  nix-bitcoin.nodeinfo.enable = true;
}' container --run c nodeinfo

Running tests with Flakes

Tests can also be accessed via the nix-bitcoin flake:

# Build test
nix build --no-link ..#tests.default

# Run a node in a VM. No tests are executed.
nix run ..#tests.default.vm

# Run a Python test shell inside a VM node
nix run ..#tests.default.run -- --debug

# Run a node in a container. Requires extra-container, systemd and root privileges
nix run ..#tests.default.container
nix run ..#tests.default.containerLegacy # For NixOS with `system.stateVersion` <22.05

# Run a command in a container
nix run ..#tests.default.container -- --run c nodeinfo
nix run ..#tests.default.containerLegacy -- --run c nodeinfo # For NixOS with `system.stateVersion` <22.05