diff --git a/.github/workflows/cont_integration.yml b/.github/workflows/cont_integration.yml index b2fee531..e78e152c 100644 --- a/.github/workflows/cont_integration.yml +++ b/.github/workflows/cont_integration.yml @@ -76,19 +76,19 @@ jobs: test-blockchains: name: Test ${{ matrix.blockchain.name }} - runs-on: ubuntu-16.04 + runs-on: ubuntu-20.04 strategy: fail-fast: false matrix: blockchain: - name: electrum - container: bitcoindevkit/electrs - name: rpc - container: bitcoindevkit/electrs - container: ${{ matrix.blockchain.container }} + - name: esplora env: - ELECTRS_EXE: /root/electrs - BITCOIND_EXE: /root/bitcoind + BITCOIN_VER: 0.21.0 + ELECTRS_RELEASE_URL: https://github.com/RCasatta/electrsd/releases/download/release_0.3.0 + ELECTRS_VER: electrs_ubuntu-20.04_v0.8.10.zip + ELECTRS_ESPLORA_VER: electrs_esplora_ubuntu-20.04_a33e97e1a1fc63fa9c20a116bb92579bbf43b254.zip steps: - name: Checkout uses: actions/checkout@v2 @@ -100,16 +100,25 @@ jobs: ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ github.job }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }} - - name: get pkg-config # running esplora tests seems to need this - run: apt update && apt install -y --fix-missing pkg-config libssl-dev - - name: Install rustup - run: curl https://sh.rustup.rs -sSf | sh -s -- -y - - name: Set default toolchain - run: $HOME/.cargo/bin/rustup default 1.53.0 # STABLE - - name: Set profile - run: $HOME/.cargo/bin/rustup set profile minimal - - name: Update toolchain - run: $HOME/.cargo/bin/rustup update + - name: Setup rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: stable + override: true + - name: Download electrs + run: wget ${{ env.ELECTRS_RELEASE_URL }}/${{ env.ELECTRS_VER }} && unzip ${{ env.ELECTRS_VER }} && chmod +x ./electrs + if: ${{ matrix.blockchain.name != 'esplora' }} + - name: Download electrs esplora + run: wget ${{ env.ELECTRS_RELEASE_URL }}/${{ env.ELECTRS_ESPLORA_VER }} && unzip ${{ env.ELECTRS_ESPLORA_VER }} && chmod +x ./electrs + if: ${{ matrix.blockchain.name == 'esplora' }} + - name: Set ELECTRS_EXE env + run: echo "ELECTRS_EXE=${{ github.workspace }}/electrs" >> $GITHUB_ENV + - name: Show electrs options + run: ${{ env.ELECTRS_EXE }} --help + - name: Set BITCOIND_EXE env + run: echo "BITCOIND_EXE=${{ github.workspace }}/bitcoin-${{ env.BITCOIN_VER }}/bin/bitcoind" >> $GITHUB_ENV + - name: Install bitcoind + run: curl https://bitcoincore.org/bin/bitcoin-core-$BITCOIN_VER/bitcoin-$BITCOIN_VER-x86_64-linux-gnu.tar.gz | tar -xvz bitcoin-$BITCOIN_VER/bin/bitcoind - name: Test run: $HOME/.cargo/bin/cargo test --features test-${{ matrix.blockchain.name }},test-blockchains --no-default-features ${{ matrix.blockchain.name }}::bdk_blockchain_tests diff --git a/Cargo.toml b/Cargo.toml index af9dc597..133c0a69 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -62,15 +62,14 @@ rpc = ["bitcoincore-rpc"] test-blockchains = ["bitcoincore-rpc", "electrum-client"] test-electrum = ["electrum"] test-rpc = ["rpc"] -test-esplora = ["esplora"] +test-esplora = ["esplora", "electrsd/legacy"] test-md-docs = ["electrum"] [dev-dependencies] lazy_static = "1.4" env_logger = "0.7" clap = "2.33" -bitcoind = "0.11.0" -electrsd = { version="0.3.0", features = ["trigger"] } +electrsd = { version="0.4.0", features = ["trigger"] } [[example]] name = "address_validator" diff --git a/src/blockchain/esplora.rs b/src/blockchain/esplora.rs index d866992d..dce7f836 100644 --- a/src/blockchain/esplora.rs +++ b/src/blockchain/esplora.rs @@ -419,6 +419,6 @@ impl_error!(bitcoin::hashes::hex::Error, Hex, EsploraError); #[cfg(feature = "test-blockchains")] crate::bdk_blockchain_tests! { fn test_instance(test_client: &TestClient) -> EsploraBlockchain { - EsploraBlockchain::new(test_client.electrsd.esplora_url.as_ref().unwrap(), None) + EsploraBlockchain::new(&format!("http://{}",test_client.electrsd.esplora_url.as_ref().unwrap()), None) } } diff --git a/src/testutils/blockchain_tests.rs b/src/testutils/blockchain_tests.rs index 588e0e65..12f96dd9 100644 --- a/src/testutils/blockchain_tests.rs +++ b/src/testutils/blockchain_tests.rs @@ -5,8 +5,8 @@ use bitcoin::hashes::sha256d; 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 bitcoind::BitcoinD; use core::str::FromStr; +use electrsd::bitcoind::BitcoinD; use electrsd::ElectrsD; pub use electrum_client::{Client as ElectrumClient, ElectrumApi}; #[allow(unused_imports)] @@ -25,7 +25,13 @@ impl TestClient { pub fn new(bitcoind_exe: String, electrs_exe: String) -> Self { debug!("launching {} and {}", &bitcoind_exe, &electrs_exe); let bitcoind = BitcoinD::new(bitcoind_exe).unwrap(); - let electrsd = ElectrsD::new(electrs_exe, &bitcoind, false, false).unwrap(); // TODO http_enabled should be true only for esplora + + #[cfg(feature = "test-esplora")] + let http_enabled = true; + #[cfg(not(feature = "test-esplora"))] + let http_enabled = false; + + let electrsd = ElectrsD::new(electrs_exe, &bitcoind, false, http_enabled).unwrap(); let node_address = bitcoind.client.get_new_address(None, None).unwrap(); bitcoind