Update crate to Rust 2018 (#383)

This commit is contained in:
Jakub Beránek
2019-07-23 19:18:43 +02:00
committed by Sean McArthur
parent b3351e675b
commit db6b841e67
68 changed files with 478 additions and 660 deletions

View File

@@ -3,6 +3,7 @@ name = "h2-fuzz"
version = "0.0.0"
publish = false
license = "MIT"
edition = "2018"
[dependencies]
h2 = { path = "../.." }

View File

@@ -1,11 +1,3 @@
extern crate futures;
extern crate tokio_io;
#[macro_use]
extern crate honggfuzz;
extern crate env_logger;
extern crate h2;
extern crate http;
use futures::prelude::*;
use futures::{executor, future, task};
use http::{Method, Request};
@@ -155,7 +147,7 @@ fn run(script: &[u8]) -> Result<(), h2::Error> {
fn main() {
env_logger::init();
loop {
fuzz!(|data: &[u8]| {
honggfuzz::fuzz!(|data: &[u8]| {
eprintln!("{:?}", run(data));
});
}

View File

@@ -2,6 +2,7 @@
name = "h2-support"
version = "0.1.0"
authors = ["Carl Lerche <me@carllerche.com>"]
edition = "2018"
[dependencies]
h2 = { path = "../..", features = ["unstable"] }

View File

@@ -10,7 +10,7 @@ macro_rules! assert_closed {
macro_rules! assert_headers {
($frame:expr) => {{
match $frame {
::h2::frame::Frame::Headers(v) => v,
h2::frame::Frame::Headers(v) => v,
f => panic!("expected HEADERS; actual={:?}", f),
}
}}
@@ -20,7 +20,7 @@ macro_rules! assert_headers {
macro_rules! assert_data {
($frame:expr) => {{
match $frame {
::h2::frame::Frame::Data(v) => v,
h2::frame::Frame::Data(v) => v,
f => panic!("expected DATA; actual={:?}", f),
}
}}
@@ -30,7 +30,7 @@ macro_rules! assert_data {
macro_rules! assert_ping {
($frame:expr) => {{
match $frame {
::h2::frame::Frame::Ping(v) => v,
h2::frame::Frame::Ping(v) => v,
f => panic!("expected PING; actual={:?}", f),
}
}}
@@ -40,7 +40,7 @@ macro_rules! assert_ping {
macro_rules! assert_settings {
($frame:expr) => {{
match $frame {
::h2::frame::Frame::Settings(v) => v,
h2::frame::Frame::Settings(v) => v,
f => panic!("expected SETTINGS; actual={:?}", f),
}
}}

View File

@@ -1,17 +1,7 @@
//! Utilities to support tests.
pub extern crate bytes;
pub extern crate env_logger;
#[macro_use]
pub extern crate futures;
pub extern crate h2;
pub extern crate http;
pub extern crate string;
#[macro_use]
pub extern crate tokio_io;
#[macro_use]
mod assert;
pub mod assert;
pub mod raw;
@@ -25,8 +15,8 @@ pub mod util;
mod client_ext;
mod future_ext;
pub use client_ext::{SendRequestExt};
pub use future_ext::{FutureExt, Unwrap};
pub use crate::client_ext::{SendRequestExt};
pub use crate::future_ext::{FutureExt, Unwrap};
pub type WindowSize = usize;
pub const DEFAULT_WINDOW_SIZE: WindowSize = (1 << 16) - 1;

View File

@@ -1,4 +1,4 @@
use {frames, FutureExt, SendFrame};
use crate::{frames, FutureExt, SendFrame};
use h2::{self, RecvError, SendError};
use h2::frame::{self, Frame};
@@ -22,7 +22,7 @@ pub struct Mock {
#[derive(Debug)]
pub struct Handle {
codec: ::Codec<Pipe>,
codec: crate::Codec<Pipe>,
}
#[derive(Debug)]
@@ -92,7 +92,7 @@ pub fn new_with_write_capacity(cap: usize) -> (Mock, Handle) {
impl Handle {
/// Get a mutable reference to inner Codec.
pub fn codec_mut(&mut self) -> &mut ::Codec<Pipe> {
pub fn codec_mut(&mut self) -> &mut crate::Codec<Pipe> {
&mut self.codec
}
@@ -276,7 +276,7 @@ impl io::Write for Handle {
impl AsyncWrite for Handle {
fn shutdown(&mut self) -> Poll<(), io::Error> {
use std::io::Write;
try_nb!(self.flush());
tokio_io::try_nb!(self.flush());
Ok(().into())
}
}
@@ -359,7 +359,7 @@ impl io::Write for Mock {
impl AsyncWrite for Mock {
fn shutdown(&mut self) -> Poll<(), io::Error> {
use std::io::Write;
try_nb!(self.flush());
tokio_io::try_nb!(self.flush());
Ok(().into())
}
}
@@ -426,7 +426,7 @@ impl io::Write for Pipe {
impl AsyncWrite for Pipe {
fn shutdown(&mut self) -> Poll<(), io::Error> {
use std::io::Write;
try_nb!(self.flush());
tokio_io::try_nb!(self.flush());
Ok(().into())
}
}
@@ -519,7 +519,7 @@ pub trait HandleFutureExt {
.write_buf(&mut buf)
.map_err(|e| panic!("write err={:?}", e));
try_ready!(res);
futures::try_ready!(res);
}
Ok(handle.take().unwrap().into())

View File

@@ -25,8 +25,6 @@
//! Then use it in your project. For example, a test could be written:
//!
//! ```
//! extern crate mock_io;
//!
//! use mock_io::{Builder, Mock};
//! use std::io::{Read, Write};
//!
@@ -88,7 +86,7 @@ use std::time::{Duration, Instant};
pub struct Mock {
inner: Inner,
tokio: tokio::Inner,
async: Option<bool>,
r#async: Option<bool>,
}
#[derive(Debug)]
@@ -103,7 +101,7 @@ pub struct Builder {
actions: VecDeque<Action>,
// true for Tokio, false for blocking, None to auto detect
async: Option<bool>,
r#async: Option<bool>,
}
#[derive(Debug, Clone)]
@@ -171,7 +169,7 @@ impl Builder {
waiting: None,
},
tokio: tokio,
async: src.async,
r#async: src.r#async,
};
let handle = Handle { inner: handle };
@@ -231,7 +229,7 @@ impl Mock {
/// Returns `true` if running in a futures-rs task context
fn is_async(&self) -> bool {
self.async.unwrap_or(tokio::is_task_ctx())
self.r#async.unwrap_or(tokio::is_task_ctx())
}
}
@@ -376,23 +374,19 @@ impl io::Write for Mock {
// use tokio::*;
mod tokio {
extern crate futures;
extern crate tokio_io;
extern crate tokio_timer;
use super::*;
use self::futures::{Future, Stream, Poll, Async};
use self::futures::sync::mpsc;
use self::futures::task::{self, Task};
use self::tokio_io::{AsyncRead, AsyncWrite};
use self::tokio_timer::{Timer, Sleep};
use futures::{Future, Stream, Poll, Async};
use futures::sync::mpsc;
use futures::task::{self, Task};
use tokio_io::{AsyncRead, AsyncWrite};
use tokio_timer::{Timer, Sleep};
use std::io;
impl Builder {
pub fn set_async(&mut self, is_async: bool) -> &mut Self {
self.async = Some(is_async);
self.r#async = Some(is_async);
self
}
}
@@ -467,7 +461,7 @@ mod tokio {
pub fn async_read(me: &mut Mock, dst: &mut [u8]) -> io::Result<usize> {
loop {
if let Some(ref mut sleep) = me.tokio.sleep {
let res = try!(sleep.poll());
let res = r#try!(sleep.poll());
if !res.is_ready() {
return Err(io::ErrorKind::WouldBlock.into());
@@ -509,7 +503,7 @@ mod tokio {
pub fn async_write(me: &mut Mock, src: &[u8]) -> io::Result<usize> {
loop {
if let Some(ref mut sleep) = me.tokio.sleep {
let res = try!(sleep.poll());
let res = r#try!(sleep.poll());
if !res.is_ready() {
return Err(io::ErrorKind::WouldBlock.into());

View File

@@ -1,11 +1,11 @@
// Re-export H2 crate
pub use super::h2;
pub use h2;
pub use self::h2::*;
pub use self::h2::client;
pub use self::h2::frame::StreamId;
pub use self::h2::server;
pub use h2::*;
pub use h2::client;
pub use h2::frame::StreamId;
pub use h2::server;
// Re-export mock
pub use super::mock::{self, HandleFutureExt};
@@ -22,11 +22,16 @@ pub use super::util;
// Re-export some type defines
pub use super::{Codec, SendFrame};
// Re-export macros
pub use super::{assert_ping, assert_data, assert_headers, assert_closed,
raw_codec, poll_frame, poll_err};
// Re-export useful crates
pub use super::{bytes, env_logger, futures, http, mock_io, tokio_io};
pub use {bytes, env_logger, futures, http, tokio_io};
pub use super::mock_io;
// Re-export primary future types
pub use self::futures::{Future, IntoFuture, Sink, Stream};
pub use futures::{Future, IntoFuture, Sink, Stream};
// And our Future extensions
pub use super::future_ext::{FutureExt, Unwrap};
@@ -35,9 +40,9 @@ pub use super::future_ext::{FutureExt, Unwrap};
pub use super::client_ext::{SendRequestExt};
// Re-export HTTP types
pub use self::http::{uri, HeaderMap, Method, Request, Response, StatusCode, Version};
pub use http::{uri, HeaderMap, Method, Request, Response, StatusCode, Version};
pub use self::bytes::{Buf, BufMut, Bytes, BytesMut, IntoBuf};
pub use bytes::{Buf, BufMut, Bytes, BytesMut, IntoBuf};
pub use tokio_io::{AsyncRead, AsyncWrite};
@@ -53,7 +58,7 @@ pub trait MockH2 {
fn handshake(&mut self) -> &mut Self;
}
impl MockH2 for mock_io::Builder {
impl MockH2 for super::mock_io::Builder {
fn handshake(&mut self) -> &mut Self {
self.write(b"PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n")
// Settings frame

View File

@@ -1,6 +1,6 @@
use h2;
use super::string::{String, TryFrom};
use string::{String, TryFrom};
use bytes::Bytes;
use futures::{Async, Future, Poll};
@@ -44,7 +44,7 @@ impl Future for WaitForCapacity {
type Error = ();
fn poll(&mut self) -> Poll<Self::Item, ()> {
let _ = try_ready!(self.stream().poll_capacity().map_err(|_| panic!()));
let _ = futures::try_ready!(self.stream().poll_capacity().map_err(|_| panic!()));
let act = self.stream().capacity();

View File

@@ -3,6 +3,7 @@ name = "h2-tests"
version = "0.1.0"
authors = ["Carl Lerche <me@carllerche.com>"]
publish = false
edition = "2018"
[dependencies]

View File

@@ -1,12 +1,8 @@
#[macro_use]
extern crate log;
extern crate h2_support;
use h2_support::prelude::*;
#[test]
fn handshake() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let mock = mock_io::Builder::new()
.handshake()
@@ -15,7 +11,7 @@ fn handshake() {
let (_client, h2) = client::handshake(mock).wait().unwrap();
trace!("hands have been shook");
log::trace!("hands have been shook");
// At this point, the connection should be closed
h2.wait().unwrap();
@@ -23,7 +19,7 @@ fn handshake() {
#[test]
fn client_other_thread() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -60,7 +56,7 @@ fn client_other_thread() {
#[test]
fn recv_invalid_server_stream_id() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let mock = mock_io::Builder::new()
.handshake()
@@ -84,7 +80,7 @@ fn recv_invalid_server_stream_id() {
.body(())
.unwrap();
info!("sending request");
log::info!("sending request");
let (response, _) = client.send_request(request, true).unwrap();
// The connection errors
@@ -96,7 +92,7 @@ fn recv_invalid_server_stream_id() {
#[test]
fn request_stream_id_overflows() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
@@ -159,7 +155,7 @@ fn request_stream_id_overflows() {
#[test]
fn client_builder_max_concurrent_streams() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let mut settings = frame::Settings::default();
@@ -199,7 +195,7 @@ fn client_builder_max_concurrent_streams() {
#[test]
fn request_over_max_concurrent_streams_errors() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
@@ -284,7 +280,7 @@ fn request_over_max_concurrent_streams_errors() {
#[test]
fn send_request_poll_ready_when_connection_error() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
@@ -362,7 +358,7 @@ fn send_request_poll_ready_when_connection_error() {
#[test]
fn send_reset_notifies_recv_stream() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
@@ -426,7 +422,7 @@ fn send_reset_notifies_recv_stream() {
#[test]
fn http_11_request_without_scheme_or_authority() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -461,7 +457,7 @@ fn http_11_request_without_scheme_or_authority() {
#[test]
fn http_2_request_without_scheme_or_authority() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -501,7 +497,7 @@ fn request_with_h1_version() {}
#[test]
fn request_with_connection_headers() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
// can't assert full handshake, since client never sends a request, and
@@ -544,7 +540,7 @@ fn request_with_connection_headers() {
#[test]
fn connection_close_notifies_response_future() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -587,7 +583,7 @@ fn connection_close_notifies_response_future() {
#[test]
fn connection_close_notifies_client_poll_ready() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -637,7 +633,7 @@ fn connection_close_notifies_client_poll_ready() {
#[test]
fn sending_request_on_closed_connection() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -702,7 +698,7 @@ fn sending_request_on_closed_connection() {
#[test]
fn recv_too_big_headers() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -779,7 +775,7 @@ fn recv_too_big_headers() {
#[test]
fn pending_send_request_gets_reset_by_peer_properly() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let payload = [0; (frame::DEFAULT_INITIAL_WINDOW_SIZE * 2) as usize];
@@ -842,7 +838,7 @@ fn pending_send_request_gets_reset_by_peer_properly() {
#[test]
fn request_without_path() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -870,7 +866,7 @@ fn request_without_path() {
#[test]
fn request_options_with_star() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
// Note the lack of trailing slash.
@@ -913,7 +909,7 @@ fn notify_on_send_capacity() {
// stream, the client is notified.
use std::sync::mpsc;
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let (done_tx, done_rx) = futures::sync::oneshot::channel();
@@ -999,7 +995,7 @@ fn notify_on_send_capacity() {
#[test]
fn send_stream_poll_reset() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv
@@ -1039,7 +1035,7 @@ fn send_stream_poll_reset() {
fn drop_pending_open() {
// This test checks that a stream queued for pending open behaves correctly when its
// client drops.
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let (init_tx, init_rx) = futures::sync::oneshot::channel();
@@ -1130,7 +1126,7 @@ fn malformed_response_headers_dont_unlink_stream() {
// This test checks that receiving malformed headers frame on a stream with
// no remaining references correctly resets the stream, without prematurely
// unlinking it.
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let (drop_tx, drop_rx) = futures::sync::oneshot::channel();

View File

@@ -1,6 +1,3 @@
#[macro_use]
extern crate h2_support;
use h2_support::prelude::*;
use std::error::Error;
@@ -135,7 +132,7 @@ fn read_headers_empty_payload() {}
#[test]
fn read_continuation_frames() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let large = build_large_headers();
@@ -191,7 +188,7 @@ fn read_continuation_frames() {
#[test]
fn update_max_frame_len_at_rest() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
// TODO: add test for updating max frame length in flight as well?
let mut codec = raw_codec! {
read => [

View File

@@ -1,12 +1,10 @@
extern crate h2_support;
use h2_support::prelude::*;
#[test]
fn write_continuation_frames() {
// An invalid dependency ID results in a stream level error. The hpack
// payload should still be decoded.
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let large = build_large_headers();

View File

@@ -1,12 +1,10 @@
extern crate h2_support;
use h2_support::prelude::*;
// In this case, the stream & connection both have capacity, but capacity is not
// explicitly requested.
#[test]
fn send_data_without_requesting_capacity() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let payload = [0; 1024];
@@ -52,7 +50,7 @@ fn send_data_without_requesting_capacity() {
#[test]
fn release_capacity_sends_window_update() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let payload = vec![0u8; 16_384];
@@ -126,7 +124,7 @@ fn release_capacity_sends_window_update() {
#[test]
fn release_capacity_of_small_amount_does_not_send_window_update() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let payload = [0; 16];
@@ -190,7 +188,7 @@ fn expand_window_calls_are_coalesced() {}
#[test]
fn recv_data_overflows_connection_window() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
@@ -257,7 +255,7 @@ fn recv_data_overflows_connection_window() {
#[test]
fn recv_data_overflows_stream_window() {
// this tests for when streams have smaller windows than their connection
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
@@ -324,7 +322,7 @@ fn recv_window_update_causes_overflow() {
#[test]
fn stream_error_release_connection_capacity() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -395,7 +393,7 @@ fn stream_error_release_connection_capacity() {
#[test]
fn stream_close_by_data_frame_releases_capacity() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let window_size = frame::DEFAULT_INITIAL_WINDOW_SIZE as usize;
@@ -466,7 +464,7 @@ fn stream_close_by_data_frame_releases_capacity() {
#[test]
fn stream_close_by_trailers_frame_releases_capacity() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let window_size = frame::DEFAULT_INITIAL_WINDOW_SIZE as usize;
@@ -543,7 +541,7 @@ fn stream_close_by_trailers_frame_releases_capacity() {
#[test]
fn stream_close_by_send_reset_frame_releases_capacity() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -595,7 +593,7 @@ fn stream_close_by_recv_reset_frame_releases_capacity() {}
#[test]
fn recv_window_update_on_stream_closed_by_data_frame() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let h2 = client::handshake(io)
@@ -644,7 +642,7 @@ fn recv_window_update_on_stream_closed_by_data_frame() {
#[test]
fn reserved_capacity_assigned_in_multi_window_updates() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let h2 = client::handshake(io)
@@ -725,11 +723,11 @@ fn reserved_capacity_assigned_in_multi_window_updates() {
#[test]
fn connection_notified_on_released_capacity() {
use futures::sync::oneshot;
use crate::futures::sync::oneshot;
use std::sync::mpsc;
use std::thread;
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
// We're going to run the connection on a thread in order to isolate task
@@ -832,7 +830,7 @@ fn connection_notified_on_released_capacity() {
#[test]
fn recv_settings_removes_available_capacity() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let mut settings = frame::Settings::default();
@@ -890,7 +888,7 @@ fn recv_settings_removes_available_capacity() {
#[test]
fn recv_settings_keeps_assigned_capacity() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let (sent_settings, sent_settings_rx) = futures::sync::oneshot::channel();
@@ -947,7 +945,7 @@ fn recv_settings_keeps_assigned_capacity() {
#[test]
fn recv_no_init_window_then_receive_some_init_window() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let mut settings = frame::Settings::default();
@@ -1012,7 +1010,7 @@ fn settings_lowered_capacity_returns_capacity_to_connection() {
use std::sync::mpsc;
use std::thread;
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let (tx1, rx1) = mpsc::channel();
let (tx2, rx2) = mpsc::channel();
@@ -1130,7 +1128,7 @@ fn settings_lowered_capacity_returns_capacity_to_connection() {
#[test]
fn client_increase_target_window_size() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -1152,7 +1150,7 @@ fn client_increase_target_window_size() {
#[test]
fn increase_target_window_size_after_using_some() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -1204,7 +1202,7 @@ fn increase_target_window_size_after_using_some() {
#[test]
fn decrease_target_window_size() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -1252,7 +1250,7 @@ fn decrease_target_window_size() {
#[test]
fn server_target_window_size() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client.assert_server_handshake()
@@ -1273,7 +1271,7 @@ fn server_target_window_size() {
#[test]
fn recv_settings_increase_window_size_after_using_some() {
// See https://github.com/hyperium/h2/issues/208
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let new_win_size = 16_384 * 4; // 1 bigger than default
@@ -1318,7 +1316,7 @@ fn recv_settings_increase_window_size_after_using_some() {
#[test]
fn reserve_capacity_after_peer_closes() {
// See https://github.com/hyperium/h2/issues/300
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -1357,7 +1355,7 @@ fn reserve_capacity_after_peer_closes() {
fn reset_stream_waiting_for_capacity() {
// This tests that receiving a reset on a stream that has some available
// connection-level window reassigns that window to another stream.
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
@@ -1419,7 +1417,7 @@ fn reset_stream_waiting_for_capacity() {
#[test]
fn data_padding() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let mut body = Vec::new();

View File

@@ -1,9 +1,5 @@
extern crate tokio;
#[macro_use]
extern crate h2_support;
use h2_support::prelude::*;
use h2_support::futures::{Async, Poll};
use futures::{Async, Poll};
use tokio::net::{TcpListener, TcpStream};
use std::{net::SocketAddr, thread, sync::{atomic::{AtomicUsize, Ordering}, Arc}};

View File

@@ -1,11 +1,9 @@
#[macro_use]
extern crate h2_support;
use h2_support::prelude::*;
use h2_support::assert_ping;
#[test]
fn recv_single_ping() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (m, mock) = mock::new();
// Create the handshake
@@ -41,7 +39,7 @@ fn recv_single_ping() {
#[test]
fn recv_multiple_pings() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client.assert_server_handshake()
@@ -65,7 +63,7 @@ fn recv_multiple_pings() {
#[test]
fn pong_has_highest_priority() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let data = Bytes::from(vec![0; 16_384]);
@@ -111,7 +109,7 @@ fn pong_has_highest_priority() {
#[test]
fn user_ping_pong() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -160,7 +158,7 @@ fn user_ping_pong() {
#[test]
fn user_notifies_when_connection_closes() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()

View File

@@ -1,12 +1,9 @@
#[macro_use]
extern crate h2_support;
use h2_support::{DEFAULT_WINDOW_SIZE};
use h2_support::prelude::*;
#[test]
fn single_stream_send_large_body() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let payload = [0; 1024];
@@ -69,7 +66,7 @@ fn single_stream_send_large_body() {
#[test]
fn multiple_streams_with_payload_greater_than_default_window() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let payload = vec![0; 16384*5-1];
@@ -132,7 +129,7 @@ fn multiple_streams_with_payload_greater_than_default_window() {
#[test]
fn single_stream_send_extra_large_body_multi_frames_one_buffer() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let payload = vec![0; 32_768];
@@ -199,7 +196,7 @@ fn single_stream_send_extra_large_body_multi_frames_one_buffer() {
#[test]
fn single_stream_send_body_greater_than_default_window() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let payload = vec![0; 16384*5-1];
@@ -292,7 +289,7 @@ fn single_stream_send_body_greater_than_default_window() {
#[test]
fn single_stream_send_extra_large_body_multi_frames_multi_buffer() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let payload = vec![0; 32_768];
@@ -358,7 +355,7 @@ fn single_stream_send_extra_large_body_multi_frames_multi_buffer() {
#[test]
fn send_data_receive_window_update() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (m, mock) = mock::new();
let h2 = client::handshake(m)

View File

@@ -1,10 +1,8 @@
extern crate h2_support;
use h2_support::prelude::*;
#[test]
fn recv_push_works() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let mock = srv.assert_client_handshake()
@@ -56,7 +54,7 @@ fn recv_push_works() {
#[test]
fn pushed_streams_arent_dropped_too_early() {
// tests that by default, received push promises work
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let mock = srv.assert_client_handshake()
@@ -110,7 +108,7 @@ fn pushed_streams_arent_dropped_too_early() {
#[test]
fn recv_push_when_push_disabled_is_conn_error() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let mock = srv.assert_client_handshake()
@@ -163,7 +161,7 @@ fn recv_push_when_push_disabled_is_conn_error() {
#[test]
fn pending_push_promises_reset_when_dropped() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -206,7 +204,7 @@ fn pending_push_promises_reset_when_dropped() {
#[test]
fn recv_push_promise_over_max_header_list_size() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -257,7 +255,7 @@ fn recv_push_promise_over_max_header_list_size() {
#[test]
fn recv_invalid_push_promise_headers_is_stream_protocol_error() {
// Unsafe method or content length is stream protocol error
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let mock = srv.assert_client_handshake()
@@ -317,7 +315,7 @@ fn recv_push_promise_with_wrong_authority_is_stream_error() {
#[test]
fn recv_push_promise_skipped_stream_id() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let mock = srv.assert_client_handshake()
@@ -367,7 +365,7 @@ fn recv_push_promise_skipped_stream_id() {
#[test]
fn recv_push_promise_dup_stream_id() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let mock = srv.assert_client_handshake()

View File

@@ -1,7 +1,5 @@
#![deny(warnings)]
extern crate h2_support;
use h2_support::prelude::*;
const SETTINGS: &'static [u8] = &[0, 0, 0, 4, 0, 0, 0, 0, 0];
@@ -9,7 +7,7 @@ const SETTINGS_ACK: &'static [u8] = &[0, 0, 0, 4, 1, 0, 0, 0, 0];
#[test]
fn read_preface_in_multiple_frames() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let mock = mock_io::Builder::new()
.read(b"PRI * HTTP/2.0")
@@ -27,7 +25,7 @@ fn read_preface_in_multiple_frames() {
#[test]
fn server_builder_set_max_concurrent_streams() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let mut settings = frame::Settings::default();
@@ -77,7 +75,7 @@ fn server_builder_set_max_concurrent_streams() {
#[test]
fn serve_request() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client
@@ -114,7 +112,7 @@ fn accept_with_pending_connections_after_socket_close() {}
#[test]
fn recv_invalid_authority() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let bad_auth = util::byte_str("not:a/good authority");
@@ -141,7 +139,7 @@ fn recv_invalid_authority() {
#[test]
fn recv_connection_header() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let req = |id, name, val| {
@@ -176,7 +174,7 @@ fn recv_connection_header() {
#[test]
fn sends_reset_cancel_when_req_body_is_dropped() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client
@@ -209,7 +207,7 @@ fn sends_reset_cancel_when_req_body_is_dropped() {
#[test]
fn abrupt_shutdown() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client
@@ -255,7 +253,7 @@ fn abrupt_shutdown() {
#[test]
fn graceful_shutdown() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client
@@ -341,7 +339,7 @@ fn graceful_shutdown() {
#[test]
fn sends_reset_cancel_when_res_body_is_dropped() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client
@@ -399,7 +397,7 @@ fn sends_reset_cancel_when_res_body_is_dropped() {
#[test]
fn too_big_headers_sends_431() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client
@@ -436,7 +434,7 @@ fn too_big_headers_sends_431() {
#[test]
fn too_big_headers_sends_reset_after_431_if_not_eos() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client
@@ -472,7 +470,7 @@ fn too_big_headers_sends_reset_after_431_if_not_eos() {
#[test]
fn poll_reset() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client
@@ -518,7 +516,7 @@ fn poll_reset() {
#[test]
fn poll_reset_io_error() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client
@@ -560,7 +558,7 @@ fn poll_reset_io_error() {
#[test]
fn poll_reset_after_send_response_is_user_error() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client
@@ -614,7 +612,7 @@ fn poll_reset_after_send_response_is_user_error() {
fn server_error_on_unclean_shutdown() {
use std::io::Write;
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, mut client) = mock::new();
let srv = server::Builder::new()
@@ -628,7 +626,7 @@ fn server_error_on_unclean_shutdown() {
#[test]
fn request_without_authority() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
let client = client

View File

@@ -1,9 +1,5 @@
#![deny(warnings)]
#[macro_use]
extern crate log;
extern crate h2_support;
use h2_support::prelude::*;
#[test]
@@ -30,7 +26,7 @@ fn send_recv_headers_only() {
.body(())
.unwrap();
info!("sending request");
log::info!("sending request");
let (response, _) = client.send_request(request, true).unwrap();
let resp = h2.run(response).unwrap();
@@ -72,7 +68,7 @@ fn send_recv_data() {
.body(())
.unwrap();
info!("sending request");
log::info!("sending request");
let (response, mut stream) = client.send_request(request, false).unwrap();
// Reserve send capacity
@@ -129,7 +125,7 @@ fn send_headers_recv_data_single_frame() {
.body(())
.unwrap();
info!("sending request");
log::info!("sending request");
let (response, _) = client.send_request(request, true).unwrap();
let resp = h2.run(response).unwrap();
@@ -153,7 +149,7 @@ fn send_headers_recv_data_single_frame() {
#[test]
fn closed_streams_are_released() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let h2 = client::handshake(io).unwrap().and_then(|(mut client, h2)| {
@@ -198,7 +194,7 @@ fn closed_streams_are_released() {
#[test]
fn errors_if_recv_frame_exceeds_max_frame_size() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, mut srv) = mock::new();
let h2 = client::handshake(io).unwrap().and_then(|(mut client, h2)| {
@@ -246,7 +242,7 @@ fn errors_if_recv_frame_exceeds_max_frame_size() {
#[test]
fn configure_max_frame_size() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, mut srv) = mock::new();
let h2 = client::Builder::new()
@@ -290,7 +286,7 @@ fn configure_max_frame_size() {
#[test]
fn recv_goaway_finishes_processed_streams() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -347,7 +343,7 @@ fn recv_goaway_finishes_processed_streams() {
#[test]
fn recv_next_stream_id_updated_by_malformed_headers() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, client) = mock::new();
@@ -385,7 +381,7 @@ fn recv_next_stream_id_updated_by_malformed_headers() {
#[test]
fn skipped_stream_ids_are_implicitly_closed() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv
@@ -424,7 +420,7 @@ fn skipped_stream_ids_are_implicitly_closed() {
#[test]
fn send_rst_stream_allows_recv_data() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -470,7 +466,7 @@ fn send_rst_stream_allows_recv_data() {
#[test]
fn send_rst_stream_allows_recv_trailers() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -512,7 +508,7 @@ fn send_rst_stream_allows_recv_trailers() {
#[test]
fn rst_stream_expires() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -561,7 +557,7 @@ fn rst_stream_expires() {
#[test]
fn rst_stream_max() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -627,7 +623,7 @@ fn rst_stream_max() {
#[test]
fn reserved_state_recv_window_update() {
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()
@@ -715,11 +711,11 @@ fn rst_while_closing() {
// Test to reproduce panic in issue #246 --- receipt of a RST_STREAM frame
// on a stream in the Half Closed (remote) state with a queued EOS causes
// a panic.
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
// Rendevous when we've queued a trailers frame
let (tx, rx) = ::futures::sync::oneshot::channel();
let (tx, rx) = crate::futures::sync::oneshot::channel();
let srv = srv.assert_client_handshake()
.unwrap()
@@ -786,13 +782,13 @@ fn rst_with_buffered_data() {
// the data is fully flushed. Given that resetting a stream requires
// clearing all associated state for that stream, this test ensures that the
// buffered up frame is correctly handled.
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
// This allows the settings + headers frame through
let (io, srv) = mock::new_with_write_capacity(73);
// Synchronize the client / server on response
let (tx, rx) = ::futures::sync::oneshot::channel();
let (tx, rx) = crate::futures::sync::oneshot::channel();
let srv = srv.assert_client_handshake()
.unwrap()
@@ -851,13 +847,13 @@ fn err_with_buffered_data() {
// the data is fully flushed. Given that resetting a stream requires
// clearing all associated state for that stream, this test ensures that the
// buffered up frame is correctly handled.
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
// This allows the settings + headers frame through
let (io, srv) = mock::new_with_write_capacity(73);
// Synchronize the client / server on response
let (tx, rx) = ::futures::sync::oneshot::channel();
let (tx, rx) = crate::futures::sync::oneshot::channel();
let srv = srv.assert_client_handshake()
.unwrap()
@@ -915,13 +911,13 @@ fn send_err_with_buffered_data() {
// the data is fully flushed. Given that resetting a stream requires
// clearing all associated state for that stream, this test ensures that the
// buffered up frame is correctly handled.
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
// This allows the settings + headers frame through
let (io, srv) = mock::new_with_write_capacity(73);
// Synchronize the client / server on response
let (tx, rx) = ::futures::sync::oneshot::channel();
let (tx, rx) = crate::futures::sync::oneshot::channel();
let srv = srv.assert_client_handshake()
.unwrap()
@@ -961,7 +957,7 @@ fn send_err_with_buffered_data() {
stream.send_data(body.into(), true).unwrap();
// Hack to drive the connection, trying to flush data
::futures::future::lazy(|| {
crate::futures::future::lazy(|| {
conn.poll().unwrap();
Ok::<_, ()>(())
}).wait().unwrap();
@@ -987,7 +983,7 @@ fn send_err_with_buffered_data() {
#[test]
fn srv_window_update_on_lower_stream_id() {
// See https://github.com/hyperium/h2/issues/208
let _ = ::env_logger::try_init();
let _ = env_logger::try_init();
let (io, srv) = mock::new();
let srv = srv.assert_client_handshake()

View File

@@ -1,7 +1,3 @@
#[macro_use]
extern crate log;
extern crate h2_support;
use h2_support::prelude::*;
#[test]
@@ -31,7 +27,7 @@ fn recv_trailers_only() {
.body(())
.unwrap();
info!("sending request");
log::info!("sending request");
let (response, _) = client.send_request(request, true).unwrap();
let response = h2.run(response).unwrap();
@@ -79,7 +75,7 @@ fn send_trailers_immediately() {
.body(())
.unwrap();
info!("sending request");
log::info!("sending request");
let (response, mut stream) = client.send_request(request, false).unwrap();
let mut trailers = HeaderMap::new();