URI: 
       tregtest: use while loops instead of fine-tuned delays - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit d2dfa8c558d81835c801c36b3c655e5357a18f58
   DIR parent d9b041e64d0c1451f789c037304fed7445fcb3e8
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Tue,  4 Jun 2019 15:55:38 +0200
       
       regtest: use while loops instead of fine-tuned delays
       
       Diffstat:
         M electrum/tests/regtest/regtest.sh   |      47 +++++++++++++++++++++++--------
       
       1 file changed, 36 insertions(+), 11 deletions(-)
       ---
   DIR diff --git a/electrum/tests/regtest/regtest.sh b/electrum/tests/regtest/regtest.sh
       t@@ -21,11 +21,16 @@ if [[ $# -eq 0 ]]; then
        fi
        
        if [[ $1 == "init" ]]; then
       +    echo "initializing alice, bob and carol"
            rm -rf /tmp/alice/ /tmp/bob/ /tmp/carol/
            $alice create > /dev/null
            $bob create > /dev/null
            $carol create > /dev/null
       +    $alice setconfig log_to_file True
       +    $bob setconfig log_to_file True
       +    $carol setconfig log_to_file True
            $bob setconfig lightning_listen localhost:9735
       +    echo "funding alice and carol"
            $bitcoin_cli sendtoaddress $($alice getunusedaddress) 1
            $bitcoin_cli sendtoaddress $($carol getunusedaddress) 1
            new_blocks 1
       t@@ -156,36 +161,56 @@ if [[ $1 == "breach_with_htlc" ]]; then
            $bob daemon stop
            ELECTRUM_DEBUG_LIGHTNING_SETTLE_DELAY=3 $bob daemon -s 127.0.0.1:51001:t start
            $bob daemon load_wallet
       -    sleep 1
       -    # alice opens channel
       +    while alice_balance=$($alice getbalance | jq '.confirmed' | tr -d '"') && [ $alice_balance != "1" ]; do
       +        echo "waiting for alice balance"
       +        sleep 1
       +    done
       +    echo "alice opens channel"
            bob_node=$($bob nodeid)
            channel=$($alice open_channel $bob_node 0.15)
       -    new_blocks 6
       -    sleep 5
       -    # alice pays bob
       -    invoice=$($bob addinvoice 0.05 "test")
       +    new_blocks 3
       +    channel_state=""
       +    while channel_state=$($alice list_channels | jq '.[] | .state' | tr -d '"') && [ $channel_state != "OPEN" ]; do
       +        echo "waiting for channel open"
       +        sleep 1
       +    done
            echo "alice pays bob"
       +    invoice=$($bob addinvoice 0.05 "test")
            $alice lnpay $invoice --timeout=1 || true
            settled=$($alice list_channels | jq '.[] | .local_htlcs | .settles | length')
            if [[ "$settled" != "0" ]]; then
       -        echo 'SETTLE_DELAY did not work'
       +        echo "SETTLE_DELAY did not work, $settled != 0"
                exit 1
            fi
            ctx=$($alice get_channel_ctx $channel | jq '.hex' | tr -d '"')
       -    sleep 3
       +    sleep 5
            settled=$($alice list_channels | jq '.[] | .local_htlcs | .settles | length')
            if [[ "$settled" != "1" ]]; then
       -        echo 'SETTLE_DELAY did not work'
       +        echo "SETTLE_DELAY did not work, $settled != 1"
                exit 1
            fi
            echo $($bob getbalance)
            echo "alice breaches with old ctx"
            echo $ctx
       +    height1=$($bob daemon status | jq '.blockchain_height')
            $bitcoin_cli sendrawtransaction $ctx
            new_blocks 1
       -    sleep 10
       +    # wait until breach is confirmed
       +    while height2=$($bob daemon status | jq '.blockchain_height') && [ $(($height2 - $height1)) -ne 1 ]; do
       +        echo "waiting for block"
       +        sleep 1
       +    done
            new_blocks 1
       -    sleep 1
       +    # wait until next block is confirmed, so that htlc tx and redeem tx are confirmed too
       +    while height3=$($bob daemon status | jq '.blockchain_height') && [ $(($height3 - $height2)) -ne 1 ]; do
       +        echo "waiting for block"
       +        sleep 1
       +    done
       +    # wait until wallet is synchronized
       +    while b=$($bob daemon status | jq '.wallets | ."/tmp/bob/regtest/wallets/default_wallet"') && [ "$b" != "true" ]; do
       +        echo "waiting for wallet sync $b"
       +        sleep 1
       +    done
            echo $($bob getbalance)
            balance_after=$($bob getbalance | jq '[.confirmed, .unconfirmed] | to_entries | map(select(.value != null).value) | map(tonumber) | add ')
            if (( $(echo "$balance_after < 0.14" | bc -l) )); then