aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qa/rpc-tests/util.sh6
-rwxr-xr-xqa/rpc-tests/wallet.sh25
2 files changed, 26 insertions, 5 deletions
diff --git a/qa/rpc-tests/util.sh b/qa/rpc-tests/util.sh
index dc2a319970..e4e3953748 100644
--- a/qa/rpc-tests/util.sh
+++ b/qa/rpc-tests/util.sh
@@ -82,3 +82,9 @@ function CreateTxn1 {
function SendRawTxn {
$CLI $1 sendrawtransaction $2
}
+
+# Use: GetBlocks <datadir>
+# returns number of blocks from getinfo
+function GetBlocks {
+ ExtractKey blocks "$( $CLI $1 getinfo )"
+}
diff --git a/qa/rpc-tests/wallet.sh b/qa/rpc-tests/wallet.sh
index dd511782d0..118809a265 100755
--- a/qa/rpc-tests/wallet.sh
+++ b/qa/rpc-tests/wallet.sh
@@ -37,12 +37,27 @@ B3PID=$!
trap "kill -9 $B1PID $B2PID $B3PID; rm -rf $D" EXIT
+# Wait until all three nodes are at the same block number
+function WaitBlocks {
+ while :
+ do
+ sleep 1
+ BLOCKS1=$( GetBlocks $B1ARGS )
+ BLOCKS2=$( GetBlocks $B2ARGS )
+ BLOCKS3=$( GetBlocks $B3ARGS )
+ if (( $BLOCKS1 == $BLOCKS2 && $BLOCKS2 == $BLOCKS3 ))
+ then
+ break
+ fi
+ done
+}
+
# 1 block, 50 XBT each == 50 XBT
$CLI $B1ARGS setgenerate true 1
-sleep 1 # sleep is necessary to let block broadcast
+WaitBlocks
# 101 blocks, 1 mature == 50 XBT
$CLI $B2ARGS setgenerate true 101
-sleep 1
+WaitBlocks
CheckBalance $B1ARGS 50
CheckBalance $B2ARGS 50
@@ -56,11 +71,11 @@ Send $B1ARGS $B3ARGS 10
# Have B1 mine a new block, and mature it
# to recover transaction fees
$CLI $B1ARGS setgenerate true 1
-sleep 1
+WaitBlocks
# Have B2 mine 100 blocks so B1's block is mature:
$CLI $B2ARGS setgenerate true 100
-sleep 1
+WaitBlocks
# B1 should end up with 100 XBT in block rewards plus fees,
# minus the 21 XBT sent to B3:
@@ -77,7 +92,7 @@ RAWTXID2=$(SendRawTxn $B2ARGS $RAW2)
# Have B2 mine a block to confirm transactions:
$CLI $B2ARGS setgenerate true 1
-sleep 1 # allow time for block to be relayed
+WaitBlocks
# Check balances after confirmation
CheckBalance $B1ARGS 0