trueptolemy
5ac02907bb
pytest: Add the test for 'forward_event' in test_plugin
6 years ago
Rusty Russell
79d32ec2f2
plugin: notice when plugin has *started* configuring.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
df8a6f615b
pytest: test for crash when we do a plugin op and a plugin has not finished init
We try to start it twice, with predictable hilarious results:
DEBUG plugin-manager started(20701) /home/rusty/devel/cvs/lightning/tests/plugins/slow_init.py
DEBUG lightningd(20670): Adding block 101: 0f26301caaae390d1b956c3eb73827d1f87a2af306561348045bf1313b7551b0
INFO plugin-slow_init.py slow_init.py initializing
DEBUG plugin-manager started(20704) /home/rusty/devel/cvs/lightning/tests/plugins/slow_init.py
**BROKEN** lightningd(20670): FATAL SIGNAL 6 (version v0.7.1-146-g7d3b352-modded)
**BROKEN** lightningd(20670): backtrace: common/daemon.c:45 (send_backtrace) 0x55a29c3ec539
**BROKEN** lightningd(20670): backtrace: common/daemon.c:53 (crashdump) 0x55a29c3ec589
**BROKEN** lightningd(20670): backtrace: (null):0 ((null)) 0x7fa281ebcf5f
**BROKEN** lightningd(20670): backtrace: (null):0 ((null)) 0x7fa281ebced7
**BROKEN** lightningd(20670): backtrace: (null):0 ((null)) 0x7fa281e9e534
**BROKEN** lightningd(20670): backtrace: (null):0 ((null)) 0x7fa281e9e40e
**BROKEN** lightningd(20670): backtrace: (null):0 ((null)) 0x7fa281eae011
**BROKEN** lightningd(20670): backtrace: lightningd/json_stream.c:225 (json_stream_output_) 0x55a29c3bff5f
**BROKEN** lightningd(20670): backtrace: lightningd/plugin.c:383 (plugin_write_json) 0x55a29c3e103f
**BROKEN** lightningd(20670): backtrace: ccan/ccan/io/io.c:59 (next_plan) 0x55a29c43316b
**BROKEN** lightningd(20670): backtrace: ccan/ccan/io/io.c:435 (io_do_always) 0x55a29c433df1
**BROKEN** lightningd(20670): backtrace: ccan/ccan/io/poll.c:300 (handle_always) 0x55a29c435865
**BROKEN** lightningd(20670): backtrace: ccan/ccan/io/poll.c:377 (io_loop) 0x55a29c435b3d
**BROKEN** lightningd(20670): backtrace: lightningd/io_loop_with_timers.c:24 (io_loop_with_timers) 0x55a29c3bdfcf
**BROKEN** lightningd(20670): backtrace: lightningd/lightningd.c:830 (main) 0x55a29c3c44b6
**BROKEN** lightningd(20670): backtrace: (null):0 ((null)) 0x7fa281e9fb6a
**BROKEN** lightningd(20670): backtrace: (null):0 ((null)) 0x55a29c3ac0f9
**BROKEN** lightningd(20670): backtrace: (null):0 ((null)) 0xffffffffffffffff
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
darosior
307fb0708e
lightningd/plugin_control: don't control non-dynamic plugins
6 years ago
darosior
9ddc2e0334
Add the 'plugin' subcommands to pylightning and add a test for them
6 years ago
darosior
2683170da8
Test and document 'channel_opened' notification
6 years ago
darosior
34533ead68
Plugins: Add a test for the 'invoice_payment' notfication
6 years ago
Christian Decker
53488e5739
pytest: Strengthen the htlc_accepted tests
We were having a few issues with malformed data in the past, so this time we
really check that stuff.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Rusty Russell
54ce4ed1cf
pytest: fail tests if we get any LOG_BROKEN level messages, unless flagged.
And clean up some dev ones which actually happen (mainly by calling
channel_fail_permanent which logs UNUSUAL, rather than
channel_internal_error which logs BROKEN).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
5f02294b5b
lightningd/log: prefix log messages with level.
In particular, this lets us spot UNUSUAL and BROKEN messages easily.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
380c044668
tests: add plugin for simple invoice delay.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
trueptolemy
4d08ed2fa6
pytest: Add a test for the 'warning' subscription and notification
1. Create a plugin: ./lightning/tests/plugins/pretend_badlog.py
This plugin subscribes 'warning' notification and log the payload of
'warning';
2. Add a new test: tests/test_plugin.py::test_warning_notification
This test runs the plugin-pretend_badlog.py and check if 'warning'
notification can be normal triggered and subscribed.
6 years ago
Michael Schmoock
c40250ad0b
test: adds wait mempool to flaky tests
6 years ago
Christian Decker
dd26a01c54
pytest: Add a test for htlc_accepted hook replay on startup
6 years ago
Christian Decker
9fd8be6463
pytest: Add tests for htlc_accepted_hook
Two tests: one for failures and one for in-path resolution.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
b54577041a
pytest: Add a simple test for the hooks
This uses the `htlc_accepted` hook to delay payment acceptance.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Michael Schmoock
107381aca2
test: fix flakyness of funding_reorg_private openchannel_hook
6 years ago
Christian Decker
ced2ff8aa7
pytest: Mark repeat offenders as flaky
It's always the same few tests that fail, so I'm marking them as flaky and
will do a cleanup round later to individually address them.
I've been tracking the failures on the master branch for a few months now and
these are the worst offenders:
|-----------------------------------------|--------|--------|-------|
| test_name | state | branch | count |
|-----------------------------------------|--------|--------|-------|
| test_pay_direct | FAILED | master | 31 |
| test_reconnect_gossiping | FAILED | master | 20 |
| test_htlc_send_timeout | FAILED | master | 15 |
| test_pay_limits | FAILED | master | 13 |
| test_permfail | FAILED | master | 13 |
| test_funding_reorg_private | FAILED | master | 12 |
| test_invoice | FAILED | master | 12 |
| test_invoice_preimage | FAILED | master | 12 |
| test_shutdown | FAILED | master | 12 |
| test_withdraw | FAILED | master | 12 |
| test_gossip_store_load_v3 | FAILED | master | 11 |
| test_onchain_multihtlc_their_unilateral | FAILED | master | 10 |
| test_opening_tiny_channel | FAILED | master | 10 |
| test_channel_reenable | FAILED | master | 9 |
| test_crashlog | FAILED | master | 9 |
| test_gossip_weirdalias | FAILED | master | 9 |
| test_invoice_expiry | FAILED | master | 9 |
| test_onchain_multihtlc_our_unilateral | FAILED | master | 9 |
| test_peerinfo | FAILED | master | 9 |
| test_private_channel | FAILED | master | 9 |
| test_shutdown_reconnect | FAILED | master | 9 |
| test_closing | FAILED | master | 8 |
| test_closing_different_fees | FAILED | master | 8 |
| test_closing_while_disconnected | FAILED | master | 8 |
| test_gossip_timestamp_filter | FAILED | master | 8 |
| test_gossipwith | FAILED | master | 8 |
| test_invoice_routeboost | FAILED | master | 8 |
| test_onchain_middleman | FAILED | master | 8 |
| test_plugin_notifications | FAILED | master | 8 |
| test_reconnect_channel_peers | FAILED | master | 8 |
| test_bad_onion | FAILED | master | 7 |
| test_closing_torture | FAILED | master | 7 |
| test_fulfill_incoming_first | FAILED | master | 7 |
| test_funding_reorg_disagree_scid_route | FAILED | master | 7 |
| test_pay_disconnect | FAILED | master | 7 |
| test_balance | FAILED | master | 6 |
| test_check_command | FAILED | master | 6 |
| test_closing_id | FAILED | master | 6 |
| test_gossip_addresses | FAILED | master | 6 |
| test_gossip_notices_close | FAILED | master | 6 |
| test_setchannelfee_usage | FAILED | master | 6 |
| test_announce_address | FAILED | master | 5 |
| test_connect_by_gossip | FAILED | master | 5 |
| test_gossip_badsig | FAILED | master | 5 |
| test_gossip_disable_channels | FAILED | master | 5 |
| test_gossip_jsonrpc | FAILED | master | 5 |
| test_gossip_persistence | FAILED | master | 5 |
| test_gossip_pruning | FAILED | master | 5 |
| test_onchain_different_fees | FAILED | master | 5 |
| test_onchain_dust_out | FAILED | master | 5 |
|-----------------------------------------|--------|--------|-------|
6 years ago
Rusty Russell
e5b5f1d7e5
openingd: add openchannel hook.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Christian Decker
c96cc8a444
pytest: Fix the flaky test_plugin_connected_hook test
It was a bit eager :-)
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Rusty Russell
7f7ad4f89f
connected_hook: allow hook to specify an error message.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
9c373fecb6
pytest: test the invoice hook.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
5009d628a3
lightning-cli: do pretty-printing.
Plugins don't do it right anyway, and we're about to remove it from
lightningd. Produces same format as json_pp.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
7ccf3af51d
pytest: test the db hook plugin.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
cc342fda83
pylightning: make sure UTF-8 gets passed intact.
1. We need to read in as a byte string, then decode into utf8 once we
have a marker. Otherwise we seem to mangle it horribly, and we
might have a bad utf8 string anyway.
2. We need to suppress the JSON \u escapes on output.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
5f437de771
pytest: test passing utf8 into and out of plugin JSON.
We should be able to pass UTF-8 strings to and from plugins without
python turning them into JSON-\u escapes.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
6e63d79159
pylightning: translate msat input to class Millisatoshi
Rather than using LightningJSONDecoder's implicit "field name and
value ends in msat, try converting to Millisatoshi", we do it to
parameters using type annotations.
If you had a parameter which was an array or dict itself, we don't
delve into that, but that's probably OK.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
c7316d7ba2
pytest: test that we translate to and from Millisatoshi on plugin RPC.
We don't, but we should, like we do for normal RPC. However, I chose
to use function annotations, rather than names-ending-in-'msat'
because it's more Pythony.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
1ec959752b
plugin/pay: rename 'description' to 'label', deprecate 'description'.
This is the same deprecation, but one level up. For the moment, we
still support invoices with a `h` field (where description will be
necessary) but that will be removed once this option is removed.
Note that I just changed pylightning without backwards compatibility,
since the field was unlikely to be used, but we could do something
more complex here?
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Christian Decker
571fb44d20
pylightning: Add a small test for async rpcmethods
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
5d9d5ceed1
pytest: Test the new peer_connected hook with a reject plugin
This plugin just rejects `node_id`s it gets told about.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Rusty Russell
53c0a21d2c
plugins: get usage from plugins (required unless deprecated_apis == True).
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
ba8a9d1fde
libplugin: quick fix for bad JSON produced by plugins on bad paramters.
Internally libplugin turns ' into ", which causes these messages to produce
bad JSON.
The real fix is to remove the '->" convenience substitution and port the
JSON creation APIs into common/ from lightningd/
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
0a8b4f8935
pay: remove inbuilt command in favor of plugin.
This doesn't actually remove some of the now-unnecessary infrastructure
though.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
ad1e1bd528
plugins: minimal 'pay' plugin.
I wrote this sync first, then rewrote async, then developed libplugin.
But committing all that just wastes reviewer time, so I present it as
if it was always asnc and using the library helper.
Currently the command it registers is 'pay2', but when it's complete
we'll remove the internal 'pay' and rename it. This does a single
'getroute/sendpay' call. No retries, no options.
Shockingly, this by itself is almost sufficient to pass our current test
suite with `pay`->`pay2`.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
61420bf79b
configure: (mostly) revert b7a56f0531
Plugins are a first-class citizen again.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Christian Decker
b7a56f0531
plugin: Gate the plugin subsystem with the --enable-plugins configure flag
Since we are planning to release a bug fix release, and the plugin
subsystem is not yet complete, it is better to make plugin support
opt-in while we continue testing.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Christian Decker
25ca49c444
pytest: Add a test for the event subscription and notification
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
643480cfd8
pylightning: Migrate the test plugin to use the new wrapper
Should be a lot easier to see what happens :-)
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
a304db9be2
plugin: Handle log notifications from plugins
Logs are parsed and injected into the main daemon's logs.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
f5a3f1f0a2
plugin: Add a test for timeout and broken manifest
Both of these plugins will fail in interesting ways, and we should
still handle them correctly.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Rusty Russell
eb03b33655
plugins: add and install built-in plugin dir, add clear and disable options.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Rusty Russell
a4287f99fd
lightningd: add --plugin-dir option to load directory full of plugins.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6 years ago
Christian Decker
1d75a70995
pytest: Add a test for the JSON-RPC passthrough
Tests JSON-RPC registration, as well as success and failures.
Signed-off-by: Christian Decker <decker.christian@gmail.com>
6 years ago
Christian Decker
879f9b7986
plugin: Make a common directory of plugins in contrib
No need to create a directory each.
Signed-off-by: Christian Decker <@cdecker>
6 years ago
Christian Decker
e27b2ea69b
pytest: Add a test for the plugin option passthrough
Signed-off-by: Christian Decker <@cdecker>
6 years ago