Skip to content

Commit e7360f2

Browse files
committed
add test case
1 parent 5a50486 commit e7360f2

File tree

2 files changed

+39
-11
lines changed

2 files changed

+39
-11
lines changed

src/helper.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use tonic::Status;
22

33
use crate::pb::RegisterReq;
44

5-
pub fn validate_register_req(req: &RegisterReq) -> Option<Status> {
5+
pub(crate) fn validate_register_req(req: &RegisterReq) -> Option<Status> {
66
if req.tunnel.is_none() {
77
return Some(Status::invalid_argument("tunnel is required"));
88
}

src/socket.rs

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -87,23 +87,14 @@ impl<'a> AsyncWrite for AsyncUdpSocket<'a> {
8787
}
8888

8989
/// Dialer for connecting to a endpoint to get a async reader and a async writer.
90-
///
91-
/// # Examples
92-
///
93-
/// ```
94-
/// use std::net::{IpAddr, Ipv4Addr, SocketAddr};
95-
///
96-
/// let socket = SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080);
97-
/// let dialer = Dialer::new(|addr| Box::pin(dial_tcp(addr)), socket);
98-
/// let (r, w) = dialer.dial().await.unwrap();
99-
/// ```
10090
#[derive(Debug)]
10191
pub(crate) struct Dialer {
10292
dial: DialFn,
10393
addr: SocketAddr,
10494
}
10595

10696
impl Dialer {
97+
/// Create a new dialer.
10798
pub(crate) fn new(dial: DialFn, addr: SocketAddr) -> Self {
10899
Self { dial, addr }
109100
}
@@ -153,3 +144,40 @@ pub(crate) async fn dial_udp(local_endpoint: SocketAddr) -> DialResult {
153144
Box::new(AsyncUdpSocket::new(socket)),
154145
))
155146
}
147+
148+
#[cfg(test)]
149+
mod test {
150+
use super::*;
151+
use std::net::TcpListener as StdTcpListener;
152+
153+
#[tokio::test]
154+
async fn test_tcp_listener_and_dialer() {
155+
let port = free_port().unwrap();
156+
let listener = create_tcp_listener(port).await.unwrap();
157+
158+
let dialer = Dialer::new(
159+
|addr| Box::pin(dial_tcp(addr)),
160+
listener.local_addr().unwrap(),
161+
);
162+
dialer.dial().await.unwrap();
163+
}
164+
165+
#[tokio::test]
166+
async fn test_udp_socket_and_dialer() {
167+
let port = free_port().unwrap();
168+
let socket = create_udp_socket(port).await.unwrap();
169+
170+
let dialer = Dialer::new(
171+
|addr| Box::pin(dial_udp(addr)),
172+
socket.local_addr().unwrap(),
173+
);
174+
dialer.dial().await.unwrap();
175+
}
176+
177+
/// free_port returns a free port number for testing.
178+
fn free_port() -> std::io::Result<u16> {
179+
let listener = StdTcpListener::bind("127.0.0.1:0")?;
180+
let port = listener.local_addr()?.port();
181+
Ok(port)
182+
}
183+
}

0 commit comments

Comments
 (0)