From 618f95e10ad4a5c7295e7e733b795f60bdd9e4a8 Mon Sep 17 00:00:00 2001 From: Jonathan Reem Date: Sat, 20 Dec 2014 03:07:00 -0800 Subject: [PATCH] (fix) Update examples and benchmarks to remove rust-http. --- Cargo.toml | 3 +++ README.md | 36 ---------------------------------- benches/client.rs | 32 +++--------------------------- benches/client_mock_tcp.rs | 29 +-------------------------- benches/server.rs | 40 +------------------------------------- examples/server.rs | 2 +- 6 files changed, 9 insertions(+), 133 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 56525542..1004ea7f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,3 +20,6 @@ cookie = "*" time = "*" mucell = "*" +[dev-dependencies] +curl = "*" + diff --git a/README.md b/README.md index fef3a77c..87a62fee 100644 --- a/README.md +++ b/README.md @@ -59,42 +59,6 @@ fn main() { } ``` -## Scientific\* Benchmarks - -[Client Bench:](./benches/client.rs) - -``` -running 3 tests -test bench_curl ... bench: 400253 ns/iter (+/- 143539) -test bench_hyper ... bench: 181703 ns/iter (+/- 46529) - -test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured -``` - -[Mock Client Bench:](./benches/client_mock_tcp.rs) - -``` -running 3 tests -test bench_mock_curl ... bench: 53987 ns/iter (+/- 1735) -test bench_mock_http ... bench: 43569 ns/iter (+/- 1409) -test bench_mock_hyper ... bench: 20996 ns/iter (+/- 1742) - -test result: ok. 0 passed; 0 failed; 0 ignored; 3 measured -``` - - -[Server Bench:](./benches/server.rs) - -``` -running 2 tests -test bench_http ... bench: 296539 ns/iter (+/- 58861) -test bench_hyper ... bench: 233069 ns/iter (+/- 90194) - -test result: ok. 0 passed; 0 failed; 0 ignored; 2 measured -``` - -\* No science was harmed in the making of this benchmark. - ## License [MIT](./LICENSE) diff --git a/benches/client.rs b/benches/client.rs index f6e9ef04..6bcee6fb 100644 --- a/benches/client.rs +++ b/benches/client.rs @@ -1,6 +1,5 @@ #![feature(macro_rules)] extern crate curl; -extern crate http; extern crate hyper; extern crate test; @@ -8,10 +7,8 @@ extern crate test; use std::fmt::{mod, Show}; use std::io::net::ip::Ipv4Addr; use hyper::server::{Request, Response, Server}; -use hyper::method::Method::Get; use hyper::header::Headers; use hyper::Client; -use hyper::client::RequestBuilder; fn listen() -> hyper::server::Listening { let server = Server::http(Ipv4Addr(127, 0, 0, 1), 0); @@ -24,16 +21,16 @@ macro_rules! try_return( Ok(v) => v, Err(..) => return } - }}) + }} +); fn handle(_r: Request, res: Response) { static BODY: &'static [u8] = b"Benchmarking hyper vs others!"; let mut res = try_return!(res.start()); - try_return!(res.write(BODY)) + try_return!(res.write(BODY)); try_return!(res.end()); } - #[bench] fn bench_curl(b: &mut test::Bencher) { let mut listening = listen(); @@ -81,26 +78,3 @@ fn bench_hyper(b: &mut test::Bencher) { listening.close().unwrap() } -/* -doesn't handle keep-alive properly... -#[bench] -fn bench_http(b: &mut test::Bencher) { - let mut listening = listen(); - let s = format!("http://{}/", listening.socket); - let url = s.as_slice(); - b.iter(|| { - let mut req: http::client::RequestWriter = http::client::RequestWriter::new( - http::method::Get, - hyper::Url::parse(url).unwrap() - ).unwrap(); - req.headers.extensions.insert("x-foo".to_string(), "Bar".to_string()); - // cant unwrap because Err contains RequestWriter, which does not implement Show - let mut res = match req.read_response() { - Ok(res) => res, - Err((_, ioe)) => panic!("http response failed = {}", ioe) - }; - res.read_to_string().unwrap(); - }); - listening.close().unwrap() -} -*/ diff --git a/benches/client_mock_tcp.rs b/benches/client_mock_tcp.rs index 1321a568..2fd2ce19 100644 --- a/benches/client_mock_tcp.rs +++ b/benches/client_mock_tcp.rs @@ -1,6 +1,5 @@ #![feature(default_type_params)] extern crate curl; -extern crate http; extern crate hyper; extern crate test; @@ -8,12 +7,10 @@ extern crate test; use std::fmt::{mod, Show}; use std::str::from_str; use std::io::{IoResult, MemReader}; -use std::io::net::ip::{SocketAddr, ToSocketAddr}; +use std::io::net::ip::SocketAddr; use std::os; use std::path::BytesContainer; -use http::connecter::Connecter; - use hyper::net; static README: &'static [u8] = include_bin!("../README.md"); @@ -117,27 +114,3 @@ fn bench_mock_hyper(b: &mut test::Bencher) { }); } -impl Connecter for MockStream { - fn connect(_addr: SocketAddr, _host: &str, _use_ssl: bool) -> IoResult { - Ok(MockStream::new()) - } -} - -#[bench] -fn bench_mock_http(b: &mut test::Bencher) { - let url = "http://127.0.0.1:1337/"; - b.iter(|| { - let mut req: http::client::RequestWriter = http::client::RequestWriter::new( - http::method::Get, - hyper::Url::parse(url).unwrap() - ).unwrap(); - req.headers.extensions.insert("x-foo".to_string(), "Bar".to_string()); - // cant unwrap because Err contains RequestWriter, which does not implement Show - let mut res = match req.read_response() { - Ok(res) => res, - Err(..) => panic!("http response failed") - }; - res.read_to_string().unwrap(); - }); -} - diff --git a/benches/server.rs b/benches/server.rs index d18bf596..6d51fe6e 100644 --- a/benches/server.rs +++ b/benches/server.rs @@ -1,14 +1,9 @@ -// You have to ctrl-C after running this benchmark, since there is no way to kill -// a rust-http server. - -extern crate http; extern crate hyper; extern crate test; use test::Bencher; -use std::io::net::ip::{SocketAddr, Ipv4Addr}; +use std::io::net::ip::Ipv4Addr; -use http::server::Server; use hyper::method::Method::Get; use hyper::server::{Request, Response}; @@ -35,36 +30,3 @@ fn bench_hyper(b: &mut Bencher) { listener.close().unwrap(); } -static mut created_http: bool = false; - -#[deriving(Clone)] -struct HttpServer; - -impl Server for HttpServer { - fn get_config(&self) -> http::server::Config { - http::server::Config { - bind_address: SocketAddr { - ip: Ipv4Addr(127, 0, 0, 1), - port: 4000 - } - } - } - - fn handle_request(&self, _: http::server::Request, res: &mut http::server::ResponseWriter) { - res.write(PHRASE).unwrap(); - } -} - -#[bench] -fn bench_http(b: &mut Bencher) { - if unsafe { !created_http } { - spawn(proc() { HttpServer.serve_forever() }); - unsafe { created_http = true } - // Mega hack because there is no way to wait for serve_forever to start: - std::io::timer::sleep(std::time::duration::Duration::seconds(1)); - } - - let url = hyper::Url::parse("http://localhost:4000").unwrap(); - b.iter(|| request(url.clone())); -} - diff --git a/examples/server.rs b/examples/server.rs index a4598793..128993b1 100644 --- a/examples/server.rs +++ b/examples/server.rs @@ -18,7 +18,7 @@ macro_rules! try_return( Err(e) => { error!("Error: {}", e); return; } } }} -) +); fn echo(mut req: Request, mut res: Response) { match req.uri {