mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +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:
@@ -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_string(req->stream, "rpc-file", ld->rpc_filename);
|
||||||
json_add_bool(req->stream, "startup", plugin->plugins->startup);
|
json_add_bool(req->stream, "startup", plugin->plugins->startup);
|
||||||
json_add_string(req->stream, "network", chainparams->network_name);
|
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);
|
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:
|
# Collect the results:
|
||||||
[f.result(TIMEOUT) for f in futures]
|
[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
|
||||||
|
|||||||
Reference in New Issue
Block a user