Browse Source
This moves all the non-legacy blackbox testing into python. Before: real 10m18.385s After: real 9m54.877s Note that this doesn't valgrind the subdaemons: that patch seems to cause some issues in the python framework which I am still chasing. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>ppa-0.6.1
Rusty Russell
8 years ago
committed by
Christian Decker
6 changed files with 123 additions and 150 deletions
@ -1,123 +0,0 @@ |
|||
#! /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 lightningd/lightningd |
|||
|
|||
if lcli1 connect localhost $PORT2 $ID1; then |
|||
echo Connected OK with wrong ID? >&2 |
|||
exit 1 |
|||
fi |
|||
|
|||
lcli1 connect localhost $PORT2 $ID2 |
|||
|
|||
# Should now be exchanging gossip |
|||
lcli1 getpeers | $FGREP '"condition" : "Exchanging gossip"' |
|||
|
|||
# It should have gone through these steps |
|||
lcli1 getpeers info | $FGREP "Starting handshake as initiator" |
|||
lcli1 getpeers info | $FGREP "Beginning gossip" |
|||
lcli1 getpeers info | $FGREP "Exchanging gossip" |
|||
|
|||
# Both should still be owned by gossip |
|||
lcli1 getpeers | $FGREP '"owner" : "lightningd_gossip"' |
|||
lcli2 getpeers | $FGREP '"owner" : "lightningd_gossip"' |
|||
|
|||
# Add some funds. |
|||
NEWADDR=`lcli1 newaddr | get_field address` |
|||
FUND_INPUT_TXID=`$CLI sendtoaddress $NEWADDR 0.10000002` |
|||
FUND_INPUT_TX=`$CLI getrawtransaction $FUND_INPUT_TXID` |
|||
|
|||
lcli1 addfunds $FUND_INPUT_TX | $FGREP '"satoshis" : 10000002' |
|||
|
|||
# Now fund a channel. |
|||
lcli1 fundchannel $ID2 1000000 |
|||
|
|||
# Now wait for it to reach depth |
|||
lcli1 getpeers info | $FGREP "Waiting for our funding tx" |
|||
[ `lcli1 getpeers | get_field msatoshi_to_us` = 1000000000 ] |
|||
[ `lcli1 getpeers | get_field msatoshi_to_them` = 0 ] |
|||
[ `lcli2 getpeers | get_field msatoshi_to_them` = 1000000000 ] |
|||
[ `lcli2 getpeers | get_field msatoshi_to_us` = 0 ] |
|||
|
|||
$CLI generate 10 |
|||
check "lcli1 getpeers info | $FGREP 'Funding tx reached depth'" |
|||
check "lcli2 getpeers info | $FGREP 'Funding tx reached depth'" |
|||
|
|||
check "lcli1 getpeers | tr -s '\012\011\" ' ' ' | $FGREP 'condition : Normal operation'" |
|||
check "lcli2 getpeers | tr -s '\012\011\" ' ' ' | $FGREP 'condition : Normal operation'" |
|||
|
|||
SECRET=1de08917a61cb2b62ed5937d38577f6a7bfe59c176781c6d8128018e8b5ccdfd |
|||
RHASH=`lcli1 dev-rhash $SECRET | sed 's/.*"\([0-9a-f]*\)".*/\1/'` |
|||
|
|||
# This is actually dust |
|||
lcli1 dev-newhtlc $ID2 100000 $(( $(blockheight) + 10 )) $RHASH |
|||
check "lcli1 getlog debug | $FGREP 'Sending commit_sig with 0 htlc sigs'" |
|||
|
|||
check "lcli2 getlog debug | $FGREP 'their htlc 0 locked'" |
|||
check "lcli2 getpeers info | $FGREP 'failed htlc 0 code 0x400f'" |
|||
check "lcli1 getpeers info | $FGREP 'htlc 0 failed with code 0x400f'" |
|||
|
|||
# This one isn't dust. |
|||
RHASH=`lcli2 invoice 100000000 testpayment1 | get_field rhash` |
|||
[ `lcli2 listinvoice testpayment1 | get_field complete` = false ] |
|||
|
|||
lcli1 dev-newhtlc $ID2 100000000 $(( $(blockheight) + 10 )) $RHASH |
|||
check "lcli1 getlog debug | $FGREP 'Sending commit_sig with 1 htlc sigs'" |
|||
|
|||
check "lcli2 getlog debug | $FGREP 'Resolving invoice '\'testpayment1\'' with HTLC 1'" |
|||
[ `lcli2 listinvoice testpayment1 | get_field complete` = true ] |
|||
|
|||
check "lcli1 getpeers | get_field msatoshi_to_us | $FGREP -w 900000000" |
|||
[ `lcli1 getpeers | get_field msatoshi_to_us` = 900000000 ] |
|||
[ `lcli1 getpeers | get_field msatoshi_to_them` = 100000000 ] |
|||
[ `lcli2 getpeers | get_field msatoshi_to_them` = 900000000 ] |
|||
[ `lcli2 getpeers | get_field msatoshi_to_us` = 100000000 ] |
|||
|
|||
RHASH=`lcli2 invoice 200000000 testpayment2 | get_field rhash` |
|||
[ `lcli2 listinvoice testpayment2 | get_field complete` = false ] |
|||
|
|||
# Not enough delay. |
|||
if lcli1 sendpay '[ { "msatoshi" : 200000000, "id" : "'$ID2'", "delay" : 3 } ]' $RHASH; then |
|||
echo Infufficient delay succeeded? >&2 |
|||
fi |
|||
|
|||
# Insufficient funds. |
|||
if lcli1 sendpay '[ { "msatoshi" : 199999999, "id" : "'$ID2'", "delay" : 5 } ]' $RHASH; then |
|||
echo Infufficient funds succeeded? >&2 |
|||
fi |
|||
|
|||
# Bad ID. |
|||
if lcli1 sendpay '[ { "msatoshi" : 200000000,, "id" : "'$ID2'", "delay" : 5 } ]' 00000000000000000000000000000000; then |
|||
echo Bad ID succeeded? >&2 |
|||
fi |
|||
|
|||
# This works |
|||
lcli1 sendpay '[ { "msatoshi" : 200000000, "id" : "'$ID2'", "delay" : 5 } ]' $RHASH |
|||
[ `lcli2 listinvoice testpayment2 | get_field complete` = true ] |
|||
|
|||
# This will "succeed", but won't actually send anything (duplicate) |
|||
if lcli1 getlog debug | $FGREP 'json_sendpay: found previous... succeeded'; then |
|||
echo Already had found previous? >&2 |
|||
exit 1 |
|||
fi |
|||
lcli1 sendpay '[ { "msatoshi" : 200000000, "id" : "'$ID2'", "delay" : 5 } ]' $RHASH |
|||
lcli1 getlog debug | $FGREP 'json_sendpay: found previous... succeeded' |
|||
|
|||
# FIXME: test paying via another node, should fail to pay twice. |
|||
|
|||
# Overpay. |
|||
RHASH=`lcli2 invoice 200000000 testpayment3 | get_field rhash` |
|||
lcli1 sendpay '[ { "msatoshi" : 200000001, "id" : "'$ID2'", "delay" : 5 } ]' $RHASH |
|||
|
|||
lcli1 stop |
|||
lcli2 stop |
|||
|
|||
all_ok |
Loading…
Reference in new issue