mirror of
https://github.com/fort-nix/nix-bitcoin.git
synced 2024-11-30 03:32:05 +03:00
Merge #348: run-tests: add 'vm' command
3cce822c64
run-tests: add 'vm' command (Erik Arvstedt) Pull request description: ACKs for top commit: nixbitcoin: ACK3cce822c64
Tree-SHA512: 1b7cdc0bc3b73634fdc6abd6817417fd49853be076cf71cc54487e5db9e97e67832eef5ecbb8e899e30a91a60ff333e022e51cc664df7364417240f05096eb16
This commit is contained in:
commit
9e7d9ee475
@ -45,9 +45,14 @@ the host system.
|
||||
git clone https://github.com/fort-nix/nix-bitcoin
|
||||
cd nix-bitcoin/test
|
||||
|
||||
# Run a node in a VM. No tests are executed.
|
||||
./run-tests.sh vm
|
||||
systemctl status bitcoind
|
||||
|
||||
# Run a Python test shell inside a VM node
|
||||
./run-tests.sh debug
|
||||
print(succeed("systemctl status bitcoind"))
|
||||
run_test("bitcoind")
|
||||
|
||||
# Run a node in a container. Requires systemd and root privileges.
|
||||
./run-tests.sh container
|
||||
|
@ -61,5 +61,23 @@ name: testConfig:
|
||||
};
|
||||
};
|
||||
|
||||
# This allows running a test scenario in a regular NixOS VM.
|
||||
# No tests are executed.
|
||||
vmWithoutTests = (pkgs.nixos {
|
||||
imports = [
|
||||
testConfig
|
||||
"${toString pkgs.path}/nixos/modules/virtualisation/qemu-vm.nix"
|
||||
];
|
||||
virtualisation.graphics = false;
|
||||
services.mingetty.autologinUser = "root";
|
||||
|
||||
# Provide a shortcut for instant poweroff from within the machine
|
||||
environment.systemPackages = with pkgs; [
|
||||
(lowPrio (writeScriptBin "q" ''
|
||||
echo o >/proc/sysrq-trigger
|
||||
''))
|
||||
];
|
||||
}).vm;
|
||||
|
||||
config = testConfig;
|
||||
}
|
||||
|
@ -42,6 +42,14 @@
|
||||
# For now, creating NixOS containers requires root permissions.
|
||||
# See ./lib/make-container.sh for a complete documentation.
|
||||
#
|
||||
# Run a test scenario in a regular NixOS VM.
|
||||
# No tests are executed, the machine's serial console is attached to your terminal.
|
||||
# ./run-tests.sh [--scenario <scenario>] vm
|
||||
#
|
||||
# This is useful for directly exploring a test configuration without the
|
||||
# intermediate Python REPL layer.
|
||||
# Run command 'q' inside the machine for instant poweroff.
|
||||
#
|
||||
# Run tests from a snapshot copy of the source files
|
||||
# ./run-tests.sh --copy-src|-c ...
|
||||
#
|
||||
@ -170,6 +178,24 @@ container() {
|
||||
"$scriptDir/lib/make-container.sh" "$@"
|
||||
}
|
||||
|
||||
# Run a regular NixOS VM
|
||||
vm() {
|
||||
export TMPDIR=$(mktemp -d /tmp/nix-bitcoin-vm.XXX)
|
||||
runAtExit+="rm -rf $TMPDIR;"
|
||||
|
||||
nix-build --out-link $TMPDIR/vm -E "((import \"$scriptDir/tests.nix\" {}).getTest \"$scenario\").vmWithoutTests"
|
||||
|
||||
echo "VM stats: CPUs: $numCPUs, memory: $memoryMiB MiB"
|
||||
extraNetOpts=
|
||||
[[ $NB_TEST_ENABLE_NETWORK ]] || extraNetOpts='restrict=on'
|
||||
|
||||
USE_TMPDIR=1 \
|
||||
NIX_DISK_IMAGE=$TMPDIR/img.qcow2 \
|
||||
QEMU_OPTS="-smp $numCPUs -m $memoryMiB -nographic $QEMU_OPTS" \
|
||||
QEMU_NET_OPTS="$extraNetOpts $QEMU_NET_OPTS" \
|
||||
$TMPDIR/vm/bin/run-*-vm
|
||||
}
|
||||
|
||||
doBuild() {
|
||||
name=$1
|
||||
shift
|
||||
|
Loading…
Reference in New Issue
Block a user