Skip to content

Commit cd44fd7

Browse files
committed
Port to async-std 0.99.12 and futures 0.3
1 parent da6b622 commit cd44fd7

File tree

3 files changed

+34
-42
lines changed

3 files changed

+34
-42
lines changed

.travis.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ matrix:
1111
os: osx
1212
- rust: nightly
1313
os: osx
14-
allow_failures:
15-
- rust: stable
1614

1715
script:
1816
- cargo test

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,5 @@ early-data = []
2626

2727
[dev-dependencies]
2828
lazy_static = "1"
29-
async-std = "0.99"
29+
futures-util = "0.3"
30+
async-std = { version = "0.99", features = ["unstable"] }

tests/test.rs

Lines changed: 32 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
use async_std::net::{TcpListener, TcpStream};
2+
use async_std::task;
3+
use async_std::io;
4+
use async_std::sync::channel;
5+
use async_std::prelude::*;
26
use async_tls::{TlsAcceptor, TlsConnector};
3-
use futures::executor;
4-
use futures::prelude::*;
5-
use futures::task::SpawnExt;
67
use lazy_static::lazy_static;
78
use rustls::internal::pemfile::{certs, rsa_private_keys};
89
use rustls::{ClientConfig, ServerConfig};
9-
use std::io::{BufReader, Cursor};
1010
use std::net::SocketAddr;
11-
use std::sync::mpsc::channel;
11+
use std::io::{BufReader, Cursor};
1212
use std::sync::Arc;
13-
use std::{io, thread};
1413

1514
const CERT: &str = include_str!("end.cert");
1615
const CHAIN: &str = include_str!("end.chain");
@@ -27,38 +26,32 @@ lazy_static! {
2726
.expect("invalid key or certificate");
2827
let acceptor = TlsAcceptor::from(Arc::new(config));
2928

30-
let (send, recv) = channel();
31-
32-
thread::spawn(move || {
33-
let done = async {
34-
let addr = SocketAddr::from(([127, 0, 0, 1], 0));
35-
let mut pool = executor::ThreadPool::new()?;
36-
let listener = TcpListener::bind(&addr).await?;
37-
38-
send.send(listener.local_addr()?).unwrap();
39-
40-
let mut incoming = listener.incoming();
41-
while let Some(stream) = incoming.next().await {
42-
let acceptor = acceptor.clone();
43-
pool.spawn(
44-
async move {
45-
let stream = acceptor.accept(stream?).await?;
46-
let (reader, mut write) = stream.split();
47-
reader.copy_into(&mut write).await?;
48-
Ok(()) as io::Result<()>
49-
}
50-
.unwrap_or_else(|err| eprintln!("{:?}", err)),
51-
)
52-
.unwrap();
53-
}
54-
55-
Ok(()) as io::Result<()>
56-
};
57-
58-
executor::block_on(done).unwrap();
29+
let (send, recv) = channel(1);
30+
31+
task::spawn(async move {
32+
let addr = SocketAddr::from(([127, 0, 0, 1], 0));
33+
let listener = TcpListener::bind(&addr).await?;
34+
35+
send.send(listener.local_addr()?).await;
36+
37+
let mut incoming = listener.incoming();
38+
while let Some(stream) = incoming.next().await {
39+
let acceptor = acceptor.clone();
40+
task::spawn(async move {
41+
use futures_util::io::AsyncReadExt;
42+
let stream = acceptor.accept(stream?).await?;
43+
let (mut reader, mut writer) = stream.split();
44+
io::copy(&mut reader, &mut writer).await?;
45+
Ok(()) as io::Result<()>
46+
});
47+
}
48+
49+
Ok(()) as io::Result<()>
5950
});
6051

61-
let addr = recv.recv().unwrap();
52+
let addr = task::block_on(async move {
53+
recv.recv().await.unwrap()
54+
});
6255
(addr, "localhost", CHAIN)
6356
};
6457
}
@@ -80,7 +73,7 @@ async fn start_client(addr: SocketAddr, domain: &str, config: Arc<ClientConfig>)
8073

8174
assert_eq!(buf, FILE);
8275

83-
stream.close().await?;
76+
stream.flush().await?;
8477
Ok(())
8578
}
8679

@@ -93,7 +86,7 @@ fn pass() {
9386
config.root_store.add_pem_file(&mut chain).unwrap();
9487
let config = Arc::new(config);
9588

96-
executor::block_on(start_client(addr.clone(), domain, config.clone())).unwrap();
89+
task::block_on(start_client(addr.clone(), domain, config.clone())).unwrap();
9790
}
9891

9992
#[test]
@@ -106,5 +99,5 @@ fn fail() {
10699
let config = Arc::new(config);
107100

108101
assert_ne!(domain, &"google.com");
109-
assert!(executor::block_on(start_client(addr.clone(), "google.com", config)).is_err());
102+
assert!(task::block_on(start_client(addr.clone(), "google.com", config)).is_err());
110103
}

0 commit comments

Comments
 (0)