refactor(lib): convert to futures 0.2.0-beta (#1470)
This commit is contained in:
		| @@ -5,6 +5,7 @@ use std::time::Duration; | ||||
|  | ||||
| use futures::Async; | ||||
| use futures::future::poll_fn; | ||||
| use futures::executor::block_on; | ||||
| use tokio::executor::thread_pool::{Builder as ThreadPoolBuilder}; | ||||
|  | ||||
| use mock::MockConnector; | ||||
| @@ -22,7 +23,7 @@ fn retryable_request() { | ||||
|  | ||||
|     let client = Client::configure() | ||||
|         .connector(connector) | ||||
|         .executor(executor.sender().clone()); | ||||
|         .build(); | ||||
|  | ||||
|     { | ||||
|  | ||||
| @@ -30,13 +31,13 @@ fn retryable_request() { | ||||
|             .uri("http://mock.local/a") | ||||
|             .body(Default::default()) | ||||
|             .unwrap(); | ||||
|         let res1 = client.request(req); | ||||
|         let srv1 = poll_fn(|| { | ||||
|             try_ready!(sock1.read(&mut [0u8; 512])); | ||||
|         let res1 = client.request(req).with_executor(executor.sender().clone()); | ||||
|         let srv1 = poll_fn(|cx| { | ||||
|             try_ready!(sock1.read(cx, &mut [0u8; 512])); | ||||
|             try_ready!(sock1.write(b"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n")); | ||||
|             Ok(Async::Ready(())) | ||||
|         }); | ||||
|         res1.join(srv1).wait().expect("res1"); | ||||
|         block_on(res1.join(srv1)).expect("res1"); | ||||
|     } | ||||
|     drop(sock1); | ||||
|  | ||||
| @@ -44,17 +45,17 @@ fn retryable_request() { | ||||
|         .uri("http://mock.local/b") | ||||
|         .body(Default::default()) | ||||
|         .unwrap(); | ||||
|     let res2 = client.request(req) | ||||
|     let res2 = client.request(req).with_executor(executor.sender().clone()) | ||||
|         .map(|res| { | ||||
|             assert_eq!(res.status().as_u16(), 222); | ||||
|         }); | ||||
|     let srv2 = poll_fn(|| { | ||||
|         try_ready!(sock2.read(&mut [0u8; 512])); | ||||
|     let srv2 = poll_fn(|cx| { | ||||
|         try_ready!(sock2.read(cx, &mut [0u8; 512])); | ||||
|         try_ready!(sock2.write(b"HTTP/1.1 222 OK\r\nContent-Length: 0\r\n\r\n")); | ||||
|         Ok(Async::Ready(())) | ||||
|     }); | ||||
|  | ||||
|     res2.join(srv2).wait().expect("res2"); | ||||
|     block_on(res2.join(srv2)).expect("res2"); | ||||
| } | ||||
|  | ||||
| #[test] | ||||
| @@ -68,7 +69,7 @@ fn conn_reset_after_write() { | ||||
|  | ||||
|     let client = Client::configure() | ||||
|         .connector(connector) | ||||
|         .executor(executor.sender().clone()); | ||||
|         .build(); | ||||
|  | ||||
|     { | ||||
|         let req = Request::builder() | ||||
| @@ -77,13 +78,13 @@ fn conn_reset_after_write() { | ||||
|             .header("content-length", "0") | ||||
|             .body(Default::default()) | ||||
|             .unwrap(); | ||||
|         let res1 = client.request(req); | ||||
|         let srv1 = poll_fn(|| { | ||||
|             try_ready!(sock1.read(&mut [0u8; 512])); | ||||
|         let res1 = client.request(req).with_executor(executor.sender().clone()); | ||||
|         let srv1 = poll_fn(|cx| { | ||||
|             try_ready!(sock1.read(cx, &mut [0u8; 512])); | ||||
|             try_ready!(sock1.write(b"HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n")); | ||||
|             Ok(Async::Ready(())) | ||||
|         }); | ||||
|         res1.join(srv1).wait().expect("res1"); | ||||
|         block_on(res1.join(srv1)).expect("res1"); | ||||
|     } | ||||
|  | ||||
|     // sleep to allow some time for the connection to return to the pool | ||||
| @@ -93,20 +94,20 @@ fn conn_reset_after_write() { | ||||
|         .uri("http://mock.local/a") | ||||
|         .body(Default::default()) | ||||
|         .unwrap(); | ||||
|     let res2 = client.request(req); | ||||
|     let res2 = client.request(req).with_executor(executor.sender().clone()); | ||||
|     let mut sock1 = Some(sock1); | ||||
|     let srv2 = poll_fn(|| { | ||||
|     let srv2 = poll_fn(|cx| { | ||||
|         // We purposefully keep the socket open until the client | ||||
|         // has written the second request, and THEN disconnect. | ||||
|         // | ||||
|         // Not because we expect servers to be jerks, but to trigger | ||||
|         // state where we write on an assumedly good connetion, and | ||||
|         // only reset the close AFTER we wrote bytes. | ||||
|         try_ready!(sock1.as_mut().unwrap().read(&mut [0u8; 512])); | ||||
|         try_ready!(sock1.as_mut().unwrap().read(cx, &mut [0u8; 512])); | ||||
|         sock1.take(); | ||||
|         Ok(Async::Ready(())) | ||||
|     }); | ||||
|     let err = res2.join(srv2).wait().expect_err("res2"); | ||||
|     let err = block_on(res2.join(srv2)).expect_err("res2"); | ||||
|     match err { | ||||
|         ::Error::Incomplete => (), | ||||
|         other => panic!("expected Incomplete, found {:?}", other) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user