#![cfg_attr(test, feature(test))] #[macro_use] extern crate rocket; use rocket::config::{Environment, Config, LoggingLevel}; #[get("/", format = "application/json")] fn get() -> &'static str { "get" } #[post("/", format = "application/json")] fn post() -> &'static str { "post" } fn rocket() -> rocket::Rocket { let config = Config::build(Environment::Production).log_level(LoggingLevel::Off); rocket::custom(config.unwrap()).mount("/", routes![get, post]) } #[allow(unused_must_use)] mod benches { extern crate test; use super::rocket; use self::test::Bencher; use rocket::local::blocking::Client; use rocket::http::{Accept, ContentType}; fn client(_rocket: rocket::Rocket) -> Option { unimplemented!("waiting for sync-client"); } #[bench] fn accept_format(b: &mut Bencher) { let client = client(rocket()).unwrap(); let request = client.get("/").header(Accept::JSON); b.iter(|| { request.clone().dispatch(); }); } #[bench] fn wrong_accept_format(b: &mut Bencher) { let client = client(rocket()).unwrap(); let request = client.get("/").header(Accept::HTML); b.iter(|| { request.clone().dispatch(); }); } #[bench] fn content_type_format(b: &mut Bencher) { let client = client(rocket()).unwrap(); let request = client.post("/").header(ContentType::JSON); b.iter(|| { request.clone().dispatch(); }); } #[bench] fn wrong_content_type_format(b: &mut Bencher) { let client = client(rocket()).unwrap(); let request = client.post("/").header(ContentType::Plain); b.iter(|| { request.clone().dispatch(); }); } }