From aef5781fdf5eca67ea7b2c04399500994090050d Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Wed, 9 Jan 2019 00:28:19 -0800 Subject: revert pg_tmp parallel tests (for now) I really want these to work, but even with jitter get frequent test failures, and CI is broken. --- rust/README.md | 4 ---- rust/src/server.rs | 19 +++++-------------- rust/tests/helpers.rs | 4 ++-- 3 files changed, 7 insertions(+), 20 deletions(-) diff --git a/rust/README.md b/rust/README.md index 33249a44..decfc74d 100644 --- a/rust/README.md +++ b/rust/README.md @@ -42,10 +42,6 @@ Build and run: Tests: - cargo test - - # if you get weird postgres errors, try running only one test at a time - # (slow and conservative) cargo test -- --test-threads 1 Note that most "integration" level tests are written in python and run by diff --git a/rust/src/server.rs b/rust/src/server.rs index 70e667be..6b389a97 100644 --- a/rust/src/server.rs +++ b/rust/src/server.rs @@ -7,9 +7,7 @@ use diesel; use diesel::pg::PgConnection; use diesel::r2d2::ConnectionManager; use dotenv::dotenv; -use rand::Rng; -use std::process::Command; -use std::{env, thread, time}; +use std::env; #[cfg(feature = "postgres")] embed_migrations!("../migrations/"); @@ -59,23 +57,16 @@ pub fn create_server() -> Result { /// CI should run tests serially. pub fn create_test_server() -> Result { dotenv().ok(); - // sleep a bit so we don't have thundering herd collisions, resuliting in - // "pg_extension_name_index" or "pg_proc_proname_args_nsp_index" or "pg_type_typname_nsp_index" - // duplicate key violations. - thread::sleep(time::Duration::from_millis( - rand::thread_rng().gen_range(0, 200), - )); - let pg_tmp = Command::new("./tests/pg_tmp.sh") - .output() - .expect("run ./tests/pg_tmp.sh to get temporary postgres DB"); - let database_url = String::from_utf8_lossy(&pg_tmp.stdout).to_string(); + let database_url = env::var("TEST_DATABASE_URL").expect("TEST_DATABASE_URL must be set"); env::set_var("DATABASE_URL", database_url); let mut server = create_server()?; server.auth_confectionary = AuthConfectionary::new_dummy(); let conn = server.db_pool.get().expect("db_pool error"); - // run migrations; this is a fresh/bare database + // create fresh database + diesel_migrations::run_pending_migrations(&conn).unwrap(); + diesel_migrations::revert_latest_migration(&conn).unwrap(); diesel_migrations::run_pending_migrations(&conn).unwrap(); Ok(server) } diff --git a/rust/tests/helpers.rs b/rust/tests/helpers.rs index 2ba94a5c..677a8855 100644 --- a/rust/tests/helpers.rs +++ b/rust/tests/helpers.rs @@ -36,7 +36,7 @@ pub fn setup_client() -> (Client, Context, Listening) { let mut iron_server = Iron::new(chain); iron_server.threads = 1; - // XXX: this isn't support to block, but it is. Disabling these tests for now. + // XXX: this isn't supposed to block, but it is. Disabling these tests for now. let iron_server = iron_server .http("localhost:9300") .expect("Failed to start HTTP server"); @@ -51,7 +51,7 @@ pub fn setup_http() -> ( iron::middleware::Chain, diesel::r2d2::PooledConnection>, ) { - let server = fatcat::create_test_server().unwrap(); + let server = server::create_test_server().unwrap(); let conn = server.db_pool.get().expect("db_pool error"); // setup auth as admin user -- cgit v1.2.3