From bd6afe2fd9ea7efc1353dea38ff6efc77924bfa8 Mon Sep 17 00:00:00 2001 From: Aravinth Manivannan Date: Wed, 27 Sep 2023 23:18:46 +0530 Subject: [PATCH] fix: auth is per test, so in-memory is sufficient --- ...757943787cc5698f1f78942150eea869abcc3.json | 16 ------ ...7542415b79ed6cbc2e7468e60b078dad5b53d.json | 17 ------ ...cc5c07915bff6276bd5005fd7221a76741e8b.json | 52 ------------------- ...dc90dd7c999a585e6b7b79459545bb583daa0.json | 52 ------------------- ...a1360c49cf7d0f1eb4eeea73117cda7eefe91.json | 16 ------ ...49f86699411f7a0c1bc2db5ab6125cd5c2828.json | 14 ----- ...aa8107433f6593077ee4197ff80cf2dc1f643.json | 14 ----- ...d93e22354dfe90d461c4a8e7469887cef63d6.json | 22 -------- migrations/20230927145504_ftest_jobs.sql | 1 - src/db.rs | 31 +++++------ src/runner/suite.rs | 11 ++-- 11 files changed, 20 insertions(+), 226 deletions(-) delete mode 100644 .sqlx/query-1a317e97df24ca0cd8e9e70e400757943787cc5698f1f78942150eea869abcc3.json delete mode 100644 .sqlx/query-1b8b3e3dac6353829abcd3c49617542415b79ed6cbc2e7468e60b078dad5b53d.json delete mode 100644 .sqlx/query-74bacf397f38e738e9d8dcc9ad5cc5c07915bff6276bd5005fd7221a76741e8b.json delete mode 100644 .sqlx/query-8f43686f9512d4e3f75e000515bdc90dd7c999a585e6b7b79459545bb583daa0.json delete mode 100644 .sqlx/query-985c4f76d8ccef02d4c1c47628fa1360c49cf7d0f1eb4eeea73117cda7eefe91.json delete mode 100644 .sqlx/query-c43b464586d8b356ef09ebff65649f86699411f7a0c1bc2db5ab6125cd5c2828.json delete mode 100644 .sqlx/query-f41b0fa86f004be0f412517ae43aa8107433f6593077ee4197ff80cf2dc1f643.json delete mode 100644 .sqlx/query-f93894995de10d5eb0dc6fd249fd93e22354dfe90d461c4a8e7469887cef63d6.json diff --git a/.sqlx/query-1a317e97df24ca0cd8e9e70e400757943787cc5698f1f78942150eea869abcc3.json b/.sqlx/query-1a317e97df24ca0cd8e9e70e400757943787cc5698f1f78942150eea869abcc3.json deleted file mode 100644 index eb54c4b..0000000 --- a/.sqlx/query-1a317e97df24ca0cd8e9e70e400757943787cc5698f1f78942150eea869abcc3.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n UPDATE\n ftest_jobs\n SET\n job_state = (SELECT ID FROM ftest_job_states WHERE name = $1),\n scheduled_at = $2\n WHERE auth = $3;", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Text", - "Timestamptz", - "Text" - ] - }, - "nullable": [] - }, - "hash": "1a317e97df24ca0cd8e9e70e400757943787cc5698f1f78942150eea869abcc3" -} diff --git a/.sqlx/query-1b8b3e3dac6353829abcd3c49617542415b79ed6cbc2e7468e60b078dad5b53d.json b/.sqlx/query-1b8b3e3dac6353829abcd3c49617542415b79ed6cbc2e7468e60b078dad5b53d.json deleted file mode 100644 index 82eb85a..0000000 --- a/.sqlx/query-1b8b3e3dac6353829abcd3c49617542415b79ed6cbc2e7468e60b078dad5b53d.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "INSERT INTO ftest_jobs\n (commit_hash, job_state, auth, created_at)\n VALUES ($1, (SELECT ID FROM ftest_job_states WHERE name = $2), $3, $4)", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Varchar", - "Text", - "Varchar", - "Timestamptz" - ] - }, - "nullable": [] - }, - "hash": "1b8b3e3dac6353829abcd3c49617542415b79ed6cbc2e7468e60b078dad5b53d" -} diff --git a/.sqlx/query-74bacf397f38e738e9d8dcc9ad5cc5c07915bff6276bd5005fd7221a76741e8b.json b/.sqlx/query-74bacf397f38e738e9d8dcc9ad5cc5c07915bff6276bd5005fd7221a76741e8b.json deleted file mode 100644 index 269ea82..0000000 --- a/.sqlx/query-74bacf397f38e738e9d8dcc9ad5cc5c07915bff6276bd5005fd7221a76741e8b.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n SELECT\n ftest_jobs.ID,\n ftest_jobs.commit_hash,\n ftest_job_states.name,\n ftest_jobs.created_at,\n ftest_jobs.scheduled_at,\n ftest_jobs.finished_at\n\n FROM ftest_jobs\n INNER JOIN\n ftest_job_states\n ON\n ftest_job_states.ID = ftest_jobs.job_state\n WHERE\n ftest_job_states.name = $1;", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "id", - "type_info": "Int4" - }, - { - "ordinal": 1, - "name": "commit_hash", - "type_info": "Varchar" - }, - { - "ordinal": 2, - "name": "name", - "type_info": "Varchar" - }, - { - "ordinal": 3, - "name": "created_at", - "type_info": "Timestamptz" - }, - { - "ordinal": 4, - "name": "scheduled_at", - "type_info": "Timestamptz" - }, - { - "ordinal": 5, - "name": "finished_at", - "type_info": "Timestamptz" - } - ], - "parameters": { - "Left": [ - "Text" - ] - }, - "nullable": [ - false, - false, - false, - false, - true, - true - ] - }, - "hash": "74bacf397f38e738e9d8dcc9ad5cc5c07915bff6276bd5005fd7221a76741e8b" -} diff --git a/.sqlx/query-8f43686f9512d4e3f75e000515bdc90dd7c999a585e6b7b79459545bb583daa0.json b/.sqlx/query-8f43686f9512d4e3f75e000515bdc90dd7c999a585e6b7b79459545bb583daa0.json deleted file mode 100644 index 75f0903..0000000 --- a/.sqlx/query-8f43686f9512d4e3f75e000515bdc90dd7c999a585e6b7b79459545bb583daa0.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n SELECT\n ftest_jobs.ID,\n ftest_jobs.commit_hash,\n ftest_job_states.name,\n ftest_jobs.created_at,\n ftest_jobs.scheduled_at,\n ftest_jobs.finished_at\n\n FROM ftest_jobs\n INNER JOIN\n ftest_job_states\n ON\n ftest_job_states.ID = ftest_jobs.job_state\n WHERE\n ftest_jobs.commit_hash = $1", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "id", - "type_info": "Int4" - }, - { - "ordinal": 1, - "name": "commit_hash", - "type_info": "Varchar" - }, - { - "ordinal": 2, - "name": "name", - "type_info": "Varchar" - }, - { - "ordinal": 3, - "name": "created_at", - "type_info": "Timestamptz" - }, - { - "ordinal": 4, - "name": "scheduled_at", - "type_info": "Timestamptz" - }, - { - "ordinal": 5, - "name": "finished_at", - "type_info": "Timestamptz" - } - ], - "parameters": { - "Left": [ - "Text" - ] - }, - "nullable": [ - false, - false, - false, - false, - true, - true - ] - }, - "hash": "8f43686f9512d4e3f75e000515bdc90dd7c999a585e6b7b79459545bb583daa0" -} diff --git a/.sqlx/query-985c4f76d8ccef02d4c1c47628fa1360c49cf7d0f1eb4eeea73117cda7eefe91.json b/.sqlx/query-985c4f76d8ccef02d4c1c47628fa1360c49cf7d0f1eb4eeea73117cda7eefe91.json deleted file mode 100644 index ccccfa8..0000000 --- a/.sqlx/query-985c4f76d8ccef02d4c1c47628fa1360c49cf7d0f1eb4eeea73117cda7eefe91.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n UPDATE\n ftest_jobs\n SET\n job_state = (SELECT ID FROM ftest_job_states WHERE name = $1),\n finished_at = $2\n WHERE auth = $3;", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Text", - "Timestamptz", - "Text" - ] - }, - "nullable": [] - }, - "hash": "985c4f76d8ccef02d4c1c47628fa1360c49cf7d0f1eb4eeea73117cda7eefe91" -} diff --git a/.sqlx/query-c43b464586d8b356ef09ebff65649f86699411f7a0c1bc2db5ab6125cd5c2828.json b/.sqlx/query-c43b464586d8b356ef09ebff65649f86699411f7a0c1bc2db5ab6125cd5c2828.json deleted file mode 100644 index fb2eccc..0000000 --- a/.sqlx/query-c43b464586d8b356ef09ebff65649f86699411f7a0c1bc2db5ab6125cd5c2828.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "INSERT INTO ftest_job_states\n (name) VALUES ($1) ON CONFLICT (name) DO NOTHING;", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Varchar" - ] - }, - "nullable": [] - }, - "hash": "c43b464586d8b356ef09ebff65649f86699411f7a0c1bc2db5ab6125cd5c2828" -} diff --git a/.sqlx/query-f41b0fa86f004be0f412517ae43aa8107433f6593077ee4197ff80cf2dc1f643.json b/.sqlx/query-f41b0fa86f004be0f412517ae43aa8107433f6593077ee4197ff80cf2dc1f643.json deleted file mode 100644 index cd50734..0000000 --- a/.sqlx/query-f41b0fa86f004be0f412517ae43aa8107433f6593077ee4197ff80cf2dc1f643.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "\n DELETE FROM\n ftest_jobs\n WHERE commit_hash = $1;", - "describe": { - "columns": [], - "parameters": { - "Left": [ - "Text" - ] - }, - "nullable": [] - }, - "hash": "f41b0fa86f004be0f412517ae43aa8107433f6593077ee4197ff80cf2dc1f643" -} diff --git a/.sqlx/query-f93894995de10d5eb0dc6fd249fd93e22354dfe90d461c4a8e7469887cef63d6.json b/.sqlx/query-f93894995de10d5eb0dc6fd249fd93e22354dfe90d461c4a8e7469887cef63d6.json deleted file mode 100644 index 33afca3..0000000 --- a/.sqlx/query-f93894995de10d5eb0dc6fd249fd93e22354dfe90d461c4a8e7469887cef63d6.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "db_name": "PostgreSQL", - "query": "SELECT EXISTS (SELECT 1 from ftest_job_states WHERE name = $1)", - "describe": { - "columns": [ - { - "ordinal": 0, - "name": "exists", - "type_info": "Bool" - } - ], - "parameters": { - "Left": [ - "Text" - ] - }, - "nullable": [ - null - ] - }, - "hash": "f93894995de10d5eb0dc6fd249fd93e22354dfe90d461c4a8e7469887cef63d6" -} diff --git a/migrations/20230927145504_ftest_jobs.sql b/migrations/20230927145504_ftest_jobs.sql index 04462e0..fca3ee7 100644 --- a/migrations/20230927145504_ftest_jobs.sql +++ b/migrations/20230927145504_ftest_jobs.sql @@ -6,7 +6,6 @@ CREATE TABLE IF NOT EXISTS ftest_job_states ( CREATE TABLE IF NOT EXISTS ftest_jobs ( commit_hash VARCHAR(40) NOT NULL UNIQUE, job_state INTEGER references ftest_job_states(ID) ON DELETE CASCADE, - auth VARCHAR(32) NOT NULL UNIQUE, created_at timestamptz NOT NULL DEFAULT now(), scheduled_at timestamptz DEFAULT NULL, finished_at timestamptz DEFAULT NULL, diff --git a/src/db.rs b/src/db.rs index f560d61..74953ba 100644 --- a/src/db.rs +++ b/src/db.rs @@ -134,26 +134,24 @@ impl Database { } } - pub async fn add_job(&self, commit_hash: &str) -> ServiceResult { - let auth = crate::utils::get_random(32); + pub async fn add_job(&self, commit_hash: &str) -> ServiceResult<()> { let now = now_unix_time_stamp(); sqlx::query!( "INSERT INTO ftest_jobs - (commit_hash, job_state, auth, created_at) - VALUES ($1, (SELECT ID FROM ftest_job_states WHERE name = $2), $3, $4)", + (commit_hash, job_state, created_at) + VALUES ($1, (SELECT ID FROM ftest_job_states WHERE name = $2), $3)", commit_hash, &JOB_STATE_CREATE.name, - &auth, now ) .execute(&self.pool) .await .map_err(map_register_err)?; - Ok(auth) + Ok(()) } - pub async fn mark_job_scheduled(&self, auth: &str) -> ServiceResult<()> { + pub async fn mark_job_scheduled(&self, commit_hash: &str) -> ServiceResult<()> { let now = now_unix_time_stamp(); sqlx::query!( " @@ -162,10 +160,10 @@ impl Database { SET job_state = (SELECT ID FROM ftest_job_states WHERE name = $1), scheduled_at = $2 - WHERE auth = $3;", + WHERE commit_hash = $3;", &JOB_STATE_RUNNING.name, now, - auth, + commit_hash, ) .execute(&self.pool) .await @@ -174,7 +172,7 @@ impl Database { Ok(()) } - pub async fn mark_job_finished(&self, auth: &str) -> ServiceResult<()> { + pub async fn mark_job_finished(&self, commit_hash: &str) -> ServiceResult<()> { let now = now_unix_time_stamp(); sqlx::query!( " @@ -183,10 +181,10 @@ impl Database { SET job_state = (SELECT ID FROM ftest_job_states WHERE name = $1), finished_at = $2 - WHERE auth = $3;", + WHERE commit_hash = $3;", &JOB_STATE_FINISH.name, now, - auth, + commit_hash, ) .execute(&self.pool) .await @@ -272,7 +270,7 @@ impl Database { let res = sqlx::query_as!( SchedulerJob, "SELECT - auth, commit_hash + commit_hash FROM ftest_jobs WHERE @@ -319,7 +317,6 @@ pub fn map_row_not_found_err(e: sqlx::Error, row_not_found: ServiceError) -> Ser #[derive(Clone, Debug, PartialEq, Eq)] pub struct SchedulerJob { pub commit_hash: String, - pub auth: String, } #[derive(Clone, Debug, PartialEq, Eq)] @@ -414,7 +411,7 @@ mod tests { let _ = db.delete_job(COMMIT_HASH).await; let _ = db.delete_job(COMMIT_HASH2).await; - let auth = db.add_job(COMMIT_HASH).await.unwrap(); + db.add_job(COMMIT_HASH).await.unwrap(); let job = db.get_job(COMMIT_HASH).await.unwrap(); db.add_job(COMMIT_HASH2).await.unwrap(); let job2 = db.get_job(COMMIT_HASH2).await.unwrap(); @@ -432,7 +429,7 @@ mod tests { vec![job, job2.clone()] ); - db.mark_job_scheduled(&auth).await.unwrap(); + db.mark_job_scheduled(COMMIT_HASH).await.unwrap(); let job = db.get_job(COMMIT_HASH).await.unwrap(); assert!(job.scheduled_at.is_some()); assert_eq!( @@ -440,7 +437,7 @@ mod tests { vec![job] ); - db.mark_job_finished(&auth).await.unwrap(); + db.mark_job_finished(COMMIT_HASH).await.unwrap(); let job = db.get_job(COMMIT_HASH).await.unwrap(); assert!(job.finished_at.is_some()); assert_eq!( diff --git a/src/runner/suite.rs b/src/runner/suite.rs index f1cfb4e..c0be6b3 100644 --- a/src/runner/suite.rs +++ b/src/runner/suite.rs @@ -10,12 +10,14 @@ use url::Url; use super::results::*; use crate::complaince::result::Result as CResult; use crate::complaince::suite::Suite; +use crate::utils::get_random; pub struct SuiteRunnerState { suite: Suite, tests: HashMap, } +#[derive(Debug)] pub struct TestRunnerState { rx: Receiver, container_name: String, @@ -25,21 +27,21 @@ impl SuiteRunnerState { pub async fn run( container_host: &Url, suite: &crate::complaince::suite::Suite, - auth: &str, ctx: &crate::ctx::ArcCtx, ) -> ArchivableSuiteResult { - let state = Self::launch_suite(container_host, suite, auth, &ctx); + let state = Self::launch_suite(container_host, suite, &ctx); state.collect_results(&ctx).await } fn launch_suite( container_host: &Url, suite: &crate::complaince::suite::Suite, - auth: &str, ctx: &crate::ctx::ArcCtx, ) -> Self { let mut tests = HashMap::with_capacity(suite.tests.len()); for test in suite.tests.iter() { + let auth = get_random(32); + println!("starting test {}", test.name); let mut env = HashMap::new(); env.insert("FTEST_AUTH".into(), auth.to_owned()); env.insert( @@ -75,6 +77,7 @@ impl SuiteRunnerState { }, ); } + println!("{:?}", tests); SuiteRunnerState { suite: suite.clone(), tests, @@ -193,7 +196,6 @@ mod tests { #[actix_rt::test] async fn suite_runner_works() { const LOGS: &str = "SUITE RUNNER LOG STRING"; - const AUTH: &str = "asdfasdfasdfadsf"; let settings = Settings::new().unwrap(); let ctx = Ctx::new(settings.clone()).await; @@ -227,7 +229,6 @@ mod tests { let state = SuiteRunnerState::launch_suite( &Url::parse("http://suite_runner_works.service").unwrap(), &suite, - AUTH, &ctx, ); assert_eq!(state.tests.len(), 2);