mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-11-20 10:39:49 +01:00
ce96812ef0
This significantly reduces re-testing of the same paths, and simplifies the addition of new tests. make check -j12 times: Before: 9m24.973s After: 7m52.005s Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
82 lines
2.1 KiB
Bash
Executable File
82 lines
2.1 KiB
Bash
Executable File
#! /bin/sh -e
|
|
|
|
# Wherever we are, we want to be in daemon/test dir.
|
|
cd `git rev-parse --show-toplevel`/daemon/test
|
|
|
|
. scripts/vars.sh
|
|
. scripts/helpers.sh
|
|
|
|
parse_cmdline 2 "$@"
|
|
setup_lightning 2
|
|
start_lightningd 2
|
|
|
|
# Prevent anchor broadcast
|
|
lcli1 dev-broadcast false
|
|
lcli1 connect localhost $PORT2 $FUND_INPUT_TX &
|
|
|
|
# Expect them to be waiting for anchor, and ack from other side.
|
|
check_peerstate lcli1 STATE_OPEN_WAIT_ANCHORDEPTH_AND_THEIRCOMPLETE
|
|
check_peerstate lcli2 STATE_OPEN_WAIT_ANCHORDEPTH_AND_THEIRCOMPLETE
|
|
|
|
# Enable reconnect from here.
|
|
DO_RECONNECT=$RECONNECT
|
|
|
|
$CLI generate 99
|
|
|
|
# Still waiting.
|
|
check_peerstate lcli1 STATE_OPEN_WAIT_ANCHORDEPTH_AND_THEIRCOMPLETE
|
|
check_peerstate lcli2 STATE_OPEN_WAIT_ANCHORDEPTH_AND_THEIRCOMPLETE
|
|
|
|
# Make sure whichever times out first doesn't tell the other.
|
|
lcli1 dev-output $ID2 false
|
|
lcli2 dev-output $ID1 false
|
|
$CLI generate 1
|
|
|
|
# Node1 should have gone into STATE_ERR_ANCHOR_TIMEOUT.
|
|
check "lcli1 getlog debug | $FGREP STATE_ERR_ANCHOR_TIMEOUT"
|
|
|
|
# Don't try to reconnect any more if we are.
|
|
if [ x"$RECONNECT" = xreconnect ]; then DO_RECONNECT=""; fi
|
|
|
|
# If we're restarting, don't expect peer.
|
|
NO_PEER2=1
|
|
|
|
# Now let them send errors if they're still trying.
|
|
lcli2 dev-output $ID1 true || true
|
|
lcli1 dev-output $ID2 true || true
|
|
|
|
# Peer 2 should give up, and have forgotten all about it.
|
|
check "lcli2 getlog debug | $FGREP STATE_CLOSED"
|
|
check_no_peers lcli2
|
|
|
|
# Node1 should be disconnected.
|
|
check_peerconnected lcli1 false
|
|
|
|
# Now let node1 broadcast anchor and unilateral close belatedly!
|
|
lcli1 dev-broadcast true
|
|
|
|
# Now mine that transaction so they see it.
|
|
$CLI generate 1
|
|
check_peerstate lcli1 STATE_CLOSE_ONCHAIN_OUR_UNILATERAL
|
|
|
|
# Now move bitcoind 1 day, which is what node2 asked for on commit.
|
|
# Get current time from last block (works if we run this twice).
|
|
CURTIME=$($CLI getblock $($CLI getblockhash $(($BLOCKHEIGHT + 100))) | sed -n 's/ "time": \([0-9]*\),/\1/p')
|
|
$CLI setmocktime $(($CURTIME + 24 * 60 * 60))
|
|
|
|
# Move average so CSV moves.
|
|
$CLI generate 6
|
|
|
|
# Now it should have spent the commit tx.
|
|
check_tx_spend
|
|
|
|
# 100 blocks pass
|
|
$CLI generate 100
|
|
|
|
# Considers it all done now.
|
|
check_no_peers lcli1
|
|
|
|
lcli1 stop
|
|
lcli2 stop
|
|
all_ok
|