Move to tests directory

This commit is contained in:
YuWeiWu 2020-05-02 23:47:32 +08:00
parent d725f70c2d
commit 6164feb7f7
No known key found for this signature in database
GPG Key ID: 54A3692F155691E4
2 changed files with 139 additions and 130 deletions

View File

@ -1047,133 +1047,3 @@ impl Async<UnixDatagram> {
self.with(|io| io.send(buf)).await
}
}
#[cfg(test)]
mod tests {
use super::*;
use futures::prelude::*;
use tempfile::tempdir;
const LOREM_IPSUM: &[u8] = b"
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Donec pretium ante erat, vitae sodales mi varius quis.
Etiam vestibulum lorem vel urna tempor, eu fermentum odio aliquam.
Aliquam consequat urna vitae ipsum pulvinar, in blandit purus eleifend.
";
#[test]
fn tcp_connection() -> io::Result<()> {
crate::run(async {
let listener = Async::<TcpListener>::bind("127.0.0.1:8080")?;
let addr = listener.get_ref().local_addr()?;
let task = Task::spawn(async move { listener.accept().await });
let stream2 = Async::<TcpStream>::connect(&addr).await?;
let stream1 = task.await?.0;
assert_eq!(stream1.get_ref().peer_addr()?, stream2.get_ref().local_addr()?);
assert_eq!(stream2.get_ref().peer_addr()?, stream1.get_ref().local_addr()?);
Ok(())
})
}
#[test]
fn tcp_peek_read() -> io::Result<()> {
crate::run(async {
let listener = Async::<TcpListener>::bind("127.0.0.1:8081")?;
let mut stream = Async::<TcpStream>::connect("127.0.0.1:8081").await?;
stream.write_all(LOREM_IPSUM).await?;
let mut buf = [0; 1024];
let mut incoming = listener.incoming();
let mut stream = incoming.next().await.unwrap()?;
let n = stream.peek(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
let n = stream.read(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
Ok(())
})
}
#[test]
fn udp_send_recv() -> io::Result<()> {
crate::run(async {
let socket1 = Async::<UdpSocket>::bind("127.0.0.1:8000")?;
let socket2 = Async::<UdpSocket>::bind("127.0.0.1:9000")?;
socket1.get_ref().connect(socket2.get_ref().local_addr()?)?;
let mut buf = [0u8; 1024];
socket1.send(LOREM_IPSUM).await?;
let n = socket2.peek(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
let n = socket2.recv(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
socket2.send_to(LOREM_IPSUM, socket1.get_ref().local_addr()?).await?;
let n = socket1.peek_from(&mut buf).await?.0;
assert_eq!(&buf[..n], LOREM_IPSUM);
let n = socket1.recv_from(&mut buf).await?.0;
assert_eq!(&buf[..n], LOREM_IPSUM);
Ok(())
})
}
#[cfg(unix)]
#[test]
fn uds_connection() -> io::Result<()> {
crate::run(async {
let listener = Async::<UnixListener>::bind("127.0.0.1:8080")?;
let mut stream = Async::<UnixStream>::connect("127.0.0.1:8080").await?;
stream.write_all(LOREM_IPSUM).await?;
let mut buf = [0; 1024];
let mut incoming = listener.incoming();
let mut stream = incoming.next().await.unwrap()?;
let n = stream.read(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
Ok(())
})
}
#[cfg(unix)]
#[test]
fn uds_send_recv() -> io::Result<()> {
crate::run(async {
let (socket1, socket2) = Async::<UnixDatagram>::pair()?;
socket1.send(LOREM_IPSUM).await?;
let mut buf = [0; 1024];
let n = socket2.recv(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
Ok(())
})
}
#[cfg(unix)]
#[test]
fn uds_send_to_recv_from() -> io::Result<()> {
crate::run(async {
let dir = tempdir()?;
let path = dir.path().join("socket");
let socket1 = Async::<UnixDatagram>::bind(&path)?;
let socket2 = Async::<UnixDatagram>::unbound()?;
socket2.send_to(LOREM_IPSUM, &path).await?;
let mut buf = [0; 1024];
let n = socket1.recv_from(&mut buf).await?.0;
assert_eq!(&buf[..n], LOREM_IPSUM);
Ok(())
})
}
}

139
tests/async_io.rs Normal file
View File

@ -0,0 +1,139 @@
use futures::{AsyncReadExt, AsyncWriteExt, StreamExt};
use smol::{Async, Task};
use std::{
io,
net::{TcpListener, TcpStream, UdpSocket},
os::unix::net::{UnixDatagram, UnixListener, UnixStream},
};
use tempfile::tempdir;
const LOREM_IPSUM: &[u8] = b"
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Donec pretium ante erat, vitae sodales mi varius quis.
Etiam vestibulum lorem vel urna tempor, eu fermentum odio aliquam.
Aliquam consequat urna vitae ipsum pulvinar, in blandit purus eleifend.
";
#[test]
fn tcp_connection() -> io::Result<()> {
smol::run(async {
let listener = Async::<TcpListener>::bind("127.0.0.1:8080")?;
let addr = listener.get_ref().local_addr()?;
let task = Task::spawn(async move { listener.accept().await });
let stream2 = Async::<TcpStream>::connect(&addr).await?;
let stream1 = task.await?.0;
assert_eq!(
stream1.get_ref().peer_addr()?,
stream2.get_ref().local_addr()?
);
assert_eq!(
stream2.get_ref().peer_addr()?,
stream1.get_ref().local_addr()?
);
Ok(())
})
}
#[test]
fn tcp_peek_read() -> io::Result<()> {
smol::run(async {
let listener = Async::<TcpListener>::bind("127.0.0.1:8081")?;
let mut stream = Async::<TcpStream>::connect("127.0.0.1:8081").await?;
stream.write_all(LOREM_IPSUM).await?;
let mut buf = [0; 1024];
let mut incoming = listener.incoming();
let mut stream = incoming.next().await.unwrap()?;
let n = stream.peek(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
let n = stream.read(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
Ok(())
})
}
#[test]
fn udp_send_recv() -> io::Result<()> {
smol::run(async {
let socket1 = Async::<UdpSocket>::bind("127.0.0.1:8000")?;
let socket2 = Async::<UdpSocket>::bind("127.0.0.1:9000")?;
socket1.get_ref().connect(socket2.get_ref().local_addr()?)?;
let mut buf = [0u8; 1024];
socket1.send(LOREM_IPSUM).await?;
let n = socket2.peek(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
let n = socket2.recv(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
socket2
.send_to(LOREM_IPSUM, socket1.get_ref().local_addr()?)
.await?;
let n = socket1.peek_from(&mut buf).await?.0;
assert_eq!(&buf[..n], LOREM_IPSUM);
let n = socket1.recv_from(&mut buf).await?.0;
assert_eq!(&buf[..n], LOREM_IPSUM);
Ok(())
})
}
#[cfg(unix)]
#[test]
fn uds_connection() -> io::Result<()> {
smol::run(async {
let listener = Async::<UnixListener>::bind("127.0.0.1:8080")?;
let mut stream = Async::<UnixStream>::connect("127.0.0.1:8080").await?;
stream.write_all(LOREM_IPSUM).await?;
let mut buf = [0; 1024];
let mut incoming = listener.incoming();
let mut stream = incoming.next().await.unwrap()?;
let n = stream.read(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
Ok(())
})
}
#[cfg(unix)]
#[test]
fn uds_send_recv() -> io::Result<()> {
smol::run(async {
let (socket1, socket2) = Async::<UnixDatagram>::pair()?;
socket1.send(LOREM_IPSUM).await?;
let mut buf = [0; 1024];
let n = socket2.recv(&mut buf).await?;
assert_eq!(&buf[..n], LOREM_IPSUM);
Ok(())
})
}
#[cfg(unix)]
#[test]
fn uds_send_to_recv_from() -> io::Result<()> {
smol::run(async {
let dir = tempdir()?;
let path = dir.path().join("socket");
let socket1 = Async::<UnixDatagram>::bind(&path)?;
let socket2 = Async::<UnixDatagram>::unbound()?;
socket2.send_to(LOREM_IPSUM, &path).await?;
let mut buf = [0; 1024];
let n = socket1.recv_from(&mut buf).await?.0;
assert_eq!(&buf[..n], LOREM_IPSUM);
Ok(())
})
}