]> Untitled Git - bdk/commitdiff
use electrsd with feature to download the binary
authorRiccardo Casatta <riccardo@casatta.it>
Mon, 28 Jun 2021 13:04:17 +0000 (15:04 +0200)
committerRiccardo Casatta <riccardo@casatta.it>
Tue, 29 Jun 2021 09:34:58 +0000 (11:34 +0200)
Cargo.toml
README.md
run_blockchain_tests.sh [deleted file]
src/blockchain/electrum.rs
src/blockchain/esplora.rs
src/blockchain/rpc.rs
src/testutils/blockchain_tests.rs

index ebfff97f0f52a3a562b53c4b16f8b756fd104874..8a5bfb96a0adcadc82317fee23eacf3d7d957d08 100644 (file)
@@ -60,16 +60,16 @@ rpc = ["bitcoincore-rpc"]
 
 # Debug/Test features
 test-blockchains = ["bitcoincore-rpc", "electrum-client"]
-test-electrum = ["electrum"]
-test-rpc = ["rpc"]
-test-esplora = ["esplora", "electrsd/legacy"]
+test-electrum = ["electrum", "electrsd/electrs_0_8_10", "test-blockchains"]
+test-rpc = ["rpc", "electrsd/electrs_0_8_10", "test-blockchains"]
+test-esplora = ["esplora", "electrsd/legacy", "electrsd/esplora_a33e97e1", "test-blockchains"]
 test-md-docs = ["electrum"]
 
 [dev-dependencies]
 lazy_static = "1.4"
 env_logger = "0.7"
 clap = "2.33"
-electrsd = { version="0.5", features = ["trigger", "bitcoind_0_21_1"] }
+electrsd = { version= "0.6", features = ["trigger", "bitcoind_0_21_1"] }
 
 [[example]]
 name = "address_validator"
index 2d8c3c21272fc8c2d5232155c659440d741eba2e..0181e7754c92f46dffc913cfd509910b3c0415ee 100644 (file)
--- a/README.md
+++ b/README.md
@@ -151,6 +151,25 @@ fn main() -> Result<(), bdk::Error> {
 }
 ```
 
+## Testing
+
+### Unit testing
+
+```
+cargo test
+```
+
+### Integration testing
+
+Integration testing require testing features, for example:
+
+```
+cargo test --features test-electrum
+```
+
+The other options are `test-esplora` or `test-rpc`.
+Note that `electrs` and `bitcoind` binaries are automatically downloaded (on mac and linux), to specify your own one must use `--no-default-features` and provide `BITCOIND_EXE` and `ELECTRS_EXE` as environment variables.
+
 ## License
 
 Licensed under either of
diff --git a/run_blockchain_tests.sh b/run_blockchain_tests.sh
deleted file mode 100755 (executable)
index 646e79c..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-
-usage() {
-    cat <<'EOF'
-Script for running the bdk blockchain tests for a specific blockchain by starting up the backend in docker.
-
-Usage: ./run_blockchain_tests.sh [esplora|electrum|rpc] [test name].
-
-EOF
-}
-
-eprintln(){
-    echo "$@" >&2
-}
-
-cleanup() {
-    if test "$id"; then
-        eprintln "cleaning up $blockchain docker container $id";
-        docker rm -fv "$id" > /dev/null;
-        rm /tmp/regtest-"$id".cookie;
-    fi
-    trap - EXIT INT
-}
-
-# Makes sure we clean up the container at the end or if ^C
-trap 'rc=$?; cleanup; exit $rc' EXIT INT
-
-blockchain="$1"
-test_name="$2"
-
-case "$blockchain" in
-    electrum)
-        eprintln "starting electrs docker container"
-        id="$(docker run --detach -p 127.0.0.1:18443-18444:18443-18444/tcp -p 127.0.0.1:60401:60401/tcp bitcoindevkit/electrs:0.4.0)"
-        ;;
-    esplora)
-        eprintln "starting esplora docker container"
-        id="$(docker run --detach -p 127.0.0.1:18443-18444:18443-18444/tcp -p 127.0.0.1:60401:60401/tcp -p 127.0.0.1:3002:3002/tcp bitcoindevkit/esplora:0.4.0)"
-        export BDK_ESPLORA_URL=http://127.0.0.1:3002
-        ;;
-    rpc)
-        eprintln "starting bitcoind docker container (via electrs container)"
-        id="$(docker run --detach -p 127.0.0.1:18443-18444:18443-18444/tcp -p 127.0.0.1:60401:60401/tcp bitcoindevkit/electrs:0.4.0)"      
-        ;;
-    *)
-        usage;
-        exit 1;
-        ;;
-    esac
-
-# taken from https://github.com/bitcoindevkit/bitcoin-regtest-box
-export BDK_RPC_AUTH=COOKIEFILE
-export BDK_RPC_COOKIEFILE=/tmp/regtest-"$id".cookie
-export BDK_RPC_URL=127.0.0.1:18443
-export BDK_RPC_WALLET=bdk-test
-export BDK_ELECTRUM_URL=tcp://127.0.0.1:60401
-
-cli(){
-    docker exec -it "$id" /root/bitcoin-cli -regtest -datadir=/root/.bitcoin $@
-}
-
-#eprintln "running getwalletinfo until bitcoind seems to be alive"
-while ! cli getwalletinfo >/dev/null; do sleep 1; done
-
-# sleep again for good measure!
-sleep 1;
-
-# copy bitcoind cookie file to /tmp
-docker cp "$id":/root/.bitcoin/regtest/.cookie /tmp/regtest-"$id".cookie
-
-cargo test --features "test-blockchains,test-$blockchain" --no-default-features "$blockchain::bdk_blockchain_tests::$test_name"
index 45deb3f7498713fa5ec4676b36cc49642b4f06a3..cba210a98e69d3d03e105fd07aa6c9582a1001d0 100644 (file)
@@ -170,7 +170,7 @@ impl ConfigurableBlockchain for ElectrumBlockchain {
 }
 
 #[cfg(test)]
-#[cfg(feature = "test-blockchains")]
+#[cfg(feature = "test-electrum")]
 crate::bdk_blockchain_tests! {
     fn test_instance(test_client: &TestClient) -> ElectrumBlockchain {
         ElectrumBlockchain::from(Client::new(&test_client.electrsd.electrum_url).unwrap())
index dce7f836d7c55da5865770d81bd4d8a48a005b6e..7f49fd83a981af5f219b3388ebae8d37e820a709 100644 (file)
@@ -416,7 +416,7 @@ impl_error!(consensus::encode::Error, BitcoinEncoding, EsploraError);
 impl_error!(bitcoin::hashes::hex::Error, Hex, EsploraError);
 
 #[cfg(test)]
-#[cfg(feature = "test-blockchains")]
+#[cfg(feature = "test-esplora")]
 crate::bdk_blockchain_tests! {
     fn test_instance(test_client: &TestClient) -> EsploraBlockchain {
         EsploraBlockchain::new(&format!("http://{}",test_client.electrsd.esplora_url.as_ref().unwrap()), None)
index 0165313c24aa854857f33b7621bc9108cf21b7cf..276d23d40fa5365e79faa01c4b89bb17b0e22e09 100644 (file)
@@ -420,7 +420,7 @@ fn list_wallet_dir(client: &Client) -> Result<Vec<String>, Error> {
 }
 
 #[cfg(test)]
-#[cfg(feature = "test-blockchains")]
+#[cfg(feature = "test-rpc")]
 crate::bdk_blockchain_tests! {
 
     fn test_instance(test_client: &TestClient) -> RpcBlockchain {
index 85cc019402a34993e96d69f3e626e86f8a808899..abde58771e9e5088356129b4b83255799a7d0d76 100644 (file)
@@ -6,8 +6,8 @@ use bitcoin::{Address, Amount, Script, Transaction, Txid};
 pub use bitcoincore_rpc::bitcoincore_rpc_json::AddressType;
 pub use bitcoincore_rpc::{Auth, Client as RpcClient, RpcApi};
 use core::str::FromStr;
-use electrsd::bitcoind::{downloaded_exe_path, BitcoinD};
-use electrsd::ElectrsD;
+use electrsd::bitcoind::BitcoinD;
+use electrsd::{bitcoind, ElectrsD};
 pub use electrum_client::{Client as ElectrumClient, ElectrumApi};
 #[allow(unused_imports)]
 use log::{debug, error, info, trace};
@@ -311,11 +311,16 @@ impl Default for TestClient {
     fn default() -> Self {
         let bitcoind_exe = env::var("BITCOIND_EXE")
             .ok()
-            .or(downloaded_exe_path())
+            .or(bitcoind::downloaded_exe_path())
             .expect(
                 "you should provide env var BITCOIND_EXE or specifiy a bitcoind version feature",
             );
-        let electrs_exe = env::var("ELECTRS_EXE").unwrap_or_else(|_| "/root/electrs".to_string());
+        let electrs_exe = env::var("ELECTRS_EXE")
+            .ok()
+            .or(electrsd::downloaded_exe_path())
+            .expect(
+                "you should provide env var ELECTRS_EXE or specifiy a electrsd version feature",
+            );
         Self::new(bitcoind_exe, electrs_exe)
     }
 }