Refactor libimagrt+libimagstore to pass whole configuration object
Before we extracted the store configuration from the configuration toml::Value object and passed it to the store. This is unecessary overhead. Now we pass the whole configuration object and let the store extract the required values.
This commit is contained in:
parent
174d8d76e9
commit
0ed636bb06
10 changed files with 24 additions and 33 deletions
|
@ -24,7 +24,6 @@ use std::process::exit;
|
||||||
|
|
||||||
pub use clap::App;
|
pub use clap::App;
|
||||||
use toml::Value;
|
use toml::Value;
|
||||||
use toml_query::read::TomlValueReadExt;
|
|
||||||
|
|
||||||
use clap::{Arg, ArgMatches};
|
use clap::{Arg, ArgMatches};
|
||||||
use log;
|
use log;
|
||||||
|
@ -138,22 +137,12 @@ impl<'a> Runtime<'a> {
|
||||||
debug!("RTP path = {:?}", rtp);
|
debug!("RTP path = {:?}", rtp);
|
||||||
debug!("Store path = {:?}", storepath);
|
debug!("Store path = {:?}", storepath);
|
||||||
|
|
||||||
let store_config = match config {
|
|
||||||
Some(ref c) => c.read("store").chain_err(|| RuntimeErrorKind::Instantiate)?.cloned(),
|
|
||||||
None => None,
|
|
||||||
};
|
|
||||||
|
|
||||||
if matches.is_present(Runtime::arg_debugging_name()) {
|
|
||||||
debug!("Config: {:?}\n", config);
|
|
||||||
debug!("Store-config: {:?}\n", store_config);
|
|
||||||
}
|
|
||||||
|
|
||||||
let store_result = if cli_app.use_inmemory_fs() {
|
let store_result = if cli_app.use_inmemory_fs() {
|
||||||
Store::new_with_backend(storepath,
|
Store::new_with_backend(storepath,
|
||||||
store_config,
|
&config,
|
||||||
Box::new(InMemoryFileAbstraction::new()))
|
Box::new(InMemoryFileAbstraction::new()))
|
||||||
} else {
|
} else {
|
||||||
Store::new(storepath, store_config)
|
Store::new(storepath, &config)
|
||||||
};
|
};
|
||||||
|
|
||||||
store_result.map(|store| {
|
store_result.map(|store| {
|
||||||
|
|
|
@ -27,10 +27,10 @@ use toml_query::read::TomlValueReadExt;
|
||||||
|
|
||||||
/// Checks whether the store configuration has a key "implicit-create" which maps to a boolean
|
/// Checks whether the store configuration has a key "implicit-create" which maps to a boolean
|
||||||
/// value. If that key is present, the boolean is returned, otherwise false is returned.
|
/// value. If that key is present, the boolean is returned, otherwise false is returned.
|
||||||
pub fn config_implicit_store_create_allowed(config: Option<&Value>) -> Result<bool> {
|
pub fn config_implicit_store_create_allowed(config: &Option<Value>) -> Result<bool> {
|
||||||
let key = "implicit-create";
|
let key = "store.implicit-create";
|
||||||
|
|
||||||
if let Some(t) = config {
|
if let Some(ref t) = *config {
|
||||||
t.read(key)?
|
t.read(key)?
|
||||||
.ok_or(SE::from_kind(SEK::ConfigKeyMissingError(key)))?
|
.ok_or(SE::from_kind(SEK::ConfigKeyMissingError(key)))?
|
||||||
.as_bool()
|
.as_bool()
|
||||||
|
@ -47,31 +47,33 @@ mod tests {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_implicit_store_create_allowed_no_toml() {
|
fn test_implicit_store_create_allowed_no_toml() {
|
||||||
assert!(!config_implicit_store_create_allowed(None));
|
assert!(!config_implicit_store_create_allowed(&None).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_implicit_store_create_allowed_toml_empty() {
|
fn test_implicit_store_create_allowed_toml_empty() {
|
||||||
let config = toml_from_str("").unwrap();
|
let config = toml_from_str("").unwrap();
|
||||||
assert!(!config_implicit_store_create_allowed(Some(config).as_ref()));
|
assert!(config_implicit_store_create_allowed(&Some(config)).is_err());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_implicit_store_create_allowed_toml_false() {
|
fn test_implicit_store_create_allowed_toml_false() {
|
||||||
let config = toml_from_str(r#"
|
let config = toml_from_str(r#"
|
||||||
|
[store]
|
||||||
implicit-create = false
|
implicit-create = false
|
||||||
"#).unwrap();
|
"#).unwrap();
|
||||||
|
|
||||||
assert!(!config_implicit_store_create_allowed(Some(config).as_ref()));
|
assert!(!config_implicit_store_create_allowed(&Some(config)).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_implicit_store_create_allowed_toml_true() {
|
fn test_implicit_store_create_allowed_toml_true() {
|
||||||
let config = toml_from_str(r#"
|
let config = toml_from_str(r#"
|
||||||
|
[store]
|
||||||
implicit-create = true
|
implicit-create = true
|
||||||
"#).unwrap();
|
"#).unwrap();
|
||||||
|
|
||||||
assert!(config_implicit_store_create_allowed(Some(config).as_ref()));
|
assert!(config_implicit_store_create_allowed(&Some(config)).unwrap());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -236,7 +236,7 @@ impl Store {
|
||||||
///
|
///
|
||||||
/// - On success: Store object
|
/// - On success: Store object
|
||||||
///
|
///
|
||||||
pub fn new(location: PathBuf, store_config: Option<&Value>) -> Result<Store> {
|
pub fn new(location: PathBuf, store_config: &Option<Value>) -> Result<Store> {
|
||||||
let backend = Box::new(FSFileAbstraction::new());
|
let backend = Box::new(FSFileAbstraction::new());
|
||||||
Store::new_with_backend(location, store_config, backend)
|
Store::new_with_backend(location, store_config, backend)
|
||||||
}
|
}
|
||||||
|
@ -246,7 +246,7 @@ impl Store {
|
||||||
///
|
///
|
||||||
/// Do not use directly, only for testing purposes.
|
/// Do not use directly, only for testing purposes.
|
||||||
pub fn new_with_backend(location: PathBuf,
|
pub fn new_with_backend(location: PathBuf,
|
||||||
store_config: Option<&Value>,
|
store_config: &Option<Value>,
|
||||||
backend: Box<FileAbstraction>) -> Result<Store> {
|
backend: Box<FileAbstraction>) -> Result<Store> {
|
||||||
use configuration::*;
|
use configuration::*;
|
||||||
|
|
||||||
|
@ -1293,7 +1293,7 @@ mod store_tests {
|
||||||
|
|
||||||
pub fn get_store() -> Store {
|
pub fn get_store() -> Store {
|
||||||
let backend = Box::new(InMemoryFileAbstraction::new());
|
let backend = Box::new(InMemoryFileAbstraction::new());
|
||||||
Store::new_with_backend(PathBuf::from("/"), None, backend).unwrap()
|
Store::new_with_backend(PathBuf::from("/"), &None, backend).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -1346,7 +1346,7 @@ mod store_tests {
|
||||||
let backend = StdIoFileAbstraction::new(&mut input, output.clone(), mapper).unwrap();
|
let backend = StdIoFileAbstraction::new(&mut input, output.clone(), mapper).unwrap();
|
||||||
let backend = Box::new(backend);
|
let backend = Box::new(backend);
|
||||||
|
|
||||||
Store::new_with_backend(PathBuf::from("/"), None, backend).unwrap()
|
Store::new_with_backend(PathBuf::from("/"), &None, backend).unwrap()
|
||||||
};
|
};
|
||||||
|
|
||||||
for n in 1..100 {
|
for n in 1..100 {
|
||||||
|
@ -1619,7 +1619,7 @@ mod store_tests {
|
||||||
let backend = InMemoryFileAbstraction::new();
|
let backend = InMemoryFileAbstraction::new();
|
||||||
let backend = Box::new(backend);
|
let backend = Box::new(backend);
|
||||||
|
|
||||||
Store::new_with_backend(PathBuf::from("/"), None, backend).unwrap()
|
Store::new_with_backend(PathBuf::from("/"), &None, backend).unwrap()
|
||||||
};
|
};
|
||||||
|
|
||||||
for n in 1..100 {
|
for n in 1..100 {
|
||||||
|
@ -1694,7 +1694,7 @@ mod store_tests {
|
||||||
let backend = StdIoFileAbstraction::new(&mut input, output, mapper).unwrap();
|
let backend = StdIoFileAbstraction::new(&mut input, output, mapper).unwrap();
|
||||||
let backend = Box::new(backend);
|
let backend = Box::new(backend);
|
||||||
|
|
||||||
Store::new_with_backend(PathBuf::from("/"), None, backend).unwrap()
|
Store::new_with_backend(PathBuf::from("/"), &None, backend).unwrap()
|
||||||
};
|
};
|
||||||
|
|
||||||
// Replacing the backend
|
// Replacing the backend
|
||||||
|
|
|
@ -38,7 +38,7 @@ mod test {
|
||||||
use libimagstore::file_abstraction::InMemoryFileAbstraction;
|
use libimagstore::file_abstraction::InMemoryFileAbstraction;
|
||||||
|
|
||||||
let backend = Box::new(InMemoryFileAbstraction::new());
|
let backend = Box::new(InMemoryFileAbstraction::new());
|
||||||
Store::new_with_backend(PathBuf::from("/"), None, backend).unwrap()
|
Store::new_with_backend(PathBuf::from("/"), &None, backend).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -130,7 +130,7 @@ mod tests {
|
||||||
pub fn get_store() -> Store {
|
pub fn get_store() -> Store {
|
||||||
use libimagstore::store::InMemoryFileAbstraction;
|
use libimagstore::store::InMemoryFileAbstraction;
|
||||||
let backend = Box::new(InMemoryFileAbstraction::new());
|
let backend = Box::new(InMemoryFileAbstraction::new());
|
||||||
Store::new_with_backend(PathBuf::from("/"), None, backend).unwrap()
|
Store::new_with_backend(PathBuf::from("/"), &None, backend).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -225,7 +225,7 @@ mod tests {
|
||||||
pub fn get_store() -> Store {
|
pub fn get_store() -> Store {
|
||||||
use libimagstore::store::InMemoryFileAbstraction;
|
use libimagstore::store::InMemoryFileAbstraction;
|
||||||
let backend = Box::new(InMemoryFileAbstraction::new());
|
let backend = Box::new(InMemoryFileAbstraction::new());
|
||||||
Store::new_with_backend(PathBuf::from("/"), None, backend).unwrap()
|
Store::new_with_backend(PathBuf::from("/"), &None, backend).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -116,7 +116,7 @@ mod tests {
|
||||||
fn get_store() -> Store {
|
fn get_store() -> Store {
|
||||||
use libimagstore::file_abstraction::InMemoryFileAbstraction;
|
use libimagstore::file_abstraction::InMemoryFileAbstraction;
|
||||||
let backend = Box::new(InMemoryFileAbstraction::new());
|
let backend = Box::new(InMemoryFileAbstraction::new());
|
||||||
Store::new_with_backend(PathBuf::from("/"), None, backend).unwrap()
|
Store::new_with_backend(PathBuf::from("/"), &None, backend).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -421,7 +421,7 @@ mod tests {
|
||||||
pub fn get_store() -> Store {
|
pub fn get_store() -> Store {
|
||||||
use libimagstore::file_abstraction::InMemoryFileAbstraction;
|
use libimagstore::file_abstraction::InMemoryFileAbstraction;
|
||||||
let backend = Box::new(InMemoryFileAbstraction::new());
|
let backend = Box::new(InMemoryFileAbstraction::new());
|
||||||
Store::new_with_backend(PathBuf::from("/"), None, backend).unwrap()
|
Store::new_with_backend(PathBuf::from("/"), &None, backend).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -778,7 +778,7 @@ mod test {
|
||||||
pub fn get_store() -> Store {
|
pub fn get_store() -> Store {
|
||||||
use libimagstore::file_abstraction::InMemoryFileAbstraction;
|
use libimagstore::file_abstraction::InMemoryFileAbstraction;
|
||||||
let backend = Box::new(InMemoryFileAbstraction::new());
|
let backend = Box::new(InMemoryFileAbstraction::new());
|
||||||
Store::new_with_backend(PathBuf::from("/"), None, backend).unwrap()
|
Store::new_with_backend(PathBuf::from("/"), &None, backend).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -225,7 +225,7 @@ mod tests {
|
||||||
pub fn get_store() -> Store {
|
pub fn get_store() -> Store {
|
||||||
use libimagstore::file_abstraction::InMemoryFileAbstraction;
|
use libimagstore::file_abstraction::InMemoryFileAbstraction;
|
||||||
let fs = InMemoryFileAbstraction::new();
|
let fs = InMemoryFileAbstraction::new();
|
||||||
Store::new_with_backend(PathBuf::from("/"), None, Box::new(fs)).unwrap()
|
Store::new_with_backend(PathBuf::from("/"), &None, Box::new(fs)).unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Reference in a new issue