From 9951f10e745948210e217d4b0f0cefc147ef8769 Mon Sep 17 00:00:00 2001 From: Erik Arvstedt Date: Fri, 16 Oct 2020 17:43:19 +0200 Subject: [PATCH] test: add scenario 'regtest' --- test/run-tests.sh | 1 + test/tests.nix | 32 ++++++++++++++++++++++++++++++++ test/tests.py | 21 +++++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/test/run-tests.sh b/test/run-tests.sh index 0b0197c..0776b40 100755 --- a/test/run-tests.sh +++ b/test/run-tests.sh @@ -181,6 +181,7 @@ all() { scenario=default buildTest "$@" scenario=netns buildTest "$@" scenario=full buildTest "$@" + scenario=regtest buildTest "$@" } build() { diff --git a/test/tests.nix b/test/tests.nix index 2444245..634b97f 100644 --- a/test/tests.nix +++ b/test/tests.nix @@ -120,6 +120,38 @@ let testEnv = rec { tests.backups = mkForce false; }; + # All regtest-enabled services + regtest = { + imports = [ scenarios.regtestBase ]; + services.clightning.enable = true; + services.spark-wallet.enable = true; + services.lnd.enable = true; + services.lightning-loop.enable = true; + services.electrs.enable = true; + services.btcpayserver.enable = true; + services.joinmarket.enable = true; + }; + + regtestBase = { + tests.regtest = true; + + services.bitcoind.regtest = true; + systemd.services.bitcoind.postStart = mkAfter '' + cli=${config.services.bitcoind.cli}/bin/bitcoin-cli + address=$($cli getnewaddress) + $cli generatetoaddress 10 $address + ''; + + # lightning-loop contains no builtin swap server for regtest. + # Add a dummy definition. + services.lightning-loop.extraConfig = '' + server.host=localhost + ''; + + # Needs wallet support which is unavailable for regtest + services.joinmarket.yieldgenerator.enable = mkForce false; + }; + ## Examples / debug helper # Run a selection of tests in scenario 'netns' diff --git a/test/tests.py b/test/tests.py index 685ccde..94a723d 100644 --- a/test/tests.py +++ b/test/tests.py @@ -326,6 +326,27 @@ def _(): assert_no_failure("bitcoind-import-banlist") +@test("regtest") +def _(): + if "electrs" in enabled_tests: + machine.wait_until_succeeds(log_has_string("electrs", "BlockchainInfo")) + get_block_height_cmd = ( + """echo '{"method": "blockchain.headers.subscribe", "id": 0, "params": []}'""" + f" | nc -N {ip('electrs')} 50001 | jq -M .result.height" + ) + assert_full_match(get_block_height_cmd, "10\n") + if "clightning" in enabled_tests: + machine.wait_until_succeeds( + "[[ $(sudo -u operator lightning-cli getinfo | jq -M .blockheight) == 10 ]]" + ) + if "lnd" in enabled_tests: + machine.wait_until_succeeds( + "[[ $(sudo -u operator lncli getinfo | jq -M .block_height) == 10 ]]" + ) + if "lightning-loop" in enabled_tests: + machine.wait_until_succeeds(log_has_string("lightning-loop", "Connected to lnd node")) + + if "netns-isolation" in enabled_tests: def ip(name):