diff --git a/src/agent/rustjail/src/container.rs b/src/agent/rustjail/src/container.rs index a35c5b62dd..bc4dd09073 100644 --- a/src/agent/rustjail/src/container.rs +++ b/src/agent/rustjail/src/container.rs @@ -2081,8 +2081,8 @@ mod tests { }); } - #[test] - fn test_linuxcontainer_get_process() { + #[tokio::test] + async fn test_linuxcontainer_get_process() { let _ = new_linux_container_and_then(|mut c: LinuxContainer| { c.processes.insert( 1, diff --git a/src/agent/rustjail/src/process.rs b/src/agent/rustjail/src/process.rs index d912f86954..3f41b1e1b9 100644 --- a/src/agent/rustjail/src/process.rs +++ b/src/agent/rustjail/src/process.rs @@ -179,6 +179,11 @@ impl Process { p.parent_stdin = Some(pstdin); p.stdin = Some(stdin); + // Make sure the parent stdin writer be inserted into + // p.writes hashmap, thus the cleanup_process_stream can + // cleanup and close the parent stdin fd. + let _ = p.get_writer(StreamType::ParentStdin); + // These pipes are necessary as the stdout/stderr of the child process // cannot be a socket. Otherwise, some images relying on the /dev/stdout(stderr) // and /proc/self/fd/1(2) will fail to boot as opening an existing socket @@ -308,8 +313,8 @@ mod tests { assert_eq!(max_size, actual_size); } - #[test] - fn test_process() { + #[tokio::test] + async fn test_process() { let id = "abc123rgb"; let init = true; let process = Process::new( diff --git a/src/agent/src/rpc.rs b/src/agent/src/rpc.rs index dfb762ddcd..ba41b3da4e 100644 --- a/src/agent/src/rpc.rs +++ b/src/agent/src/rpc.rs @@ -2623,11 +2623,6 @@ mod tests { }), ..Default::default() }, - TestData { - has_fd: false, - result: Err(anyhow!(ERR_CANNOT_GET_WRITER)), - ..Default::default() - }, ]; for (i, d) in tests.iter().enumerate() {