#environment #process #integration #integration-tests #electrs #temp-dir #connected

electrsd

用于运行regtest electrs进程的工具,在集成测试环境中非常有用

37个版本 (破坏性更新)

0.28.0 2024年5月29日
0.27.1 2024年1月25日
0.27.0 2023年12月22日
0.26.0 2023年10月18日
0.8.0 2021年7月26日

#15 in #connected

Download history 2610/week @ 2024-05-03 2736/week @ 2024-05-10 2740/week @ 2024-05-17 2313/week @ 2024-05-24 3195/week @ 2024-05-31 3296/week @ 2024-06-07 3413/week @ 2024-06-14 1600/week @ 2024-06-21 1370/week @ 2024-06-28 2053/week @ 2024-07-05 2232/week @ 2024-07-12 1553/week @ 2024-07-19 1750/week @ 2024-07-26 1851/week @ 2024-08-02 3135/week @ 2024-08-09 2540/week @ 2024-08-16

9,470 每月下载量
用于 17 个crate(12直接使用)

MIT 许可协议

35KB
602

MIT license Crates

Electrsd

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

let bitcoind = bitcoind::BitcoinD::new("/usr/local/bin/bitcoind").unwrap();
let electrsd = electrsd::ElectrsD::new("/usr/local/bin/electrs", bitcoind).unwrap();
let header = electrsd.client.block_headers_subscribe().unwrap();
assert_eq!(header.height, 0);

自动二进制文件下载

在你的项目Cargo.toml中,启用以下功能

electrsd = { version= "0.23", features = ["bitcoind_23_1", "electrs_0_9_1"] }

然后使用它

let bitcoind_exe = bitcoind::downloaded_exe_path().expect("bitcoind version feature must be enabled");
let bitcoind = bitcoind::BitcoinD::new(bitcoind_exe).unwrap();
let electrs_exe = electrsd::downloaded_exe_path().expect("electrs version feature must be enabled");
let electrsd = electrsd::ElectrsD::new(electrs_exe, bitcoind).unwrap();

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

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

  • PATH 中有 electrs 可执行文件
  • 通过 ELECTRS_EXEC 环境变量提供 electrs 可执行文件
if let Ok(exe_path) = electrsd::exe_path() {
  let electrsd = electrsd::electrsD::new(exe_path).unwrap();
}

启动选项可以通过使用 Conf 结构体并通过 electrsD::with_confelectrsD::from_downloaded_with_conf 进行配置。

Nix

对于确定性,在nix中,你无法在build.rs中访问互联网。此外,一些下游crate无法从它们的dev-deps中移除自动下载功能。在这种情况下,你可以设置ELECTRSD_SKIP_DOWNLOAD环境变量,并在PATH中提供electrs可执行文件(或者跳过测试执行)。

传统方法的问题

我使用了基于外部bash脚本的集成测试,该脚本需要启动外部进程,这种方法存在许多问题,例如

特性

  • electrsd使用临时目录作为数据库目录
  • 向操作系统请求一个空闲端口(仍然可能发生非常低概率的竞争条件)
  • 不管测试如何结束,结构体出作用域时都会终止进程
  • 自动下载具有启用功能的electrs可执行文件。由于没有官方的二进制文件,它们使用此项目下的手动工作流程构建。支持的版本有

感谢这些特性,每个#[test]都可以轻松独立运行,拥有自己的环境

弃用

  • 从版本0.26开始,环境变量ELECTRS_EXE被弃用,改为使用ELECTRS_EXEC

使用

依赖项

~12–21MB
~284K SLoC