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"); |