Start breaking out test files
This commit is contained in:
		| @@ -56,49 +56,6 @@ mod client_request { | |||||||
|         assert!(Stream::wait(h2).next().is_none()); |         assert!(Stream::wait(h2).next().is_none()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     #[test] |  | ||||||
|     fn get_with_204_response() { |  | ||||||
|         let _ = ::env_logger::init(); |  | ||||||
|  |  | ||||||
|         let mock = mock_io::Builder::new() |  | ||||||
|             .handshake() |  | ||||||
|             // Write GET / |  | ||||||
|             .write(&[ |  | ||||||
|                 0, 0, 0x10, 1, 5, 0, 0, 0, 1, 0x82, 0x87, 0x41, 0x8B, 0x9D, 0x29, |  | ||||||
|                     0xAC, 0x4B, 0x8F, 0xA8, 0xE9, 0x19, 0x97, 0x21, 0xE9, 0x84, |  | ||||||
|             ]) |  | ||||||
|             .write(SETTINGS_ACK) |  | ||||||
|             // Read response |  | ||||||
|             .read(&[0, 0, 1, 1, 5, 0, 0, 0, 1, 0x89]) |  | ||||||
|             .build(); |  | ||||||
|  |  | ||||||
|         let h2 = client::handshake(mock) |  | ||||||
|             .wait().unwrap(); |  | ||||||
|  |  | ||||||
|         // Send the request |  | ||||||
|         let mut request = request::Head::default(); |  | ||||||
|         request.uri = "https://http2.akamai.com/".parse().unwrap(); |  | ||||||
|  |  | ||||||
|         trace!("sending request"); |  | ||||||
|         let h2 = h2.send_request(1.into(), request, true).wait().unwrap(); |  | ||||||
|  |  | ||||||
|         // Get the response |  | ||||||
|  |  | ||||||
|         trace!("getting response"); |  | ||||||
|         let (resp, h2) = h2.into_future().wait().unwrap(); |  | ||||||
|  |  | ||||||
|         match resp.unwrap() { |  | ||||||
|             Frame::Headers { headers, .. } => { |  | ||||||
|                 assert_eq!(headers.status, status::NO_CONTENT); |  | ||||||
|             } |  | ||||||
|             _ => panic!("unexpected frame"), |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // No more frames |  | ||||||
|         trace!("ensure no more responses"); |  | ||||||
|         assert!(Stream::wait(h2).next().is_none());; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     #[test] |     #[test] | ||||||
|     fn get_with_200_response() { |     fn get_with_200_response() { | ||||||
|         let _ = ::env_logger::init(); |         let _ = ::env_logger::init(); | ||||||
|   | |||||||
							
								
								
									
										48
									
								
								tests/stream_states.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								tests/stream_states.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,48 @@ | |||||||
|  | #[macro_use] | ||||||
|  | extern crate log; | ||||||
|  |  | ||||||
|  | pub mod support; | ||||||
|  | use support::*; | ||||||
|  |  | ||||||
|  | #[test] | ||||||
|  | fn headers_only_bidirectional() { | ||||||
|  |     let _ = env_logger::init(); | ||||||
|  |  | ||||||
|  |     let mock = mock_io::Builder::new() | ||||||
|  |         .handshake() | ||||||
|  |         // Write GET / | ||||||
|  |         .write(&[ | ||||||
|  |             0, 0, 0x10, 1, 5, 0, 0, 0, 1, 0x82, 0x87, 0x41, 0x8B, 0x9D, 0x29, | ||||||
|  |                 0xAC, 0x4B, 0x8F, 0xA8, 0xE9, 0x19, 0x97, 0x21, 0xE9, 0x84, | ||||||
|  |         ]) | ||||||
|  |         .write(frames::SETTINGS_ACK) | ||||||
|  |         // Read response | ||||||
|  |         .read(&[0, 0, 1, 1, 5, 0, 0, 0, 1, 0x89]) | ||||||
|  |         .build(); | ||||||
|  |  | ||||||
|  |     let h2 = client::handshake(mock) | ||||||
|  |         .wait().unwrap(); | ||||||
|  |  | ||||||
|  |     // Send the request | ||||||
|  |     let mut request = request::Head::default(); | ||||||
|  |     request.uri = "https://http2.akamai.com/".parse().unwrap(); | ||||||
|  |  | ||||||
|  |     info!("sending request"); | ||||||
|  |     let h2 = h2.send_request(1.into(), request, true).wait().unwrap(); | ||||||
|  |  | ||||||
|  |     // Get the response | ||||||
|  |  | ||||||
|  |     info!("getting response"); | ||||||
|  |     let (resp, h2) = h2.into_future().wait().unwrap(); | ||||||
|  |  | ||||||
|  |     match resp.unwrap() { | ||||||
|  |         h2::Frame::Headers { headers, .. } => { | ||||||
|  |             assert_eq!(headers.status, status::NO_CONTENT); | ||||||
|  |         } | ||||||
|  |         _ => panic!("unexpected frame"), | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // No more frames | ||||||
|  |     info!("ensure no more responses"); | ||||||
|  |     assert!(Stream::wait(h2).next().is_none());; | ||||||
|  | } | ||||||
							
								
								
									
										46
									
								
								tests/support/mod.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								tests/support/mod.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | |||||||
|  | //! Utilities to support tests. | ||||||
|  |  | ||||||
|  | pub extern crate bytes; | ||||||
|  | pub extern crate h2; | ||||||
|  | pub extern crate http; | ||||||
|  | pub extern crate futures; | ||||||
|  | pub extern crate mock_io; | ||||||
|  | pub extern crate env_logger; | ||||||
|  |  | ||||||
|  | pub use self::futures::{ | ||||||
|  |     Future, | ||||||
|  |     Sink, | ||||||
|  |     Stream, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | pub use self::http::{ | ||||||
|  |     request, | ||||||
|  |     response, | ||||||
|  |     status, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | pub use self::h2::{ | ||||||
|  |     client, | ||||||
|  |     server, | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | pub trait MockH2 { | ||||||
|  |     fn handshake(&mut self) -> &mut Self; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | impl MockH2 for 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 | ||||||
|  |             .write(frames::SETTINGS) | ||||||
|  |             .read(frames::SETTINGS) | ||||||
|  |             .read(frames::SETTINGS_ACK) | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
|  | pub mod frames { | ||||||
|  |     //! Some useful frames | ||||||
|  |  | ||||||
|  |     pub const SETTINGS: &'static [u8] = &[0, 0, 0, 4, 0, 0, 0, 0, 0]; | ||||||
|  |     pub const SETTINGS_ACK: &'static [u8] = &[0, 0, 0, 4, 1, 0, 0, 0, 0]; | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user