#集成测试 #过程 #环境 #实例 #连接 #临时目录 #bitcoind

lnd

运行与指定bitcoind实例连接的regtest lnd进程的实用工具,在集成测试环境中非常有用

5个版本

0.1.6 2024年8月2日
0.1.5 2024年5月27日
0.1.4 2024年3月15日
0.1.2 2024年1月9日
0.1.0 2023年12月19日

#374 in 魔法豆

Download history 46/week @ 2024-04-21 15/week @ 2024-04-28 10/week @ 2024-05-05 3/week @ 2024-05-19 136/week @ 2024-05-26 18/week @ 2024-06-02 63/week @ 2024-06-09 21/week @ 2024-06-16 10/week @ 2024-07-07 106/week @ 2024-07-28 17/week @ 2024-08-04

每月下载 123

MIT 许可证

29KB
509 代码行

Lnd集成测试实用工具

Crate Documentation

主要是electrsdbitcoind 的副本,适合LND。

运行与指定 LND 实例连接的regtest bitcoind 进程的实用工具,在集成测试环境中非常有用。

use lnd::bitcoind::Conf;
use lnd::LndConf;
use lnd::bitcoind::BitcoinD;
use lnd::Lnd;

// Create a bitcoind instance
let mut bitcoin_conf = Conf::default();

#[cfg(feature = "download")]
let bitcoind = BitcoinD::with_conf(lnd::bitcoind::exe_path(), &bitcoin_conf).unwrap();

#[cfg(not(feature = "download"))]
let bitcoind = BitcoinD::with_conf("<local path to exe>", &bitcoin_conf).unwrap();

let lnd_conf = LndConf::default();

// Pass the path, conf, and bitcoind
#[cfg(feature = "download")]
let mut lnd = Lnd::with_conf(lnd::exe_path(), lnd_conf, &bitcoind);

#[cfg(not(feature = "download"))]
let mut lnd = Lnd::with_conf("<path to lnd>", lnd_conf, &bitcoind);

let node_info = lnd.client.lightning().get_info(GetInfoRequest {}).await; 

assert!(node_info.is_ok());

自动二进制文件下载

在你的项目 Cargo.toml 中,激活以下功能

lnd = { version = "*", features = ["download"] }

使用它

let bitcoind_exe = lnd::bitcoind::downloaded_exe_path().expect("bitcoind version feature must be enabled");
let bitcoind = lnd::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();

当设置了 LND_DOWNLOAD_ENDPOINT/BITCOIND_DOWNLOAD_ENDPOINT 环境变量时,lnd/bitcoind 将尝试从指定的端点下载二进制文件。

当你不使用自动下载功能时,你有以下选项

  • PATH 中有 lnd 可执行文件
  • 通过 LND_EXEC 环境变量提供 lnd 可执行文件
if let Ok(exe_path) = lnd::exe_path() {
  let lnd = lnd::Lnd::new(exe_path, &bitcoind).unwrap();
}

功能

  • lnd 使用临时目录作为数据库目录
  • 操作系统请求一个空闲端口(仍然可能存在非常低概率的竞争条件)
  • 当结构退出作用域时,无论测试如何结束,都会终止进程

多亏了这些功能,每个 #[test] 都可以轻松地与其自己的环境独立运行

依赖项

~27–42MB
~721K SLoC