mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-17 19:03:42 +01:00
daemon/test: prepare for random-ordered htlcs, cleanup parsing.
If we always remove " from JSON, our parsing becomes simpler; turns out that we did that in some places, and check()'s eval removed them from the comparison. We extract check_balance_single() to check the general balance, then grep for HTLCs separately. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
1af3428c6c
commit
4963f277aa
@ -139,6 +139,21 @@ check()
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
check_balance_single()
|
||||||
|
{
|
||||||
|
lcli="$1"
|
||||||
|
us_pay=$2
|
||||||
|
us_fee=$3
|
||||||
|
them_pay=$4
|
||||||
|
them_fee=$5
|
||||||
|
|
||||||
|
if check "$lcli getpeers | tr -s '\012\011\" ' ' ' | $FGREP \"our_amount : $us_pay, our_fee : $us_fee, their_amount : $them_pay, their_fee : $them_fee,\""; then :; else
|
||||||
|
echo Cannot find $lcli output: "our_amount : $us_pay, our_fee : $us_fee, their_amount : $them_pay, their_fee : $them_fee," >&2
|
||||||
|
$lcli getpeers | tr -s '\012\011" ' ' ' >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
check_status_single()
|
check_status_single()
|
||||||
{
|
{
|
||||||
lcli="$1"
|
lcli="$1"
|
||||||
@ -149,9 +164,11 @@ check_status_single()
|
|||||||
them_fee=$6
|
them_fee=$6
|
||||||
them_htlcs="$7"
|
them_htlcs="$7"
|
||||||
|
|
||||||
if check "$lcli getpeers | tr -s '\012\011\" ' ' ' | $FGREP \"our_amount : $us_pay, our_fee : $us_fee, their_amount : $them_pay, their_fee : $them_fee, our_htlcs : [ $us_htlcs], their_htlcs : [ $them_htlcs]\""; then :; else
|
check_balance_single "$lcli" $us_pay $us_fee $them_pay $them_fee
|
||||||
echo Cannot find $lcli output: '"our_amount" : '$us_pay', "our_fee" : '$us_fee', "their_amount" : '$them_pay', "their_fee" : '$them_fee', "our_htlcs" : [ '"$us_htlcs"'], "their_htlcs" : [ '"$them_htlcs"']' >&2
|
|
||||||
$lcli getpeers | tr -s '\012\011 ' ' ' >&2
|
if $lcli getpeers | tr -s '\012\011" ' ' ' | $FGREP "our_htlcs : [ $us_htlcs], their_htlcs : [ $them_htlcs]"; then :; else
|
||||||
|
echo Cannot find $lcli output: "our_htlcs : [ $us_htlcs], their_htlcs : [ $them_htlcs]" >&2
|
||||||
|
$lcli getpeers | tr -s '\012\011" ' ' ' >&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -409,7 +426,7 @@ if [ -n "$DIFFERENT_FEES" ]; then
|
|||||||
lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
|
lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
|
||||||
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
||||||
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
||||||
check_status_single lcli2 0 0 "" $(($AMOUNT - $HTLC_AMOUNT - $ONE_HTLCS_FEE2)) $(($ONE_HTLCS_FEE2)) '{ "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH'" } '
|
check_status_single lcli2 0 0 "" $(($AMOUNT - $HTLC_AMOUNT - $ONE_HTLCS_FEE2)) $(($ONE_HTLCS_FEE2)) "{ msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH } "
|
||||||
lcli2 fulfillhtlc $ID1 $SECRET
|
lcli2 fulfillhtlc $ID1 $SECRET
|
||||||
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
||||||
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
||||||
@ -470,7 +487,7 @@ if [ -n "$MANUALCOMMIT" ]; then
|
|||||||
A_FEE=$(($A_FEE + $EXTRA_FEE))
|
A_FEE=$(($A_FEE + $EXTRA_FEE))
|
||||||
|
|
||||||
# Node 2 has it committed.
|
# Node 2 has it committed.
|
||||||
check_status_single lcli2 $B_AMOUNT $B_FEE "" $A_AMOUNT $A_FEE '{ "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH'" } '
|
check_status_single lcli2 $B_AMOUNT $B_FEE "" $A_AMOUNT $A_FEE "{ msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH } "
|
||||||
|
|
||||||
# There should be no "both committed" here yet
|
# There should be no "both committed" here yet
|
||||||
if lcli1 getlog debug | $FGREP "Both committed"; then
|
if lcli1 getlog debug | $FGREP "Both committed"; then
|
||||||
@ -494,7 +511,7 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Both should have committed tx.
|
# Both should have committed tx.
|
||||||
check_status $A_AMOUNT $A_FEE '{ "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH'" } ' $B_AMOUNT $B_FEE ""
|
check_status $A_AMOUNT $A_FEE "{ msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH } " $B_AMOUNT $B_FEE ""
|
||||||
|
|
||||||
if [ -n "$STEAL" ]; then
|
if [ -n "$STEAL" ]; then
|
||||||
STEAL_TX=`$LCLI1 dev-signcommit $ID2 | cut -d\" -f4`
|
STEAL_TX=`$LCLI1 dev-signcommit $ID2 | cut -d\" -f4`
|
||||||
@ -515,7 +532,7 @@ if [ -n "$DUMP_ONCHAIN" ]; then
|
|||||||
check_peerstate lcli2 STATE_CLOSE_ONCHAIN_THEIR_UNILATERAL
|
check_peerstate lcli2 STATE_CLOSE_ONCHAIN_THEIR_UNILATERAL
|
||||||
|
|
||||||
# both still know about htlc
|
# both still know about htlc
|
||||||
check_status $A_AMOUNT $A_FEE '{ "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH'" } ' $B_AMOUNT $B_FEE ""
|
check_status $A_AMOUNT $A_FEE "{ msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH } " $B_AMOUNT $B_FEE ""
|
||||||
|
|
||||||
# Generate 6 blocks so CSV timeout has expired.
|
# Generate 6 blocks so CSV timeout has expired.
|
||||||
$CLI generate 6
|
$CLI generate 6
|
||||||
@ -579,7 +596,7 @@ lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
|
|||||||
# Check channel status
|
# Check channel status
|
||||||
A_AMOUNT=$(($A_AMOUNT - $EXTRA_FEE - $HTLC_AMOUNT))
|
A_AMOUNT=$(($A_AMOUNT - $EXTRA_FEE - $HTLC_AMOUNT))
|
||||||
A_FEE=$(($A_FEE + $EXTRA_FEE))
|
A_FEE=$(($A_FEE + $EXTRA_FEE))
|
||||||
check_status $A_AMOUNT $A_FEE '{ "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH'" } ' $B_AMOUNT $B_FEE ""
|
check_status $A_AMOUNT $A_FEE "{ msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH } " $B_AMOUNT $B_FEE ""
|
||||||
|
|
||||||
lcli2 failhtlc $ID1 $RHASH
|
lcli2 failhtlc $ID1 $RHASH
|
||||||
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
||||||
@ -599,7 +616,7 @@ lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
|
|||||||
# Check channel status
|
# Check channel status
|
||||||
A_AMOUNT=$(($A_AMOUNT - $EXTRA_FEE - $HTLC_AMOUNT))
|
A_AMOUNT=$(($A_AMOUNT - $EXTRA_FEE - $HTLC_AMOUNT))
|
||||||
A_FEE=$(($A_FEE + $EXTRA_FEE))
|
A_FEE=$(($A_FEE + $EXTRA_FEE))
|
||||||
check_status $A_AMOUNT $A_FEE '{ "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH'" } ' $B_AMOUNT $B_FEE ""
|
check_status $A_AMOUNT $A_FEE "{ msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH } " $B_AMOUNT $B_FEE ""
|
||||||
|
|
||||||
# Make sure node1 accepts the expiry packet.
|
# Make sure node1 accepts the expiry packet.
|
||||||
while [ $(blockheight) != $EXPIRY ]; do
|
while [ $(blockheight) != $EXPIRY ]; do
|
||||||
@ -650,7 +667,7 @@ lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
|
|||||||
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
||||||
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
||||||
|
|
||||||
check_status $(($A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE)) $(($A_FEE + $EXTRA_FEE)) '{ "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH'" } ' $B_AMOUNT $B_FEE ""
|
check_status $(($A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE)) $(($A_FEE + $EXTRA_FEE)) "{ msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH } " $B_AMOUNT $B_FEE ""
|
||||||
|
|
||||||
lcli2 fulfillhtlc $ID1 $SECRET
|
lcli2 fulfillhtlc $ID1 $SECRET
|
||||||
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
||||||
@ -676,7 +693,7 @@ lcli2 newhtlc $ID1 $HTLC_AMOUNT $EXPIRY $RHASH2
|
|||||||
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
||||||
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2
|
||||||
|
|
||||||
check_status $(($A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE)) $(($A_FEE + $EXTRA_FEE)) '{ "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH'" } ' $(($B_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE)) $(($B_FEE + $EXTRA_FEE)) '{ "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH2'" } '
|
check_status $(($A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE)) $(($A_FEE + $EXTRA_FEE)) "{ msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH } " $(($B_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE)) $(($B_FEE + $EXTRA_FEE)) "{ msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH2 } "
|
||||||
|
|
||||||
if [ -n "$CLOSE_WITH_HTLCS" ]; then
|
if [ -n "$CLOSE_WITH_HTLCS" ]; then
|
||||||
# Now begin close
|
# Now begin close
|
||||||
@ -731,7 +748,7 @@ lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH
|
|||||||
# Make sure node1 sends commit (in the background, since it will block!)
|
# Make sure node1 sends commit (in the background, since it will block!)
|
||||||
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2 &
|
[ ! -n "$MANUALCOMMIT" ] || lcli1 commit $ID2 &
|
||||||
# node2 will consider this committed.
|
# node2 will consider this committed.
|
||||||
check_status_single lcli2 $(($B_AMOUNT - $EXTRA_FEE/2)) $(($B_FEE + $EXTRA_FEE/2)) "" $(($A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE/2)) $(($A_FEE + $EXTRA_FEE/2)) '{ "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH'" } '
|
check_status_single lcli2 $(($B_AMOUNT - $EXTRA_FEE/2)) $(($B_FEE + $EXTRA_FEE/2)) "" $(($A_AMOUNT - $HTLC_AMOUNT - $EXTRA_FEE/2)) $(($A_FEE + $EXTRA_FEE/2)) "{ msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH } "
|
||||||
|
|
||||||
# Now send another offer, and enable node2 output.
|
# Now send another offer, and enable node2 output.
|
||||||
lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH2
|
lcli1 newhtlc $ID2 $HTLC_AMOUNT $EXPIRY $RHASH2
|
||||||
@ -742,7 +759,7 @@ lcli2 dev-output $ID1 true
|
|||||||
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
[ ! -n "$MANUALCOMMIT" ] || lcli2 commit $ID1
|
||||||
|
|
||||||
# Both sides should be committed to htlcs
|
# Both sides should be committed to htlcs
|
||||||
check_status $(($A_AMOUNT - $HTLC_AMOUNT*2 - $EXTRA_FEE)) $(($A_FEE + $EXTRA_FEE)) '{ "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH'" }, { "msatoshis" : '$HTLC_AMOUNT', "expiry" : { "block" : '$EXPIRY' }, "rhash" : "'$RHASH2'" } ' $(($B_AMOUNT - $EXTRA_FEE)) $(($B_FEE + $EXTRA_FEE)) ""
|
check_status $(($A_AMOUNT - $HTLC_AMOUNT*2 - $EXTRA_FEE)) $(($A_FEE + $EXTRA_FEE)) "{ msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH }, { msatoshis : $HTLC_AMOUNT, expiry : { block : $EXPIRY }, rhash : $RHASH2 } " $(($B_AMOUNT - $EXTRA_FEE)) $(($B_FEE + $EXTRA_FEE)) ""
|
||||||
|
|
||||||
# Node2 collects the HTLCs.
|
# Node2 collects the HTLCs.
|
||||||
lcli2 fulfillhtlc $ID1 $SECRET
|
lcli2 fulfillhtlc $ID1 $SECRET
|
||||||
|
Loading…
Reference in New Issue
Block a user