Mercurial > crates > systemd-socket
comparison tests/comm.rs @ 28:cfef4593e207
Run `cargo fmt`.
| author | Paul Fisher <paul@pfish.zone> |
|---|---|
| date | Sat, 19 Apr 2025 01:33:50 -0400 |
| parents | 1941e9d9819c |
| children |
comparison
equal
deleted
inserted
replaced
| 27:85b0f4a7303d | 28:cfef4593e207 |
|---|---|
| 1 use std::process::Child; | |
| 2 use std::ffi::OsStr; | 1 use std::ffi::OsStr; |
| 3 use std::io::{self, Read, Write}; | 2 use std::io::{self, Read, Write}; |
| 3 use std::process::Child; | |
| 4 | 4 |
| 5 pub trait Test { | 5 pub trait Test { |
| 6 const SOCKET_ADDR: &'static str; | 6 const SOCKET_ADDR: &'static str; |
| 7 | 7 |
| 8 fn spawn_slave(program_name: &OsStr) -> io::Result<Child>; | 8 fn spawn_slave(program_name: &OsStr) -> io::Result<Child>; |
| 15 let mut slave = slave.expect("failed to run a child"); | 15 let mut slave = slave.expect("failed to run a child"); |
| 16 | 16 |
| 17 // give slave some time to bind the socket just to be sure | 17 // give slave some time to bind the socket just to be sure |
| 18 std::thread::sleep(std::time::Duration::from_secs(5)); | 18 std::thread::sleep(std::time::Duration::from_secs(5)); |
| 19 | 19 |
| 20 if let Some(exited) = slave.try_wait().expect("failed to check if the child exited") { | 20 if let Some(exited) = slave |
| 21 .try_wait() | |
| 22 .expect("failed to check if the child exited") | |
| 23 { | |
| 21 panic!("child exited unexpectedly: {}", exited); | 24 panic!("child exited unexpectedly: {}", exited); |
| 22 } | 25 } |
| 23 | 26 |
| 24 let mut client_socket = std::net::TcpStream::connect("localhost:4242").expect("Failed to connect to 127.0.0.1:4242"); | 27 let mut client_socket = std::net::TcpStream::connect("localhost:4242") |
| 25 client_socket.write_all(REQUEST).expect("failed to send data"); | 28 .expect("Failed to connect to 127.0.0.1:4242"); |
| 29 client_socket | |
| 30 .write_all(REQUEST) | |
| 31 .expect("failed to send data"); | |
| 26 let mut buf = [0u8; RESPONSE.len()]; | 32 let mut buf = [0u8; RESPONSE.len()]; |
| 27 client_socket.read_exact(&mut buf).expect("failed to read response"); | 33 client_socket |
| 34 .read_exact(&mut buf) | |
| 35 .expect("failed to read response"); | |
| 28 assert_eq!(buf, RESPONSE); | 36 assert_eq!(buf, RESPONSE); |
| 29 | 37 |
| 30 let status = slave.wait().expect("faild to wait for slave"); | 38 let status = slave.wait().expect("faild to wait for slave"); |
| 31 if !status.success() { | 39 if !status.success() { |
| 32 panic!("slave did not exit with succcess, status: {}", status); | 40 panic!("slave did not exit with succcess, status: {}", status); |
| 47 .bind() | 55 .bind() |
| 48 .expect("failed to bind"); | 56 .expect("failed to bind"); |
| 49 | 57 |
| 50 let (mut client_socket, _) = socket.accept().expect("failed to accept"); | 58 let (mut client_socket, _) = socket.accept().expect("failed to accept"); |
| 51 let mut buf = [0u8; REQUEST.len()]; | 59 let mut buf = [0u8; REQUEST.len()]; |
| 52 client_socket.read_exact(&mut buf).expect("failed to read response"); | 60 client_socket |
| 61 .read_exact(&mut buf) | |
| 62 .expect("failed to read response"); | |
| 53 assert_eq!(buf, REQUEST); | 63 assert_eq!(buf, REQUEST); |
| 54 client_socket.write_all(RESPONSE).expect("failed to send data"); | 64 client_socket |
| 65 .write_all(RESPONSE) | |
| 66 .expect("failed to send data"); | |
| 55 } | 67 } |
| 56 | 68 |
| 57 pub fn main<T: Test>() { | 69 pub fn main<T: Test>() { |
| 58 let mut args = std::env::args_os(); | 70 let mut args = std::env::args_os(); |
| 59 let program_name = args.next().expect("missing program name"); | 71 let program_name = args.next().expect("missing program name"); |
