feat: use actual values test sutie containers

This commit is contained in:
Aravinth Manivannan 2023-09-27 22:13:45 +05:30
parent cccbbba24d
commit 67f9d5f7cf
Signed by: realaravinth
GPG key ID: F8F50389936984FF

View file

@ -5,13 +5,11 @@
use std::collections::HashMap; use std::collections::HashMap;
use tokio::sync::mpsc::{self, Receiver}; use tokio::sync::mpsc::{self, Receiver};
use url::Url;
use super::results::*; use super::results::*;
use crate::complaince::result::Result as CResult; use crate::complaince::result::Result as CResult;
use crate::complaince::suite::Suite; use crate::complaince::suite::Suite;
use crate::docker::Docker;
use crate::docker::DockerLike;
use crate::utils::get_random;
pub struct SuiteRunnerState { pub struct SuiteRunnerState {
suite: Suite, suite: Suite,
@ -25,22 +23,31 @@ pub struct TestRunnerState {
impl SuiteRunnerState { impl SuiteRunnerState {
pub async fn run( pub async fn run(
container_host: &Url,
suite: &crate::complaince::suite::Suite, suite: &crate::complaince::suite::Suite,
auth: &str,
ctx: &crate::ctx::ArcCtx, ctx: &crate::ctx::ArcCtx,
) -> ArchivableSuiteResult { ) -> ArchivableSuiteResult {
let state = Self::launch_suite(suite, &ctx); let state = Self::launch_suite(container_host, suite, auth, &ctx);
state.collect_results(&ctx).await state.collect_results(&ctx).await
} }
fn launch_suite(suite: &crate::complaince::suite::Suite, ctx: &crate::ctx::ArcCtx) -> Self { 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()); let mut tests = HashMap::with_capacity(suite.tests.len());
for test in suite.tests.iter() { for test in suite.tests.iter() {
let mut env = HashMap::new(); let mut env = HashMap::new();
let auth = get_random(32); env.insert("FTEST_AUTH".into(), auth.to_owned());
env.insert("FTEST_AUTH".into(), auth.clone()); env.insert(
env.insert("FTEST_HOST".into(), get_random(32)); "FTEST_HOST".into(),
env.insert("FTEST_TARGET_HOST".into(), get_random(32)); format!("http://ftest:{}", ctx.settings.server.port),
env.insert("FTEST_USER".into(), get_random(32)); );
env.insert("FTEST_TARGET_HOST".into(), container_host.to_string());
env.insert("FTEST_USER".into(), "alice".into());
if let Some(custom_vars) = test.env_vars.clone() { if let Some(custom_vars) = test.env_vars.clone() {
env.extend(custom_vars); env.extend(custom_vars);
} }
@ -58,10 +65,10 @@ impl SuiteRunnerState {
let (tx, rx) = mpsc::channel(1); let (tx, rx) = mpsc::channel(1);
{ {
let mut w = ctx.results.write().unwrap(); let mut w = ctx.results.write().unwrap();
w.insert(auth.clone(), tx); w.insert(auth.to_owned(), tx);
} }
tests.insert( tests.insert(
auth.clone(), auth.to_owned(),
TestRunnerState { TestRunnerState {
container_name: name, container_name: name,
rx, rx,
@ -186,6 +193,7 @@ mod tests {
#[actix_rt::test] #[actix_rt::test]
async fn suite_runner_works() { async fn suite_runner_works() {
const LOGS: &str = "SUITE RUNNER LOG STRING"; const LOGS: &str = "SUITE RUNNER LOG STRING";
const AUTH: &str = "asdfasdfasdfadsf";
let settings = Settings::new().unwrap(); let settings = Settings::new().unwrap();
let ctx = Ctx::new(settings.clone()).await; let ctx = Ctx::new(settings.clone()).await;
@ -216,7 +224,7 @@ mod tests {
tests: vec![dummy_test.clone(), dummy_test2.clone()], tests: vec![dummy_test.clone(), dummy_test2.clone()],
}; };
let state = SuiteRunnerState::launch_suite(&suite, &ctx); let state = SuiteRunnerState::launch_suite(&suite, AUTH, &ctx);
assert_eq!(state.tests.len(), 2); assert_eq!(state.tests.len(), 2);
std::thread::sleep(std::time::Duration::new(13, 0)); std::thread::sleep(std::time::Duration::new(13, 0));