diff --git a/examples/managed_queue/src/main.rs b/examples/managed_queue/src/main.rs index 9f350b64..7dd09c4e 100644 --- a/examples/managed_queue/src/main.rs +++ b/examples/managed_queue/src/main.rs @@ -4,6 +4,8 @@ extern crate crossbeam; extern crate rocket; +#[cfg(test)] mod tests; + use crossbeam::sync::MsQueue; use rocket::State; @@ -14,55 +16,23 @@ struct Event { struct LogChannel(MsQueue); -#[get("/push?")] -fn push(event: Event, queue: State) -> &'static str { +#[put("/push?")] +fn push(event: Event, queue: State) { queue.0.push(event); - "got it" } #[get("/pop")] fn pop(queue: State) -> String { - let e = queue.0.pop(); - e.description + let queue = &queue.0; + queue.pop().description } -// Use with: curl http://:8000/test?foo=bar +fn rocket() -> rocket::Rocket { + rocket::ignite() + .mount("/", routes![push, pop]) + .manage(LogChannel(MsQueue::new())) +} fn main() { - let q:MsQueue = MsQueue::new(); - - rocket::ignite() - .mount("/", routes![push,pop]) - .manage(LogChannel(q)) - .launch(); - + rocket().launch(); } - -#[cfg(test)] -mod test { - use super::rocket; - use rocket::testing::MockRequest; - use rocket::http::Status; - use rocket::http::Method::*; - use crossbeam::sync::MsQueue; - use std::{thread, time}; - use super::LogChannel; - use super::Event; - - #[test] - fn test_get() { - let q: MsQueue = MsQueue::new(); - let rocket = rocket::ignite().manage(LogChannel(q)).mount("/", routes![super::push, super::pop]); - let mut req = MockRequest::new(Get, "/push?description=test1"); - let response = req.dispatch_with(&rocket); - assert_eq!(response.status(), Status::Ok); - - let ten_millis = time::Duration::from_millis(10); - thread::sleep(ten_millis); - - let mut req = MockRequest::new(Get, "/pop"); - let mut response = req.dispatch_with(&rocket); - let body_str = response.body().and_then(|body| body.into_string()); - assert_eq!(body_str, Some("test1".to_string())); - } -} \ No newline at end of file diff --git a/examples/managed_queue/src/tests.rs b/examples/managed_queue/src/tests.rs new file mode 100644 index 00000000..c6382de7 --- /dev/null +++ b/examples/managed_queue/src/tests.rs @@ -0,0 +1,18 @@ +use super::rocket; + +use rocket::testing::MockRequest; +use rocket::http::Status; +use rocket::http::Method::*; + +#[test] +fn test_push_pop() { + let rocket = rocket(); + + let mut req = MockRequest::new(Put, "/push?description=test1"); + let response = req.dispatch_with(&rocket); + assert_eq!(response.status(), Status::Ok); + + let mut req = MockRequest::new(Get, "/pop"); + let mut response = req.dispatch_with(&rocket); + assert_eq!(response.body_string(), Some("test1".to_string())); +}