Vendor dependencies
Let's see how I like this workflow.
This commit is contained in:
parent
34d1830413
commit
9c435dc440
7500 changed files with 1665121 additions and 99 deletions
50
vendor/tokio/tests/buffered.rs
vendored
Normal file
50
vendor/tokio/tests/buffered.rs
vendored
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#![warn(rust_2018_idioms)]
|
||||
#![cfg(all(feature = "full", not(tokio_wasi)))] // Wasi does not support bind()
|
||||
|
||||
use tokio::net::TcpListener;
|
||||
use tokio_test::assert_ok;
|
||||
|
||||
use std::io::prelude::*;
|
||||
use std::net::TcpStream;
|
||||
use std::thread;
|
||||
|
||||
#[tokio::test]
|
||||
async fn echo_server() {
|
||||
const N: usize = 1024;
|
||||
|
||||
let srv = assert_ok!(TcpListener::bind("127.0.0.1:0").await);
|
||||
let addr = assert_ok!(srv.local_addr());
|
||||
|
||||
let msg = "foo bar baz";
|
||||
|
||||
let t = thread::spawn(move || {
|
||||
let mut s = assert_ok!(TcpStream::connect(&addr));
|
||||
|
||||
let t2 = thread::spawn(move || {
|
||||
let mut s = assert_ok!(TcpStream::connect(&addr));
|
||||
let mut b = vec![0; msg.len() * N];
|
||||
assert_ok!(s.read_exact(&mut b));
|
||||
b
|
||||
});
|
||||
|
||||
let mut expected = Vec::<u8>::new();
|
||||
for _i in 0..N {
|
||||
expected.extend(msg.as_bytes());
|
||||
let res = assert_ok!(s.write(msg.as_bytes()));
|
||||
assert_eq!(res, msg.len());
|
||||
}
|
||||
|
||||
(expected, t2)
|
||||
});
|
||||
|
||||
let (mut a, _) = assert_ok!(srv.accept().await);
|
||||
let (mut b, _) = assert_ok!(srv.accept().await);
|
||||
|
||||
let n = assert_ok!(tokio::io::copy(&mut a, &mut b).await);
|
||||
|
||||
let (expected, t2) = t.join().unwrap();
|
||||
let actual = t2.join().unwrap();
|
||||
|
||||
assert!(expected == actual);
|
||||
assert_eq!(n, msg.len() as u64 * 1024);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue