Skip to content

Commit 2c92b44

Browse files
committed
Rust rocket removed tests
1 parent bf35d78 commit 2c92b44

File tree

6 files changed

+16
-178
lines changed

6 files changed

+16
-178
lines changed

frameworks/Rust/rocket/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[package]
2-
name = "rocket_benchmark"
2+
name = "rocket_techempower"
33
version = "0.2.0"
44
authors = ["Marcelo Barbosa <[email protected]>", "Brendan Hansknecht <[email protected]>", "Dragos Varovici <[email protected]>"]
55
edition = "2018"

frameworks/Rust/rocket/rocket.dockerfile

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
66
libpq-dev \
77
&& rm -rf /var/lib/apt/lists/*
88

9-
RUN rustup toolchain install nightly-2021-09-15 -t x86_64-unknown-linux-gnu --no-self-update --profile minimal
10-
119
ADD ./ /rocket
1210
WORKDIR /rocket
1311

14-
RUN RUSTFLAGS="-C target-cpu=native" cargo +nightly-2021-09-15 build --release
12+
RUN RUSTFLAGS="-C target-cpu=native" cargo build --release
1513

1614
EXPOSE 8000
1715

18-
CMD ./target/release/rocket_benchmark
16+
CMD ./target/release/rocket_techempower

frameworks/Rust/rocket/src/database.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,4 @@ use rocket_db_pools::{sqlx, Database};
22

33
#[derive(Database)]
44
#[database("hello_world")]
5-
#[cfg(not(test))]
6-
pub struct HelloWorld(sqlx::PgPool);
7-
8-
#[derive(Database)]
9-
#[database("hello_world")]
10-
#[cfg(test)]
11-
pub struct HelloWorld(sqlx::SqlitePool);
5+
pub struct HelloWorld(sqlx::PgPool);

frameworks/Rust/rocket/src/main.rs

Lines changed: 11 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#![feature(proc_macro_hygiene, decl_macro)]
21
#[macro_use]
32
extern crate lazy_static;
43
#[macro_use]
@@ -9,7 +8,6 @@ extern crate dotenv;
98
mod models;
109
mod random;
1110
mod database;
12-
mod request;
1311

1412
use dotenv::dotenv;
1513
use std::net::{IpAddr, Ipv4Addr};
@@ -26,7 +24,6 @@ use figment::Figment;
2624
use models::{World, Fortune, Message};
2725
use database::HelloWorld;
2826
use random::random_number;
29-
use request::RequestId;
3027

3128
#[get("/plaintext")]
3229
async fn plaintext() -> &'static str {
@@ -42,8 +39,8 @@ async fn json() -> Json<models::Message> {
4239
}
4340

4441
#[get("/db")]
45-
async fn db(mut db: Connection<HelloWorld>, id: RequestId) -> Json<World> {
46-
let number = random_number(&id);
42+
async fn db(mut db: Connection<HelloWorld>) -> Json<World> {
43+
let number = random_number();
4744

4845
let result : World = sqlx::query_as("SELECT id, randomnumber FROM World WHERE id = $1").bind(number)
4946
.fetch_one(&mut *db).await.ok().expect("error loading world");
@@ -52,12 +49,12 @@ async fn db(mut db: Connection<HelloWorld>, id: RequestId) -> Json<World> {
5249
}
5350

5451
#[get("/queries")]
55-
async fn queries_empty(db: Connection<HelloWorld>, id: RequestId) -> Json<Vec<World>> {
56-
queries(db, id,1).await
52+
async fn queries_empty(db: Connection<HelloWorld>) -> Json<Vec<World>> {
53+
queries(db,1).await
5754
}
5855

5956
#[get("/queries?<q>")]
60-
async fn queries(mut db: Connection<HelloWorld>, id: RequestId, q: u16) -> Json<Vec<World>> {
57+
async fn queries(mut db: Connection<HelloWorld>, q: u16) -> Json<Vec<World>> {
6158
let q = if q == 0 {
6259
1
6360
} else if q > 500 {
@@ -69,7 +66,7 @@ async fn queries(mut db: Connection<HelloWorld>, id: RequestId, q: u16) -> Json<
6966
let mut results = Vec::with_capacity(q as usize);
7067

7168
for _ in 0..q {
72-
let query_id = random_number(&id);
69+
let query_id = random_number();
7370

7471
let result :World = sqlx::query_as("SELECT * FROM World WHERE id = $1").bind(query_id)
7572
.fetch_one(&mut *db).await.ok().expect("error loading world");
@@ -108,12 +105,12 @@ async fn fortunes(mut db: Connection<HelloWorld>) -> RawHtml<String> {
108105
}
109106

110107
#[get("/updates")]
111-
async fn updates_empty(db: Connection<HelloWorld>, id: RequestId) -> Json<Vec<World>> {
112-
updates(db, id,1).await
108+
async fn updates_empty(db: Connection<HelloWorld>) -> Json<Vec<World>> {
109+
updates(db,1).await
113110
}
114111

115112
#[get("/updates?<q>")]
116-
async fn updates(mut db: Connection<HelloWorld>, id: RequestId, q: u16) -> Json<Vec<World>> {
113+
async fn updates(mut db: Connection<HelloWorld>, q: u16) -> Json<Vec<World>> {
117114
let q = if q == 0 {
118115
1
119116
} else if q > 500 {
@@ -125,11 +122,11 @@ async fn updates(mut db: Connection<HelloWorld>, id: RequestId, q: u16) -> Json<
125122
let mut results = Vec::with_capacity(q as usize);
126123

127124
for _ in 0..q {
128-
let query_id = random_number(&id);
125+
let query_id = random_number();
129126
let mut result :World = sqlx::query_as("SELECT * FROM World WHERE id = $1").bind(query_id)
130127
.fetch_one(&mut *db).await.ok().expect("World was not found");
131128

132-
result.random_number = random_number(&id);
129+
result.random_number = random_number();
133130
results.push(result);
134131
}
135132

@@ -192,104 +189,3 @@ pub fn launch() -> Rocket<Build> {
192189
.attach(HelloWorld::init())
193190
}
194191

195-
#[cfg(test)]
196-
mod tests
197-
{
198-
use std::env;
199-
use rocket::{Rocket, Build};
200-
use rocket::{local::blocking::Client};
201-
use crate::database::HelloWorld;
202-
use rocket::fairing::{self, AdHoc};
203-
use rocket_db_pools::Database;
204-
205-
#[test]
206-
fn plaintext() {
207-
let client = create_client();
208-
209-
let response = client.get("/plaintext").dispatch();
210-
assert_eq!(response.into_string().unwrap(), "Hello, World!");
211-
}
212-
213-
#[test]
214-
fn json() {
215-
let client = create_client();
216-
217-
let response = client.get("/json").dispatch();
218-
assert_eq!(response.into_string().unwrap(), "{\"message\":\"Hello, World!\"}");
219-
}
220-
221-
#[test]
222-
fn db() {
223-
let client = create_client();
224-
225-
let response = client.get("/db").dispatch();
226-
assert_eq!(response.into_string().unwrap(), "{\"id\":1,\"randomNumber\":101}");
227-
}
228-
229-
#[test]
230-
fn queries_empty() {
231-
let client = create_client();
232-
233-
let response = client.get("/queries").dispatch();
234-
assert_eq!(response.into_string().unwrap(), "[{\"id\":1,\"randomNumber\":101}]");
235-
}
236-
237-
#[test]
238-
fn queries_non_empty() {
239-
let client = create_client();
240-
241-
let response = client.get("/queries?q=3").dispatch();
242-
assert_eq!(response.into_string().unwrap(), "[{\"id\":1,\"randomNumber\":101},{\"id\":2,\"randomNumber\":102},{\"id\":3,\"randomNumber\":103}]");
243-
}
244-
245-
#[test]
246-
fn fortunes() {
247-
let client = create_client();
248-
249-
let response = client.get("/fortunes").dispatch();
250-
assert_eq!(response.into_string().unwrap(), "<!DOCTYPE html><html><head><title>Fortunes</title></head><body><table><tr><th>id</th><th>message</th></tr><tr><td>11</td><td>&lt;script&gt;alert(&quot;This should not be displayed in a browser alert box.&quot;);&lt;&#x2f;script&gt;</td></tr><tr><td>4</td><td>A bad random number generator: 1, 1, 1, 1, 1, 4.33e+67, 1, 1, 1</td></tr><tr><td>5</td><td>A computer program does what you tell it to do, not what you want it to do.</td></tr><tr><td>2</td><td>A computer scientist is someone who fixes things that aren&#x27;t broken.</td></tr><tr><td>8</td><td>A list is only as strong as its weakest link. — Donald Knuth</td></tr><tr><td>0</td><td>Additional fortune added at request time.</td></tr><tr><td>3</td><td>After enough decimal places, nobody gives a damn.</td></tr><tr><td>7</td><td>Any program that runs right is obsolete.</td></tr><tr><td>10</td><td>Computers make very fast, very accurate mistakes.</td></tr><tr><td>6</td><td>Emacs is a nice operating system, but I prefer UNIX. — Tom Christaensen</td></tr><tr><td>9</td><td>Feature: A bug with seniority.</td></tr><tr><td>1</td><td>fortune: No such file or directory</td></tr><tr><td>12</td><td>フレームワークのベンチマーク</td></tr></table></body></html>");
251-
}
252-
253-
#[test]
254-
fn updates_empty() {
255-
let client = create_client();
256-
257-
let response = client.get("/updates").dispatch();
258-
assert_eq!(response.into_string().unwrap(), "[{\"id\":1,\"randomNumber\":2}]");
259-
}
260-
261-
#[test]
262-
fn updates_non_empty() {
263-
let client = create_client();
264-
265-
let response = client.get("/updates?q=3").dispatch();
266-
assert_eq!(response.into_string().unwrap(), "[{\"id\":1,\"randomNumber\":2},{\"id\":3,\"randomNumber\":4},{\"id\":5,\"randomNumber\":6}]");
267-
}
268-
269-
fn create_client() -> Client {
270-
env::set_var("ROCKET_BENCHMARK_DATABASE_URL", "sqlite::memory:");
271-
272-
let rocket = create_rocket();
273-
let client = Client::debug(rocket).unwrap();
274-
client
275-
}
276-
277-
fn create_rocket() -> Rocket<Build> {
278-
super::launch().attach(AdHoc::try_on_ignite("SQLx Migrations", run_migrations))
279-
}
280-
281-
async fn run_migrations(rocket: Rocket<Build>) -> fairing::Result {
282-
match HelloWorld::fetch(&rocket) {
283-
Some(db) => match sqlx::migrate!("db/migrations").run(&**db).await {
284-
Ok(_) => Ok(rocket),
285-
Err(e) => {
286-
error!("Failed to initialize HelloWorld database: {}", e);
287-
Err(rocket)
288-
}
289-
}
290-
None => Err(rocket),
291-
}
292-
}
293-
}
294-
295-

frameworks/Rust/rocket/src/random.rs

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,27 @@
11
extern crate lazy_static;
22
extern crate rand;
33

4-
#[cfg(test)]
5-
use std::collections::HashMap;
6-
use crate::request::RequestId;
7-
#[cfg(not(test))]
84
use rand::seq::SliceRandom;
9-
#[cfg(not(test))]
105
use rand::thread_rng;
116
use std::sync::Mutex;
12-
#[cfg(test)]
13-
use std::sync::atomic::{AtomicI32, Ordering};
147

15-
#[cfg(not(test))]
168
lazy_static! {
179
static ref RANDOM_ARRAY: Mutex<RandomArray> = Mutex::new(RandomArray::new(10000));
1810
}
1911

20-
#[cfg(test)]
21-
lazy_static! {
22-
static ref COUNTER_MAP: Mutex<HashMap<RequestId, AtomicI32>> = Mutex::new(HashMap::new());
23-
}
24-
25-
#[cfg(not(test))]
26-
pub fn random_number(_request_id: &RequestId) -> i32 {
12+
pub fn random_number() -> i32 {
2713
RANDOM_ARRAY
2814
.lock()
2915
.expect("Failed to lock RANDOM_ARRAY")
3016
.next()
3117
}
3218

33-
#[cfg(test)]
34-
pub fn random_number(request_id: &RequestId) -> i32 {
35-
if !COUNTER_MAP.lock().expect("Failed to lock COUNTER_MAP").contains_key(&request_id) {
36-
COUNTER_MAP.lock().expect("Failed to lock COUNTER_MAP").insert(*request_id, AtomicI32::new(1));
37-
}
38-
39-
COUNTER_MAP.lock().expect("Failed to lock COUNTER_MAP").get_key_value(request_id).expect("Could not get RequestId")
40-
.1.fetch_add(1, Ordering::Relaxed)
41-
}
42-
43-
#[cfg(not(test))]
4419
struct RandomArray {
4520
pointer: usize,
4621
size: i32,
4722
data: Vec<i32>,
4823
}
4924

50-
#[cfg(not(test))]
5125
impl RandomArray {
5226
fn new(size: i32) -> Self {
5327
let mut data: Vec<i32> = (1..=size).collect();

frameworks/Rust/rocket/src/request.rs

Lines changed: 0 additions & 24 deletions
This file was deleted.

0 commit comments

Comments
 (0)