Merge fort-nix/nix-bitcoin#504: Add fulcrum module

7d7f2df006 fulcrum: add module (Erik Arvstedt)
edd8bd311c bitcoind-rpc-public-whitelist: add `ping`, `help` (Erik Arvstedt)
f946a7cd9b examples: use `mkDefault` for setting `system.stateVersion` (Erik Arvstedt)
79994d0bd2 tests: increase postgresql startup timeout (Erik Arvstedt)

Pull request description:

ACKs for top commit:
  nixbitcoin:
    ACK 7d7f2df006

Tree-SHA512: 866f0a40bb81ceb2008e6efbd415eeee201b9e56aa5ebc60fd1bb4b6eda300155faaa2e6492d8145b3c6084b1e8ef5ec7d4e0ff694beb328d2e5ed755c9d04b4
This commit is contained in:
Jonas Nick 2022-07-22 13:02:35 +00:00
commit 34c4b61402
No known key found for this signature in database
GPG key ID: 4861DBF262123605
15 changed files with 196 additions and 11 deletions

View file

@ -79,7 +79,7 @@ name: testConfig:
''))
];
system.stateVersion = config.system.nixos.release;
system.stateVersion = lib.mkDefault config.system.nixos.release;
})).config.system.build.vm;
config = testConfig;

View file

@ -109,6 +109,9 @@ let
tests.electrs = cfg.electrs.enable;
services.fulcrum.port = 50002;
tests.fulcrum = cfg.fulcrum.enable;
tests.liquidd = cfg.liquidd.enable;
services.liquidd.extraConfig = mkIf config.test.noConnections "connect=0";
@ -141,7 +144,7 @@ let
'';
# Avoid timeout failures on slow CI nodes
systemd.services.postgresql.serviceConfig.TimeoutStartSec = "3min";
systemd.services.postgresql.serviceConfig.TimeoutStartSec = "5min";
}
(mkIf config.test.features.clightningPlugins {
services.clightning.plugins = {
@ -194,6 +197,7 @@ let
services.lightning-pool.enable = true;
services.charge-lnd.enable = true;
services.electrs.enable = true;
services.fulcrum.enable = true;
services.liquidd.enable = true;
services.btcpayserver.enable = true;
services.joinmarket.enable = true;
@ -240,6 +244,7 @@ let
services.lightning-pool.enable = true;
services.charge-lnd.enable = true;
services.electrs.enable = true;
services.fulcrum.enable = true;
services.btcpayserver.enable = true;
services.joinmarket.enable = true;
};

View file

@ -112,6 +112,11 @@ def _():
log_has_string("electrs", "waiting for 0 blocks to download")
)
@test("fulcrum")
def _():
assert_running("fulcrum")
machine.wait_until_succeeds(log_has_string("fulcrum", "started ok"))
# Impure: Stops electrs
# Stop electrs from spamming the test log with 'waiting for 0 blocks to download' messages
@test("stop-electrs")
@ -378,33 +383,44 @@ def _():
else:
return False
def get_block_height(ip, port):
return (
"""echo '{"method": "blockchain.headers.subscribe", "id": 0}'"""
f" | nc {ip} {port} | head -1 | jq -M .result.height"
)
num_blocks = test_data["num_blocks"]
if enabled("electrs"):
machine.wait_until_succeeds(log_has_string("electrs", "serving Electrum RPC"))
get_block_height_cmd = (
"""echo '{"method": "blockchain.headers.subscribe", "id": 0, "params": []}'"""
f" | nc {ip('electrs')} 50001 | head -1 | jq -M .result.height"
)
assert_full_match(get_block_height_cmd, f"{num_blocks}\n")
assert_full_match(get_block_height(ip('electrs'), 50001), f"{num_blocks}\n")
if enabled("fulcrum"):
machine.wait_until_succeeds(log_has_string("fulcrum", "listening for connections"))
assert_full_match(get_block_height(ip('fulcrum'), 50002), f"{num_blocks}\n")
if enabled("clightning"):
machine.wait_until_succeeds(
f"[[ $(runuser -u operator -- lightning-cli getinfo | jq -M .blockheight) == {num_blocks} ]]"
)
if enabled("lnd"):
machine.wait_until_succeeds(
f"[[ $(runuser -u operator -- lncli getinfo | jq -M .block_height) == {num_blocks} ]]"
)
if enabled("lightning-loop"):
machine.wait_until_succeeds(
log_has_string("lightning-loop", f"Starting event loop at height {num_blocks}")
)
succeed("runuser -u operator -- loop getparams")
if enabled("lightning-pool"):
machine.wait_until_succeeds(
log_has_string("lightning-pool", "lnd is now fully synced to its chain backend")
)
succeed("runuser -u operator -- pool orders list")
if enabled("btcpayserver"):
machine.wait_until_succeeds(log_has_string("nbxplorer", f"At height: {num_blocks}"))