3 releases
0.1.4 | Mar 15, 2024 |
---|---|
0.1.2 | Jan 9, 2024 |
0.1.0 | Dec 19, 2023 |
#5 in #bitcoind
211 downloads per month
27KB
473 lines
Lnd
Utility to run a regtest LND process connected to a given bitcoind instance, useful in integration testing environment.
// Create a bitcoind instance
let mut bitcoin_conf = bitcoind::Conf::default();
bitcoin_conf.enable_zmq = true;
let bitcoind = bitcoind::BitcoinD::with_conf("/usr/local/bin/bitcoind", &bitcoin_conf).unwrap();
// Pass the binary path, bitcoind, and ZMQ ports
let mut lnd = lnd::Lnd::new("<path to lnd>", &bitcoind);
let node = lnd.client.lightning().get_info(GetInfoRequest {}).await;
assert!(node.is_ok());
Automatic binaries download
In your project Cargo.toml, activate the following features
lnd = { version = "*", features = ["download"] }
To use it:
let bitcoind_exe = bitcoind::downloaded_exe_path().expect("bitcoind version feature must be enabled");
let bitcoind = bitcoind::BitcoinD::new(bitcoind_exe).unwrap();
let lnd_exe = lnd::downloaded_exe_path().expect("lnd version feature must be enabled");
let lnd = lnd::Lnd::new(lnd_exe, bitcoind).unwrap();
When the LND_DOWNLOAD_ENDPOINT
/BITCOIND_DOWNLOAD_ENDPOINT
environment variables are set,
lnd
/bitcoind
will try to download the binaries from the given endpoints.
When you don't use the auto-download feature you have the following options:
- have
lnd
executable in thePATH
- provide the
lnd
executable via theLND_EXEC
env var
if let Ok(exe_path) = lnd::exe_path() {
let lnd = lnd::Lnd::new(exe_path, &bitcoind).unwrap();
}
Features
- lnd use a temporary directory as db dir
- A free port is asked to the OS (a very low probability race condition is still possible)
- The process is killed when the struct goes out of scope no matter how the test finishes
Thanks to these features every #[test]
could easily run isolated with its own environment
Dependencies
~27–42MB
~711K SLoC