mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-03-01 17:47:30 +01:00
plugins: add feature_set
to init object.
Shows what features we use in various contexts, including those added by plugins in getmanifest. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Changelog-Added: Plugin: `feature_set` object added to `init`
This commit is contained in:
parent
cf43e44378
commit
7a95e90ee4
3 changed files with 37 additions and 0 deletions
|
@ -1169,6 +1169,15 @@ plugin_populate_init_request(struct plugin *plugin, struct jsonrpc_request *req)
|
|||
json_add_string(req->stream, "rpc-file", ld->rpc_filename);
|
||||
json_add_bool(req->stream, "startup", plugin->plugins->startup);
|
||||
json_add_string(req->stream, "network", chainparams->network_name);
|
||||
json_object_start(req->stream, "feature_set");
|
||||
for (enum feature_place fp = 0; fp < NUM_FEATURE_PLACE; fp++) {
|
||||
if (plugin_feature_place_names[fp]) {
|
||||
json_add_hex_talarr(req->stream,
|
||||
plugin_feature_place_names[fp],
|
||||
ld->feature_set->bits[fp]);
|
||||
}
|
||||
}
|
||||
json_object_end(req->stream);
|
||||
json_object_end(req->stream);
|
||||
}
|
||||
|
||||
|
|
17
tests/plugins/show_feature_set.py
Executable file
17
tests/plugins/show_feature_set.py
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/usr/bin/env python3
|
||||
from pyln.client import Plugin
|
||||
|
||||
plugin = Plugin()
|
||||
|
||||
|
||||
@plugin.init()
|
||||
def init(options, configuration, plugin):
|
||||
plugin.feature_set = configuration['feature_set']
|
||||
|
||||
|
||||
@plugin.method('getfeatureset')
|
||||
def getfeatureset(plugin):
|
||||
return plugin.feature_set
|
||||
|
||||
|
||||
plugin.run()
|
|
@ -1153,3 +1153,14 @@ def test_hook_crash(node_factory, executor, bitcoind):
|
|||
|
||||
# Collect the results:
|
||||
[f.result(TIMEOUT) for f in futures]
|
||||
|
||||
|
||||
def test_feature_set(node_factory):
|
||||
plugin = os.path.join(os.path.dirname(__file__), 'plugins/show_feature_set.py')
|
||||
l1 = node_factory.get_node(options={"plugin": plugin})
|
||||
|
||||
fs = l1.rpc.call('getfeatureset')
|
||||
assert fs['init'] == expected_features()
|
||||
assert fs['node'] == expected_features()
|
||||
assert fs['channel'] == ''
|
||||
assert 'invoice' in fs
|
||||
|
|
Loading…
Add table
Reference in a new issue