Allow driver_url to be configurable
This commit is contained in:
parent
6fd8bf4304
commit
17a9445796
30
src/conf.rs
30
src/conf.rs
|
@ -6,9 +6,19 @@ pub struct Conf {
|
||||||
pub job_dir: String,
|
pub job_dir: String,
|
||||||
pub output_dir: String,
|
pub output_dir: String,
|
||||||
pub check_interval: Duration,
|
pub check_interval: Duration,
|
||||||
|
pub driver_url: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Conf {
|
impl Conf {
|
||||||
|
pub fn get_default_conf() -> Conf {
|
||||||
|
return Conf {
|
||||||
|
job_dir: String::from_str("jobs.d").unwrap(),
|
||||||
|
output_dir: String::from_str("results.d").unwrap(),
|
||||||
|
check_interval: Duration::new(15*60, 0),
|
||||||
|
driver_url: String::from_str("http://localhost:4444").unwrap(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
pub fn update_from_file(&mut self, f: &str) {
|
pub fn update_from_file(&mut self, f: &str) {
|
||||||
let path = std::path::Path::new(f);
|
let path = std::path::Path::new(f);
|
||||||
let mut file = match std::fs::File::open(&path) {
|
let mut file = match std::fs::File::open(&path) {
|
||||||
|
@ -58,6 +68,10 @@ impl Conf {
|
||||||
println!("{} changed from '{}' to '{}' by line in '{}'", key, self.check_interval.as_secs(), value, path.display());
|
println!("{} changed from '{}' to '{}' by line in '{}'", key, self.check_interval.as_secs(), value, path.display());
|
||||||
self.check_interval = Duration::new(converted_value, 0);
|
self.check_interval = Duration::new(converted_value, 0);
|
||||||
},
|
},
|
||||||
|
"driver_url" => {
|
||||||
|
println!("{} changed from '{}' to '{}' by line in '{}'", key, self.driver_url, value, path.display());
|
||||||
|
self.driver_url = String::from_str(value).unwrap();
|
||||||
|
}
|
||||||
_ => {
|
_ => {
|
||||||
println!("Unknown key '{}' in file '{}'", key, path.display());
|
println!("Unknown key '{}' in file '{}'", key, path.display());
|
||||||
}
|
}
|
||||||
|
@ -76,14 +90,6 @@ mod tests {
|
||||||
|
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
fn get_default_conf() -> Conf {
|
|
||||||
return Conf {
|
|
||||||
job_dir: String::from_str("jobs.d").unwrap(),
|
|
||||||
output_dir: String::from_str("results.d").unwrap(),
|
|
||||||
check_interval: Duration::new(15*60, 0),
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
fn write_conf_to_temp_file(content: &str) -> NamedTempFile {
|
fn write_conf_to_temp_file(content: &str) -> NamedTempFile {
|
||||||
let mut f = NamedTempFile::new().unwrap();
|
let mut f = NamedTempFile::new().unwrap();
|
||||||
f.write_all(content.as_bytes());
|
f.write_all(content.as_bytes());
|
||||||
|
@ -92,28 +98,30 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_not_existing() {
|
fn test_not_existing() {
|
||||||
let mut conf = get_default_conf();
|
let mut conf = Conf::get_default_conf();
|
||||||
conf.update_from_file("/not/a/real/file");
|
conf.update_from_file("/not/a/real/file");
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_set_all_values() {
|
fn test_set_all_values() {
|
||||||
let mut conf = get_default_conf();
|
let mut conf = Conf::get_default_conf();
|
||||||
let tf = write_conf_to_temp_file(r#"
|
let tf = write_conf_to_temp_file(r#"
|
||||||
job_dir = /value
|
job_dir = /value
|
||||||
output_dir=/var/lib/output
|
output_dir=/var/lib/output
|
||||||
check_interval=3600
|
check_interval=3600
|
||||||
|
driver_url = https://example.test:6666
|
||||||
"#);
|
"#);
|
||||||
let f = tf.path().to_str().unwrap();
|
let f = tf.path().to_str().unwrap();
|
||||||
conf.update_from_file(f);
|
conf.update_from_file(f);
|
||||||
assert!(String::from_str("/value").unwrap().eq(&conf.job_dir));
|
assert!(String::from_str("/value").unwrap().eq(&conf.job_dir));
|
||||||
assert!(String::from_str("/var/lib/output").unwrap().eq(&conf.output_dir));
|
assert!(String::from_str("/var/lib/output").unwrap().eq(&conf.output_dir));
|
||||||
|
assert!(String::from_str("https://example.test:6666").unwrap().eq(&conf.driver_url));
|
||||||
assert_eq!(3600, conf.check_interval.as_secs());
|
assert_eq!(3600, conf.check_interval.as_secs());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_non_numeric_check_interval_fails() {
|
fn test_non_numeric_check_interval_fails() {
|
||||||
let mut conf = get_default_conf();
|
let mut conf = Conf::get_default_conf();
|
||||||
let tf = write_conf_to_temp_file(r#"
|
let tf = write_conf_to_temp_file(r#"
|
||||||
check_interval=d3600
|
check_interval=d3600
|
||||||
"#);
|
"#);
|
||||||
|
|
|
@ -45,12 +45,7 @@ impl ThreadJob<'_> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut conf = Conf {
|
let mut conf = Conf::get_default_conf();
|
||||||
job_dir: String::from_str("jobs.d").unwrap(),
|
|
||||||
output_dir: String::from_str("results.d").unwrap(),
|
|
||||||
check_interval: Duration::new(15*60, 0),
|
|
||||||
};
|
|
||||||
|
|
||||||
conf.update_from_file("/etc/haunter/haunter.conf");
|
conf.update_from_file("/etc/haunter/haunter.conf");
|
||||||
|
|
||||||
let mut args = env::args();
|
let mut args = env::args();
|
||||||
|
|
Loading…
Reference in New Issue