global refactoring - gathering in modules and setting up for tests

pull/9/head
prplV 2024-10-28 14:53:11 +03:00
parent 8056f594a4
commit 7e521a20c5
15 changed files with 87 additions and 33 deletions

2
src/lib.rs Normal file
View File

@ -0,0 +1,2 @@
pub mod options;
pub mod utils;

View File

@ -1,19 +1,13 @@
mod config;
mod files;
mod logger;
mod prcs;
mod services;
mod signals;
mod structs;
mod options;
mod utils;
use config::*;
use log::{error, info};
use logger::setup_logger;
use signals::set_valid_destructor;
use options::config::*;
use options::logger::setup_logger;
use options::signals::set_valid_destructor;
use options::structs::*;
use std::sync::Arc;
use std::time::Duration;
use structs::*;
use tokio::sync::mpsc;
use utils::*;
@ -71,9 +65,9 @@ async fn main() {
handler.push(tokio::spawn(async move {
if set_valid_destructor(Arc::new(senders)).await.is_err() {
error!("Linux signals handler creation failed. Terminating main thread...");
return
return;
}
// todo: rework this temp construction, use async/await in signals mod
tokio::time::sleep(Duration::from_millis(200)).await;
info!("End of job. Terminating main thread...");
std::process::exit(0);
@ -89,3 +83,8 @@ async fn main() {
}
return;
}
// todo: integration tests
// todo: config pulling mechanism rework (socket)
// todo: tasks management after killing all processes
// todo:

6
src/options.rs Normal file
View File

@ -0,0 +1,6 @@
// ! gathering optional items module
pub mod config;
pub mod logger;
pub mod signals;
pub mod structs;

View File

@ -1,11 +1,10 @@
use crate::structs::*;
use crate::options::structs::*;
use log::{error, info, warn};
use redis::{Client, Commands, Connection, RedisResult};
use std::os::unix::process::CommandExt;
use std::process::Command;
use std::sync::Arc;
use std::{env, fs};
use std::fmt::format;
use tokio::time::Duration;
const CONFIG_PATH: &str = "settings.json";
@ -30,7 +29,9 @@ pub fn get_actual_config() -> Option<Processes> {
"Found local configuration, version - {}",
&local_conf.date_of_creation
);
if let Some(remote_conf) = once_get_remote_configuration(&format!("redis://{}/", local_conf.config_server)) {
if let Some(remote_conf) =
once_get_remote_configuration(&format!("redis://{}/", local_conf.config_server))
{
return match config_comparing(&local_conf, &remote_conf) {
ConfigActuality::Local => {
info!("Local config is actual");

View File

@ -13,7 +13,7 @@ use crate::utils::get_container_id;
// file_writer: BufWriter<File>,
// }
pub fn setup_logger() -> Result<(), crate::structs::CustomError> {
pub fn setup_logger() -> Result<(), crate::options::structs::CustomError> {
// if Command::new("sh").args(["-c", "mkdir logs"]).output().is_err() {
// println!("Error: Cannot init logs directory");
// std::process::exit(1);

View File

@ -1,4 +1,4 @@
use crate::structs::CustomError;
use crate::options::structs::CustomError;
use std::sync::Arc;
use tokio::io;
use tokio::sync::mpsc;

View File

@ -1,13 +1,17 @@
use crate::files::create_watcher;
use crate::files::file_handler;
use crate::prcs::{
pub mod files;
pub mod prcs;
pub mod services;
use crate::options::structs::TrackingProcess;
use files::create_watcher;
use files::file_handler;
use inotify::Inotify;
use log::{error, warn};
use prcs::{
freeze_process, is_active, is_frozen, restart_process, start_process, terminate_process,
unfreeze_process,
};
use crate::services::service_handler;
use crate::structs::TrackingProcess;
use inotify::Inotify;
use log::{error, warn};
use services::service_handler;
use std::process::Command;
use std::sync::Arc;
use tokio::join;
@ -189,10 +193,13 @@ pub fn get_container_id() -> Option<String> {
}
let id = String::from_utf8_lossy(&output.stdout).to_string();
if id.is_empty() {
return None
return None;
}
Some(String::from_utf8_lossy(&output.stdout).to_string())
},
Err(er) => { println!("failed( : {}", er); None },
}
Err(er) => {
println!("failed( : {}", er);
None
}
}
}

View File

@ -1,5 +1,5 @@
use crate::prcs::{is_active, is_frozen};
use crate::structs::{CustomError, Files};
use crate::options::structs::{CustomError, Files};
use crate::utils::prcs::{is_active, is_frozen};
use inotify::{EventMask, Inotify, WatchMask};
use log::error;
use std::borrow::BorrowMut;

View File

@ -1,4 +1,4 @@
use crate::structs::CustomError;
use crate::options::structs::CustomError;
use log::{error, warn};
use std::process::{Command, Output};
use std::sync::Arc;

View File

@ -1,5 +1,5 @@
use crate::prcs::{is_active, is_frozen};
use crate::structs::{CustomError, Services};
use crate::options::structs::{CustomError, Services};
use crate::utils::prcs::{is_active, is_frozen};
use log::{error, warn};
use std::net::{TcpStream, ToSocketAddrs};
use std::sync::Arc;

0
tests/examples/dep-file Normal file
View File

0
tests/examples/run.sh Normal file
View File

View File

@ -0,0 +1,33 @@
{
"dateOfCreation": "1721381809103",
"configServer" : "localhost",
"processes": [
{
"name": "temp-process",
"path": "/home/vladislav/web/runner-rs/examples/",
"dependencies": {
"files": [
{
"filename": "dep-file",
"src": "/home/vladislav/web/runner-rs/examples/",
"triggers": {
"onDelete": "hold",
"onChange": "stop"
}
}
],
"services": [
{
"hostname": "localhost",
"port": 8080,
"triggers": {
"wait": 10,
"delay": 2,
"onLost": "stop"
}
}
]
}
}
]
}

6
tests/start_stop.rs Normal file
View File

@ -0,0 +1,6 @@
use runner_rs::*;
#[test]
fn test() {
assert_eq!(2, 2);
}