mod database; mod error; mod message; mod model; mod worker; use std::thread; use std::time; use chrono::prelude::*; use database::init_database_pool; use model::{Job, JobAction}; use worker::{DeployHandler, Manager, WorkerStatus}; fn main() { let now: DateTime = Utc::now(); init_database_pool(); let mut deployer: Manager = Manager::new("deploy"); let handler = DeployHandler::new(); deployer.launch_workers(4, handler); for i in 0..5000 { let job = Job::new(i, JobAction::MegaportDeploy); deployer.add_runner(job); } let wait = time::Duration::from_millis(100); while !deployer.healthcheck(WorkerStatus::Pending) { thread::sleep(wait); } let elapsed = Utc::now() - now; println!( "deployment done in : {}.{}s", elapsed.num_seconds(), elapsed.num_milliseconds(), ); }