Rusty Russell
2f21435195
pytest: test that both sides refuse upgrade if not quiescent.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-06-04 16:13:08 +09:30
Rusty Russell
ebcadc50c3
pytest: test onchaind handles unilateral and penalty txs on either side of upgrade.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-06-04 16:13:08 +09:30
Rusty Russell
5526c6797b
channeld: set desired_type to upgrade option_static_remotekey if not already.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-06-04 16:13:08 +09:30
Rusty Russell
d305b8ada6
channeld: send upgradable types, add logging (EXPERIMENTAL_FEATURES)
...
For now the only upgrade possible is to enable option_static_remotekey.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-06-04 16:13:08 +09:30
Christian Decker
5e1fadf799
pay: Skip the presplitter mod if it'd exhaust our HTLC budget
...
Changelog-Fixed: pay: The presplitter mod will no longer exhaust the HTLC budget.
2021-06-03 16:59:53 +09:30
Rusty Russell
e619bf00fb
pytest: show problem with pay when not enough HTLCs available.
...
As you can see, I did a lot of debugging before realizing that the
actual problem is in the pay plugin :(
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-06-03 16:59:53 +09:30
niftynei
e95fc74884
tests: cleanup any unfinished/hanging channel opens
...
Otherwise it hangs on cleanup, as l2 is waiting for l1 to respond (and
it's not going to), so the memleak call hangs.
2021-06-03 11:30:05 +09:30
Antoine Poinsot
b5aaee6679
Revert "pytest: Skip hsm encryption test if we don't have a TTY"
...
This reverts commit 2b12cac31e . There is
no need to skip the test in this case, and it seems to simply be an artifact
of CI-debugging hell :)
Changelog-None
2021-06-03 11:27:16 +09:30
Rusty Russell
03cfe0b468
EXPERIMENTAL: dev-quiesce to initiate (and test) quiescence.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-06-01 12:08:51 -05:00
Rusty Russell
a794e87edd
pytest: test pay ordering.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-06-01 11:14:38 -05:00
Rusty Russell
ec83d7a8a5
doc/schemas: disableoffer, disconnect, feerates, fetchinvoice, fundchannel, fundchannel_cancel, fundchannel_complete, fundchannel_start, fundpsbt, getinfo, getlog, getroute.
...
We also add a test for getlog, since it was never called by the
testsuite.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-05-27 20:28:49 +09:30
Rusty Russell
ea99a05249
pytest: add schema support for JSON responses.
...
This adds our first (basic) schema, and sews support into pyln-testing
so it will load schemas for any method for doc/schemas/{method}.schema.json.
All JSON responses in a test run are checked against the schema (if any).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-05-27 20:28:49 +09:30
Rusty Russell
129d3f65e7
pytest: don't use command_success_str in test_libplugin.c
...
result should *always* be an object. This allows it to add fields
without breaking the API. A command which returns "result" as a
string is living in sin.
This changes one of the two callers of "command_success_str".
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-05-27 20:28:49 +09:30
Rusty Russell
d3f370944e
Makefile: update to latest spec.
...
This includes anysegwit and the updated HTLC tiebreak test vector. It
also adds explicit wording for invalid per_commitment_secret (which
nicely matches our code already!).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-05-26 20:01:03 +09:30
Rusty Russell
b6223eb117
lightningd: option_shutdown_anysegwit is no longer experimental.
...
https://github.com/lightningnetwork/lightning-rfc/pull/672 was merged.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
Changelog-Added: Protocol: `option_shutdown_anysegwit` allows future segwit versions on shutdown transactions.
2021-05-26 20:01:03 +09:30
Rusty Russell
14eddb95ba
fundchannel, multifundchannel: reserve inputs for two weeks, not 12 hours.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
Changelog-Changed: Plugins: `fundchannel` and `multifundchannel` will now reserve funding they use for 2 weeks instead of 12 hours.
2021-05-26 15:08:01 +09:30
Rusty Russell
95f77f119b
pytest: test double-spending an opening tx input.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-05-26 15:08:01 +09:30
Rusty Russell
f24dc9173d
wallet: add "reserved_to_block" field to listfunds.
...
We already have this field in reserveinputs and unreserveinputs.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
Changelog-Added: JSON-RPC: `listfunds` has a new `reserved_to_block` field.
2021-05-26 15:08:01 +09:30
Nalin Bhardwaj
94419c7d73
common: Check chain hash in gossip_timestamp_filter
...
Changelog-Fixed: Validate chain hash for gossip_timestamp_filter messages
2021-05-26 10:43:50 +09:30
Rusty Russell
96bd0961a4
pay: fix corner case where we eliminate our own hint.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
Changelog-Fixed: `pay`: Fix occasional crash paying an invoice with a routehint to us.
2021-05-26 08:07:38 +09:30
Rusty Russell
df594be80a
pytest: add message check to test_blockheight_disagreement
...
Make sure there was an actual disagreement!
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-05-25 16:25:17 +02:00
Rusty Russell
61d146a2e7
pytest: fix gossip flake in test_restart_many_payments
...
```
2021-05-23T09:18:56.9768962Z lightningd-4: 2021-05-23T08:33:31.918Z DEBUG 0266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c03518-gossipd: Ignoring future channel_announcment for 103x4x0 (current block 102)
2021-05-23T09:18:56.9771608Z lightningd-4: 2021-05-23T08:33:31.918Z DEBUG 0266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c03518-gossipd: Bad gossip order: WIRE_CHANNEL_UPDATE before announcement 103x4x0/0
2021-05-23T09:18:56.9774035Z lightningd-4: 2021-05-23T08:33:31.919Z DEBUG 0266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c03518-gossipd: Bad gossip order: WIRE_CHANNEL_UPDATE before announcement 103x4x0/1
```
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-05-25 16:25:17 +02:00
Antoine Poinsot
fe8074c8c3
Refuse to parse v2 onion addresses without deprecated_apis
...
Tor v2 hidden services have been deprecated for a while:
https://blog.torproject.org/v2-deprecation-timeline .
This prevents user from being able to set them in the configuration
and to connect to them while still letting us be able to parse them
for gossip.
Changelog-Deprecated: lightningd: v2 Tor addresses. Use v3. See https://blog.torproject.org/v2-deprecation-timeline .
Signed-off-by: Antoine Poinsot <darosior@protonmail.com >
2021-05-24 20:22:45 +09:30
Rusty Russell
d70661d32e
pytest: check nonstandard onion generation.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-05-24 12:52:19 +02:00
niftynei
9d9fdfdfa6
rbf-test: confirm that rbf'd inflight is opened and closed as expected
...
We weren't testing that a non-tip inflight would get opened correctly.
Until now, that is.
2021-05-24 12:17:48 +09:30
niftynei
d6bd6cc5cf
open-rbf: we broadcast all the commitments for a channel when closed
...
If you drop an rbf'd channel to chain (before any updates have been
made) we should drop *all* of the inflights to chain
2021-05-24 12:17:48 +09:30
niftynei
dff9516cad
rbf-tests: check every inflight has signed commitment produced
...
Little check to make sure that we can produce a signed commitment tx for
every inflight we've got saved.
2021-05-24 12:17:48 +09:30
niftynei
4247ec3a05
inflights: save the whole psbt to the database
...
Otherwise we're missing info when we go to broadcast these and can't
properly sign the transaction to close it.
Found-by: @jasan
2021-05-24 12:17:48 +09:30
niftynei
727d7e9493
df-rbf: test that, with enough bumps, we can eventually add to mempool
...
We don't pass the minimum fee requirement the first few times we attempt
an RBF, so it fails. Keep going until actually replaces
2021-05-24 12:17:48 +09:30
niftynei
82fa3fa2ef
df-rbf: order inflights by funding_feerate
...
When we re-populate from disk, we need to know what order to recreate the
inflights list in.
Fixes #4511
2021-05-24 12:17:48 +09:30
niftynei
8ae9f6ac9e
df-tests: add better explainer for test logic
2021-05-24 12:17:48 +09:30
niftynei
bab5ef4aff
df-test: test for a failed rbf attempt, currently crashes
...
An attempted + failed RBF results in a crashed/dead node
2021-05-24 12:17:48 +09:30
niftynei
e2867be609
df-tests: re-write test_funding_cancel_race for v2 commands
...
test_funding_cancel_race uses fundchannel_open etc; this new test does a
similar (but not exact thing, as 'aborts' dont work after an update
is confirmed) thing, using openchannel_update and openchannel_abort.
2021-05-23 17:42:09 +09:30
niftynei
2d4939fa6d
df-tests: re-write the funding wallet corners test for v2
2021-05-23 17:42:09 +09:30
niftynei
c93bd5bd51
funder: test for adding utxos, calculating total available
...
Make sure that 100% available actually puts in 100% of what we can add
(note that this isn't 'all' -- we don't include uneconomic utxos)
2021-05-23 08:19:50 +09:30
Rusty Russell
14febd4ecc
pytest: disable mpp test which is blocking merges.
...
I'm still diagnosing exactly why this fails, but it will need Christian's
help at this stage.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-05-23 08:13:27 +09:30
Rusty Russell
33736b860a
lightningd: attach HTLC timeout to htlc itself, fix gratuitous disconnect bug.
...
We set the timeout on first HTLC, but didn't clear it if that HTLC failed.
It's saner to have a per-HTLC timeout (since that's what it is!) and
also our timer infra is specially coded to scale approximately infinitely so
trying to optimize this is vastly premature.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
Changelog-Fixed: Protocol: We would sometimes gratuitously disconnect 30 seconds after an HTLC failed.
2021-05-21 14:45:05 +09:30
Rusty Russell
11180e7aa1
pytest: add test for HTLC timeout on failed htlcs.
...
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-05-21 14:45:05 +09:30
Rusty Russell
e141b71675
pytest: fix flake in test_reconnect_no_update
...
If l2 didn't get FUNDING_LOCKED from l1 before it disconnected, it
won't be in state CHANNELD_NORMAL: it will be in DUALOPEND_AWAITING_LOCKIN.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au >
2021-05-17 18:58:10 -05:00
niftynei
ce1e5bd388
df-test: make flakey test not as flakey
...
This would flake fairly regularly, what we really care about is
asserting that the l2 node is in CHANNELD_NORMAL state, while the l1
node hasn't progressed that far yet.
2021-05-12 11:25:41 +09:30
niftynei
e375932108
df-tests: test_coin_movement_notices, make work?
...
No idea how this slipped past the first time
2021-05-12 11:25:41 +09:30
niftynei
71a4a2e31c
df: rework closing logic
...
Trying to put all the disconnect logic into the same path was a dumb
idea. If you asked to reconnect but passed in an 'unsaved' channel, we
would not call the 'reconnect' code.
Instead, we make a differentiation between "unsaved" channels
(ones that we haven't received commitment tx for) and handle the
disconnect for these separate from where we want to do a reconnect.
2021-05-12 11:25:41 +09:30
niftynei
efdc36c8e9
tests: mark test as requiring developer
...
hangs with EXP_DF when developer=0
2021-05-12 11:25:41 +09:30
niftynei
5cac36724e
df-test: v2 has reconnects
2021-05-12 11:25:41 +09:30
niftynei
6d3fb11bc6
df-tests: patch for state == AWAITING_UNILATERAL problem
...
Found on CI where DEVELOPER=0 EXPERIMENTAL_DUAL_FUND=1,
as we turn off automatic reconnects when DEVELOPER=1
This test has been modified to make the error happen every time, and
then fixed.
lightningd-2: 2021-05-07T20:12:03.790Z DEBUG 0266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c03518-chan#1: Peer has reconnected, state AWAITING_UNILATERAL
lightningd-2: 2021-05-07T20:12:03.812Z **BROKEN** lightningd: FATAL SIGNAL 6 (version e8b3f78)
lightningd-2: 2021-05-07T20:12:03.812Z **BROKEN** lightningd: backtrace: common/daemon.c:44 (send_backtrace) 0x56384ee072e9
lightningd-2: 2021-05-07T20:12:03.813Z **BROKEN** lightningd: backtrace: common/daemon.c:52 (crashdump) 0x56384ee0733b
----------------------------- Captured stderr call -----------------------------
lightningd: lightningd/peer_control.c:1100: peer_connected_hook_final: Assertion `channel->state == DUALOPEND_OPEN_INIT || channel->state == DUALOPEND_AWAITING_LOCKIN' failed.
lightningd: FATAL SIGNAL 6 (version e8b3f78)
0x56384ee072a1 send_backtrace
common/daemon.c:39
0x56384ee0733b crashdump
common/daemon.c:52
0x7f88486a020f ???
???:0
0x7f88486a018b ???
???:0
0x7f884867f858 ???
???:0
0x7f884867f728 ???
???:0
0x7f8848690f35 ???
???:0
0x56384eddc94e peer_connected_hook_final
lightningd/peer_control.c:1100
0x56384edea2ed plugin_hook_call_
lightningd/plugin_hook.c:275
0x56384eddfeb8 plugin_hook_call_peer_connected
lightningd/peer_control.c:1156
0x56384eddfeb8 peer_connected
lightningd/peer_control.c:1209
0x56384edc30cd connectd_msg
lightningd/connect_control.c:332
0x56384edebe6f sd_msg_read
lightningd/subd.c:509
0x56384edebfb1 read_fds
lightningd/subd.c:310
0x56384ee483b0 next_plan
ccan/ccan/io/io.c:59
0x56384ee4885b do_plan
ccan/ccan/io/io.c:407
0x56384ee488f8 io_ready
ccan/ccan/io/io.c:417
0x56384ee4a23c io_loop
ccan/ccan/io/poll.c:445
0x56384edcabda io_loop_with_timers
lightningd/io_loop_with_timers.c:24
0x56384edce826 main
lightningd/lightningd.c:1111
0x7f88486810b2 ???
???:0
0x56384edb52ad ???
???:0
0xffffffffffffffff ???
???:0
2021-05-12 11:25:41 +09:30
niftynei
558abe288a
tests: explicitly mark tests to run both as v1+v2
...
By default, tests only run as v1 unless marked as v2.
These tests we want to run as both v1+v2
Includes fixes to have tests pass
2021-05-12 11:25:41 +09:30
niftynei
dc758f616b
tests: mark as v1 or v2 openchannel required
2021-05-12 11:25:41 +09:30
niftynei
3a2d602922
tests: add marker for v1/v2 channel opens
...
Tests that will only run when !EXPERIMENTAL_DUAL_FUND:
@pytest.marker.openchannel('v1')
def test_...()
Tests that will only run when EXPERIMENTAL_DUAL_FUND:
@pytest.marker.openchannel('v2')
def test_...()
2021-05-12 11:25:41 +09:30
niftynei
d0bbf07655
tests: not DEVELOPER -> mark.developer
...
Nicer syntaxtic sugar for marking pytests as 'developer required'
2021-05-12 11:25:41 +09:30
niftynei
b4e24ac8ba
df: anchor outputs are on if EXP_DF
...
So we should treat it the same as EXPERIMENTAL_FEATURES
2021-05-12 11:25:41 +09:30