Skip to content

Commit d7a7bd0

Browse files
shioyama18acatangiu
authored andcommitted
Use TempFile when generating path to socket
Signed-off-by: Shion Yamashita <[email protected]> Signed-off-by: YUAN LYU <[email protected]>
1 parent d37f967 commit d7a7bd0

File tree

1 file changed

+28
-36
lines changed

1 file changed

+28
-36
lines changed

src/server.rs

Lines changed: 28 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -551,22 +551,27 @@ impl HttpServer {
551551
#[cfg(test)]
552552
mod tests {
553553
use super::*;
554-
use std::fs;
555554
use std::io::{Read, Write};
556555
use std::os::unix::net::UnixStream;
557556

558557
use common::Body;
558+
use utils::tempfile::TempFile;
559+
560+
fn get_path_to_socket() -> TempFile {
561+
let mut path_to_socket = TempFile::new().unwrap();
562+
path_to_socket.remove().unwrap();
563+
path_to_socket
564+
}
559565

560566
#[test]
561567
fn test_wait_one_connection() {
562-
let path_to_socket = "/tmp/test_socket_http_server1.sock";
563-
fs::remove_file(path_to_socket).unwrap_or_default();
568+
let path_to_socket = get_path_to_socket();
564569

565-
let mut server = HttpServer::new(path_to_socket.to_string()).unwrap();
570+
let mut server = HttpServer::new(path_to_socket.as_path()).unwrap();
566571
server.start_server().unwrap();
567572

568573
// Test one incoming connection.
569-
let mut socket = UnixStream::connect(path_to_socket).unwrap();
574+
let mut socket = UnixStream::connect(path_to_socket.as_path()).unwrap();
570575
assert!(server.requests().unwrap().is_empty());
571576

572577
socket
@@ -592,19 +597,17 @@ mod tests {
592597

593598
let mut buf: [u8; 1024] = [0; 1024];
594599
assert!(socket.read(&mut buf[..]).unwrap() > 0);
595-
fs::remove_file(path_to_socket).unwrap();
596600
}
597601

598602
#[test]
599603
fn test_wait_concurrent_connections() {
600-
let path_to_socket = "/tmp/test_socket_http_server2.sock";
601-
fs::remove_file(path_to_socket).unwrap_or_default();
604+
let path_to_socket = get_path_to_socket();
602605

603-
let mut server = HttpServer::new(path_to_socket.to_string()).unwrap();
606+
let mut server = HttpServer::new(path_to_socket.as_path()).unwrap();
604607
server.start_server().unwrap();
605608

606609
// Test two concurrent connections.
607-
let mut first_socket = UnixStream::connect(path_to_socket).unwrap();
610+
let mut first_socket = UnixStream::connect(path_to_socket.as_path()).unwrap();
608611
assert!(server.requests().unwrap().is_empty());
609612

610613
first_socket
@@ -614,7 +617,7 @@ mod tests {
614617
Content-Type: application/json\r\n\r\nwhatever body",
615618
)
616619
.unwrap();
617-
let mut second_socket = UnixStream::connect(path_to_socket).unwrap();
620+
let mut second_socket = UnixStream::connect(path_to_socket.as_path()).unwrap();
618621

619622
let mut req_vec = server.requests().unwrap();
620623
let server_request = req_vec.remove(0);
@@ -666,19 +669,17 @@ mod tests {
666669
assert!(second_socket.read(&mut buf[..]).unwrap() > 0);
667670
second_socket.shutdown(std::net::Shutdown::Both).unwrap();
668671
assert!(server.requests().unwrap().is_empty());
669-
fs::remove_file(path_to_socket).unwrap();
670672
}
671673

672674
#[test]
673675
fn test_wait_expect_connection() {
674-
let path_to_socket = "/tmp/test_socket_http_server3.sock";
675-
fs::remove_file(path_to_socket).unwrap_or_default();
676+
let path_to_socket = get_path_to_socket();
676677

677-
let mut server = HttpServer::new(path_to_socket.to_string()).unwrap();
678+
let mut server = HttpServer::new(path_to_socket.as_path()).unwrap();
678679
server.start_server().unwrap();
679680

680681
// Test one incoming connection with `Expect: 100-continue`.
681-
let mut socket = UnixStream::connect(path_to_socket).unwrap();
682+
let mut socket = UnixStream::connect(path_to_socket.as_path()).unwrap();
682683
assert!(server.requests().unwrap().is_empty());
683684

684685
socket
@@ -717,42 +718,37 @@ mod tests {
717718

718719
let mut buf: [u8; 1024] = [0; 1024];
719720
assert!(socket.read(&mut buf[..]).unwrap() > 0);
720-
fs::remove_file(path_to_socket).unwrap();
721721
}
722722

723723
#[test]
724724
fn test_wait_many_connections() {
725-
let path_to_socket = "/tmp/test_socket_http_server4.sock";
726-
fs::remove_file(path_to_socket).unwrap_or_default();
725+
let path_to_socket = get_path_to_socket();
727726

728-
let mut server = HttpServer::new(path_to_socket.to_string()).unwrap();
727+
let mut server = HttpServer::new(path_to_socket.as_path()).unwrap();
729728
server.start_server().unwrap();
730729

731730
let mut sockets: Vec<UnixStream> = Vec::with_capacity(11);
732731
for _ in 0..MAX_CONNECTIONS {
733-
sockets.push(UnixStream::connect(path_to_socket).unwrap());
732+
sockets.push(UnixStream::connect(path_to_socket.as_path()).unwrap());
734733
assert!(server.requests().unwrap().is_empty());
735734
}
736735

737-
sockets.push(UnixStream::connect(path_to_socket).unwrap());
736+
sockets.push(UnixStream::connect(path_to_socket.as_path()).unwrap());
738737
assert!(server.requests().unwrap().is_empty());
739738
let mut buf: [u8; 120] = [0; 120];
740739
sockets[MAX_CONNECTIONS].read_exact(&mut buf).unwrap();
741740
assert_eq!(&buf[..], SERVER_FULL_ERROR_MESSAGE);
742-
743-
fs::remove_file(path_to_socket).unwrap();
744741
}
745742

746743
#[test]
747744
fn test_wait_parse_error() {
748-
let path_to_socket = "/tmp/test_socket_http_server5.sock";
749-
fs::remove_file(path_to_socket).unwrap_or_default();
745+
let path_to_socket = get_path_to_socket();
750746

751-
let mut server = HttpServer::new(path_to_socket.to_string()).unwrap();
747+
let mut server = HttpServer::new(path_to_socket.as_path()).unwrap();
752748
server.start_server().unwrap();
753749

754750
// Test one incoming connection.
755-
let mut socket = UnixStream::connect(path_to_socket).unwrap();
751+
let mut socket = UnixStream::connect(path_to_socket.as_path()).unwrap();
756752
socket.set_nonblocking(true).unwrap();
757753
assert!(server.requests().unwrap().is_empty());
758754

@@ -775,22 +771,19 @@ mod tests {
775771
Content-Length: 80\r\n\r\n{ \"error\": \"Invalid header.\n\
776772
All previous unanswered requests will be dropped.\" }";
777773
assert_eq!(&buf[..], &error_message[..]);
778-
779-
fs::remove_file(path_to_socket).unwrap();
780774
}
781775

782776
#[test]
783777
fn test_wait_in_flight_responses() {
784-
let path_to_socket = "/tmp/test_socket_http_server6.sock";
785-
fs::remove_file(path_to_socket).unwrap_or_default();
778+
let path_to_socket = get_path_to_socket();
786779

787-
let mut server = HttpServer::new(path_to_socket.to_string()).unwrap();
780+
let mut server = HttpServer::new(path_to_socket.as_path()).unwrap();
788781
server.start_server().unwrap();
789782

790783
// Test a connection dropped and then a new one appearing
791784
// before the user had a chance to send the response to the
792785
// first one.
793-
let mut first_socket = UnixStream::connect(path_to_socket).unwrap();
786+
let mut first_socket = UnixStream::connect(path_to_socket.as_path()).unwrap();
794787
assert!(server.requests().unwrap().is_empty());
795788

796789
first_socket
@@ -806,7 +799,7 @@ mod tests {
806799

807800
first_socket.shutdown(std::net::Shutdown::Both).unwrap();
808801
assert!(server.requests().unwrap().is_empty());
809-
let mut second_socket = UnixStream::connect(path_to_socket).unwrap();
802+
let mut second_socket = UnixStream::connect(path_to_socket.as_path()).unwrap();
810803
second_socket.set_nonblocking(true).unwrap();
811804
assert!(server.requests().unwrap().is_empty());
812805

@@ -858,6 +851,5 @@ mod tests {
858851
assert!(second_socket.read(&mut buf[..]).unwrap() > 0);
859852
second_socket.shutdown(std::net::Shutdown::Both).unwrap();
860853
assert!(server.requests().is_ok());
861-
fs::remove_file(path_to_socket).unwrap();
862854
}
863855
}

0 commit comments

Comments
 (0)