diff --git a/tools/ibc-test/src/framework/utils/common.rs b/tools/ibc-test/src/framework/utils/common.rs index d1fd360c2..edc87c9fa 100644 --- a/tools/ibc-test/src/framework/utils/common.rs +++ b/tools/ibc-test/src/framework/utils/common.rs @@ -66,7 +66,10 @@ pub fn transfer_port_id(chain_type: ChainType) -> PortId { } } -pub fn prepare_cell_emitter(axon_port: u16, ckb_port: u16) -> Result { +pub fn prepare_cell_emitter( + axon_port: u16, + ckb_port: u16, +) -> Result<(Child, std::sync::mpsc::Sender<()>), Error> { let listen_port = rngs::OsRng.gen_range(9000..10000); let private_path = std::env::current_dir() .unwrap() @@ -96,5 +99,27 @@ pub fn prepare_cell_emitter(axon_port: u16, ckb_port: u16) -> Result>>, + pub extra_process: Rc)>>>, } impl Drop for TestConfig { @@ -67,11 +67,9 @@ impl Drop for TestConfig { println!("release cell-emitter child process"); let mut process = self.extra_process.borrow_mut(); if process.is_some() { - process - .as_mut() - .unwrap() - .kill() - .expect("kill extra process"); + let (ref mut child, handler) = process.as_mut().unwrap(); + child.kill().unwrap(); + handler.send(()).unwrap(); } } }