[ci] Change blockchain tests to use bitcoind rpc cookie authentication
This commit is contained in:
		
							parent
							
								
									c2567b61aa
								
							
						
					
					
						commit
						e3316aee4c
					
				
							
								
								
									
										19
									
								
								.github/workflows/cont_integration.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								.github/workflows/cont_integration.yml
									
									
									
									
										vendored
									
									
								
							@ -81,19 +81,18 @@ jobs:
 | 
				
			|||||||
      matrix:
 | 
					      matrix:
 | 
				
			||||||
        blockchain:
 | 
					        blockchain:
 | 
				
			||||||
          - name: electrum
 | 
					          - name: electrum
 | 
				
			||||||
            container: bitcoindevkit/electrs
 | 
					            container: bitcoindevkit/electrs:0.4.0
 | 
				
			||||||
            start: /root/electrs --network regtest --jsonrpc-import
 | 
					            start: /root/electrs --network regtest --cookie-file $GITHUB_WORKSPACE/.bitcoin/regtest/.cookie --jsonrpc-import
 | 
				
			||||||
          - name: esplora
 | 
					          - name: esplora
 | 
				
			||||||
            container: bitcoindevkit/esplora
 | 
					            container: bitcoindevkit/esplora:0.4.0
 | 
				
			||||||
            start: /root/electrs --network regtest -vvv --cookie admin:passw --jsonrpc-import --electrum-rpc-addr=0.0.0.0:60401 --http-addr 0.0.0.0:3002
 | 
					            start: /root/electrs --network regtest -vvv --daemon-dir $GITHUB_WORKSPACE/.bitcoin --jsonrpc-import --electrum-rpc-addr=0.0.0.0:60401 --http-addr 0.0.0.0:3002
 | 
				
			||||||
          - name: rpc
 | 
					          - name: rpc
 | 
				
			||||||
            container: bitcoindevkit/electrs
 | 
					            container: bitcoindevkit/electrs:0.4.0
 | 
				
			||||||
            start: /root/electrs --network regtest --jsonrpc-import
 | 
					            start: /root/electrs --network regtest --cookie-file $GITHUB_WORKSPACE/.bitcoin/regtest/.cookie --jsonrpc-import
 | 
				
			||||||
    container: ${{ matrix.blockchain.container }}
 | 
					    container: ${{ matrix.blockchain.container }}
 | 
				
			||||||
    env:
 | 
					    env:
 | 
				
			||||||
      BDK_RPC_AUTH: USER_PASS
 | 
					      BDK_RPC_AUTH: COOKIEFILE
 | 
				
			||||||
      BDK_RPC_USER: admin
 | 
					      BDK_RPC_COOKIEFILE: ${{ github.workspace }}/.bitcoin/regtest/.cookie
 | 
				
			||||||
      BDK_RPC_PASS: passw
 | 
					 | 
				
			||||||
      BDK_RPC_URL: 127.0.0.1:18443
 | 
					      BDK_RPC_URL: 127.0.0.1:18443
 | 
				
			||||||
      BDK_RPC_WALLET: bdk-test
 | 
					      BDK_RPC_WALLET: bdk-test
 | 
				
			||||||
      BDK_ELECTRUM_URL: tcp://127.0.0.1:60401
 | 
					      BDK_ELECTRUM_URL: tcp://127.0.0.1:60401
 | 
				
			||||||
@ -109,7 +108,7 @@ jobs:
 | 
				
			|||||||
            ~/.cargo/git
 | 
					            ~/.cargo/git
 | 
				
			||||||
            target
 | 
					            target
 | 
				
			||||||
          key: ${{ runner.os }}-cargo-${{ github.job }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }}
 | 
					          key: ${{ runner.os }}-cargo-${{ github.job }}-${{ hashFiles('**/Cargo.toml','**/Cargo.lock') }}
 | 
				
			||||||
      - name: get pkg-config # running eslpora tests seems to need this
 | 
					      - name: get pkg-config # running esplora tests seems to need this
 | 
				
			||||||
        run: apt update && apt install -y --fix-missing pkg-config libssl-dev
 | 
					        run: apt update && apt install -y --fix-missing pkg-config libssl-dev
 | 
				
			||||||
      - name: Install rustup
 | 
					      - name: Install rustup
 | 
				
			||||||
        run: curl https://sh.rustup.rs -sSf | sh -s -- -y
 | 
					        run: curl https://sh.rustup.rs -sSf | sh -s -- -y
 | 
				
			||||||
 | 
				
			|||||||
@ -1,13 +1,14 @@
 | 
				
			|||||||
#!/usr/bin/env sh
 | 
					#!/usr/bin/env sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "Starting bitcoin node."
 | 
					echo "Starting bitcoin node."
 | 
				
			||||||
/root/bitcoind -regtest -server -daemon -fallbackfee=0.0002 -rpcuser=$BDK_RPC_USER -rpcpassword=$BDK_RPC_PASS -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -blockfilterindex=1 -peerblockfilters=1
 | 
					mkdir $GITHUB_WORKSPACE/.bitcoin
 | 
				
			||||||
 | 
					/root/bitcoind -regtest -server -daemon -datadir=$GITHUB_WORKSPACE/.bitcoin -fallbackfee=0.0002 -rpcallowip=0.0.0.0/0 -rpcbind=0.0.0.0 -blockfilterindex=1 -peerblockfilters=1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
echo "Waiting for bitcoin node."
 | 
					echo "Waiting for bitcoin node."
 | 
				
			||||||
until /root/bitcoin-cli -regtest -rpcuser=$BDK_RPC_USER -rpcpassword=$BDK_RPC_PASS getblockchaininfo; do
 | 
					until /root/bitcoin-cli -regtest -datadir=$GITHUB_WORKSPACE/.bitcoin getblockchaininfo; do
 | 
				
			||||||
    sleep 1
 | 
					    sleep 1
 | 
				
			||||||
done
 | 
					done
 | 
				
			||||||
/root/bitcoin-cli -regtest -rpcuser=$BDK_RPC_USER -rpcpassword=$BDK_RPC_PASS createwallet $BDK_RPC_WALLET
 | 
					/root/bitcoin-cli -regtest -datadir=$GITHUB_WORKSPACE/.bitcoin createwallet $BDK_RPC_WALLET
 | 
				
			||||||
echo "Generating 150 bitcoin blocks."
 | 
					echo "Generating 150 bitcoin blocks."
 | 
				
			||||||
ADDR=$(/root/bitcoin-cli -regtest -rpcuser=$BDK_RPC_USER -rpcpassword=$BDK_RPC_PASS -rpcwallet=$BDK_RPC_WALLET getnewaddress)
 | 
					ADDR=$(/root/bitcoin-cli -regtest -datadir=$GITHUB_WORKSPACE/.bitcoin -rpcwallet=$BDK_RPC_WALLET getnewaddress)
 | 
				
			||||||
/root/bitcoin-cli -regtest -rpcuser=$BDK_RPC_USER -rpcpassword=$BDK_RPC_PASS generatetoaddress 150 $ADDR
 | 
					/root/bitcoin-cli -regtest -datadir=$GITHUB_WORKSPACE/.bitcoin generatetoaddress 150 $ADDR
 | 
				
			||||||
 | 
				
			|||||||
@ -14,10 +14,7 @@ eprintln(){
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cleanup() {
 | 
					cleanup() {
 | 
				
			||||||
    if test "$id"; then
 | 
					    docker kill test_container
 | 
				
			||||||
        eprintln "cleaning up $blockchain docker container $id";
 | 
					 | 
				
			||||||
        docker rm -fv "$id" > /dev/null;
 | 
					 | 
				
			||||||
    fi
 | 
					 | 
				
			||||||
    trap - EXIT INT
 | 
					    trap - EXIT INT
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -30,16 +27,16 @@ test_name="$2"
 | 
				
			|||||||
case "$blockchain" in
 | 
					case "$blockchain" in
 | 
				
			||||||
    electrum)
 | 
					    electrum)
 | 
				
			||||||
        eprintln "starting electrs docker container"
 | 
					        eprintln "starting electrs docker container"
 | 
				
			||||||
        id="$(docker run -d -p 127.0.0.1:18443-18444:18443-18444/tcp -p 127.0.0.1:60401:60401/tcp bitcoindevkit/electrs)"
 | 
					        docker run --detach --rm -p 127.0.0.1:18443-18444:18443-18444/tcp -p 127.0.0.1:60401:60401/tcp --name test_container bitcoindevkit/electrs:0.4.0
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    esplora)
 | 
					    esplora)
 | 
				
			||||||
        eprintln "starting esplora docker container"
 | 
					        eprintln "starting esplora docker container"
 | 
				
			||||||
        id="$(docker run -d -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)"
 | 
					        docker run --detach --rm -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 --name test_container bitcoindevkit/esplora:0.4.0
 | 
				
			||||||
        export BDK_ESPLORA_URL=http://127.0.0.1:3002
 | 
					        export BDK_ESPLORA_URL=http://127.0.0.1:3002
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    rpc)
 | 
					    rpc)
 | 
				
			||||||
        eprintln "starting electrs docker container"
 | 
					        eprintln "starting bitcoind docker container (via electrs container)"
 | 
				
			||||||
        id="$(docker run -d -p 127.0.0.1:18443-18444:18443-18444/tcp -p 127.0.0.1:60401:60401/tcp bitcoindevkit/electrs)"
 | 
					        docker run --detach --rm -p 127.0.0.1:18443-18444:18443-18444/tcp -p 127.0.0.1:60401:60401/tcp --name test_container bitcoindevkit/electrs:0.4.0      
 | 
				
			||||||
        ;;
 | 
					        ;;
 | 
				
			||||||
    *)
 | 
					    *)
 | 
				
			||||||
        usage;
 | 
					        usage;
 | 
				
			||||||
@ -48,21 +45,23 @@ case "$blockchain" in
 | 
				
			|||||||
    esac
 | 
					    esac
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# taken from https://github.com/bitcoindevkit/bitcoin-regtest-box
 | 
					# taken from https://github.com/bitcoindevkit/bitcoin-regtest-box
 | 
				
			||||||
export BDK_RPC_AUTH=USER_PASS
 | 
					export BDK_RPC_AUTH=COOKIEFILE
 | 
				
			||||||
export BDK_RPC_USER=admin
 | 
					export BDK_RPC_COOKIEFILE=/tmp/regtest.cookie
 | 
				
			||||||
export BDK_RPC_PASS=passw
 | 
					 | 
				
			||||||
export BDK_RPC_URL=127.0.0.1:18443
 | 
					export BDK_RPC_URL=127.0.0.1:18443
 | 
				
			||||||
export BDK_RPC_WALLET=bdk-test
 | 
					export BDK_RPC_WALLET=bdk-test
 | 
				
			||||||
export BDK_ELECTRUM_URL=tcp://127.0.0.1:60401
 | 
					export BDK_ELECTRUM_URL=tcp://127.0.0.1:60401
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cli(){
 | 
					cli(){
 | 
				
			||||||
    docker exec -it "$id" /root/bitcoin-cli -regtest -rpcuser=admin -rpcpassword=passw $@
 | 
					    docker exec -it test_container /root/bitcoin-cli -regtest -datadir=/root/.bitcoin $@
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
eprintln "running getwalletinfo until bitcoind seems to be alive"
 | 
					#eprintln "running getwalletinfo until bitcoind seems to be alive"
 | 
				
			||||||
while ! cli getwalletinfo >/dev/null; do sleep 1; done
 | 
					while ! cli getwalletinfo >/dev/null; do sleep 1; done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# sleep again for good measure!
 | 
					# sleep again for good measure!
 | 
				
			||||||
sleep 1;
 | 
					sleep 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# copy bitcoind cookie file to /tmp
 | 
				
			||||||
 | 
					docker cp test_container:/root/.bitcoin/regtest/.cookie /tmp/regtest.cookie
 | 
				
			||||||
 | 
					
 | 
				
			||||||
cargo test --features "test-blockchains,test-$blockchain" --no-default-features "$blockchain::bdk_blockchain_tests::$test_name"
 | 
					cargo test --features "test-blockchains,test-$blockchain" --no-default-features "$blockchain::bdk_blockchain_tests::$test_name"
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user