diff --git a/src/warnet/server.py b/src/warnet/server.py index 2572e8ae8..7ea6efced 100644 --- a/src/warnet/server.py +++ b/src/warnet/server.py @@ -398,6 +398,7 @@ def scenarios_list_running(self) -> list[dict]: "pid": sc["pid"], "cmd": sc["cmd"], "active": sc["proc"].poll() is None, + "return_code": sc["proc"].returncode, "network": sc["network"], } for sc in self.running_scenarios diff --git a/test/ln_test.py b/test/ln_test.py index cbbbf990c..81c9a855c 100755 --- a/test/ln_test.py +++ b/test/ln_test.py @@ -43,6 +43,9 @@ def run_ln_init_scenario(self): self.warcli("rpc 0 getblockcount") self.warcli("scenarios run ln_init") self.wait_for_all_scenarios() + scenario_return_code = self.get_scenario_return_code("ln_init") + if scenario_return_code != 0: + raise Exception("LN Init scenario failed") def test_channel_policies(self): self.log.info("Ensuring node-level channel policy settings") diff --git a/test/test_base.py b/test/test_base.py index 15ce35fff..c3931291d 100644 --- a/test/test_base.py +++ b/test/test_base.py @@ -169,3 +169,10 @@ def check_scenarios(): return all(not scn["active"] for scn in scns) self.wait_for_predicate(check_scenarios) + + def get_scenario_return_code(self, scenario_name): + scns = self.rpc("scenarios_list_running") + scns = [scn for scn in scns if scn["cmd"].strip() == scenario_name] + if len(scns) == 0: + raise Exception(f"Scenario {scenario_name} not found in running scenarios") + return scns[0]["return_code"]