test(client): add client benchmarks with mocked IO
This commit is contained in:
@@ -207,3 +207,66 @@ fn checkout_win_allows_connect_future_to_be_pooled() {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "nightly")]
|
||||
#[bench]
|
||||
fn bench_http1_get_0b(b: &mut test::Bencher) {
|
||||
let _ = pretty_env_logger::try_init();
|
||||
|
||||
let mut rt = Runtime::new().expect("new rt");
|
||||
let mut connector = MockConnector::new();
|
||||
|
||||
|
||||
let client = Client::builder()
|
||||
.build::<_, ::Body>(connector.clone());
|
||||
|
||||
client.pool.no_timer();
|
||||
|
||||
let uri = Uri::from_static("http://mock.local/a");
|
||||
|
||||
b.iter(move || {
|
||||
let sock1 = connector.mock("http://mock.local");
|
||||
let res1 = client
|
||||
.get(uri.clone())
|
||||
.and_then(|res| {
|
||||
res.into_body().for_each(|_| Ok(()))
|
||||
});
|
||||
let srv1 = poll_fn(|| {
|
||||
try_ready!(sock1.read(&mut [0u8; 512]));
|
||||
try_ready!(sock1.write(b"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n"));
|
||||
Ok(Async::Ready(()))
|
||||
}).map_err(|e: ::std::io::Error| panic!("srv1 poll_fn error: {}", e));
|
||||
rt.block_on(res1.join(srv1)).expect("res1");
|
||||
});
|
||||
}
|
||||
|
||||
#[cfg(feature = "nightly")]
|
||||
#[bench]
|
||||
fn bench_http1_get_10b(b: &mut test::Bencher) {
|
||||
let _ = pretty_env_logger::try_init();
|
||||
|
||||
let mut rt = Runtime::new().expect("new rt");
|
||||
let mut connector = MockConnector::new();
|
||||
|
||||
|
||||
let client = Client::builder()
|
||||
.build::<_, ::Body>(connector.clone());
|
||||
|
||||
client.pool.no_timer();
|
||||
|
||||
let uri = Uri::from_static("http://mock.local/a");
|
||||
|
||||
b.iter(move || {
|
||||
let sock1 = connector.mock("http://mock.local");
|
||||
let res1 = client
|
||||
.get(uri.clone())
|
||||
.and_then(|res| {
|
||||
res.into_body().for_each(|_| Ok(()))
|
||||
});
|
||||
let srv1 = poll_fn(|| {
|
||||
try_ready!(sock1.read(&mut [0u8; 512]));
|
||||
try_ready!(sock1.write(b"HTTP/1.1 200 OK\r\nContent-Length: 10\r\n\r\n0123456789"));
|
||||
Ok(Async::Ready(()))
|
||||
}).map_err(|e: ::std::io::Error| panic!("srv1 poll_fn error: {}", e));
|
||||
rt.block_on(res1.join(srv1)).expect("res1");
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user