diff --git a/plugins/examples/cln-plugin-startup.rs b/plugins/examples/cln-plugin-startup.rs index f1c6ed26b..828605e3c 100644 --- a/plugins/examples/cln-plugin-startup.rs +++ b/plugins/examples/cln-plugin-startup.rs @@ -6,9 +6,10 @@ use tokio; #[tokio::main] async fn main() -> Result<(), anyhow::Error> { - env_logger::init(); - let (plugin, stdin) = Builder::new((), tokio::io::stdin(), tokio::io::stdout()).build(); - plugin.run(stdin).await; - Ok(()) + tokio::spawn(async { + tokio::time::sleep(tokio::time::Duration::from_millis(1000)).await; + log::info!("Hello world"); + }); + plugin.run(stdin).await } diff --git a/tests/test_cln_rs.py b/tests/test_cln_rs.py index af01642a4..ccccca15a 100644 --- a/tests/test_cln_rs.py +++ b/tests/test_cln_rs.py @@ -2,7 +2,6 @@ from fixtures import * # noqa: F401,F403 from pathlib import Path from pyln.testing.utils import env, TEST_NETWORK import subprocess -import os import pytest @@ -12,8 +11,6 @@ pytestmark = pytest.mark.skipif( reason='RUST is not enabled, skipping rust-dependent tests' ) -os.environ['RUST_LOG'] = "trace" - def test_rpc_client(node_factory): l1 = node_factory.get_node() @@ -21,3 +18,17 @@ def test_rpc_client(node_factory): rpc_path = Path(l1.daemon.lightning_dir) / TEST_NETWORK / "lightning-rpc" out = subprocess.check_output([bin_path, rpc_path], stderr=subprocess.STDOUT) assert(b'0266e4598d1d3c415f572a8488830b60f7e744ed9235eb0b1ba93283b315c03518' in out) + + +def test_plugin_start(node_factory): + """Start a minimal plugin and ensure it is well-behaved + """ + bin_path = Path.cwd() / "target" / "debug" / "examples" / "cln-plugin-startup" + l1 = node_factory.get_node(options={"plugin": str(bin_path)}) + + # The plugin should be in the list of active plugins + plugins = l1.rpc.plugin('list')['plugins'] + assert len([p for p in plugins if 'cln-plugin-startup' in p['name'] and p['active']]) == 1 + + # Logging should also work through the log integration + l1.daemon.wait_for_log(r'Hello world')