Add a few tests to tor-config.
This commit is contained in:
parent
42ae8c7a2a
commit
b3b6a92145
|
@ -2595,6 +2595,7 @@ dependencies = [
|
||||||
"shellexpand",
|
"shellexpand",
|
||||||
"thiserror",
|
"thiserror",
|
||||||
"tracing",
|
"tracing",
|
||||||
|
"tracing-test",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -2979,6 +2980,29 @@ dependencies = [
|
||||||
"tracing-log",
|
"tracing-log",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-test"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3eb7bda2e93bbc9c5b247034acc6a4b3d04f033a3d4b8fc1cb87d4d1c7c7ebd7"
|
||||||
|
dependencies = [
|
||||||
|
"lazy_static",
|
||||||
|
"tracing-core",
|
||||||
|
"tracing-subscriber",
|
||||||
|
"tracing-test-macro",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tracing-test-macro"
|
||||||
|
version = "0.2.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4801dca35e4e2cee957c469bd4a1c370fadb7894c0d50721a40eba3523e6e91c"
|
||||||
|
dependencies = [
|
||||||
|
"lazy_static",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "try-lock"
|
name = "try-lock"
|
||||||
version = "0.2.3"
|
version = "0.2.3"
|
||||||
|
|
|
@ -25,3 +25,4 @@ directories = { version = "4.0.1", optional = true }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
dirs = "4.0.0"
|
dirs = "4.0.0"
|
||||||
|
tracing-test = "0.2.1"
|
||||||
|
|
|
@ -69,9 +69,31 @@ impl Reconfigure {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
Reconfigure::WarnOnFailures => {
|
Reconfigure::WarnOnFailures => {
|
||||||
tracing::warn!("Cannot change field {} on a running client", field.as_ref());
|
tracing::warn!("Cannot change {} on a running client.", field.as_ref());
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
use tracing_test::traced_test;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[traced_test]
|
||||||
|
fn reconfigure_helpers() {
|
||||||
|
let how = Reconfigure::AllOrNothing;
|
||||||
|
let err = how.cannot_change("the_laws_of_physics").unwrap_err();
|
||||||
|
assert_eq!(
|
||||||
|
err.to_string(),
|
||||||
|
"Cannot change the_laws_of_physics on a running client.".to_owned()
|
||||||
|
);
|
||||||
|
|
||||||
|
let how = Reconfigure::WarnOnFailures;
|
||||||
|
let ok = how.cannot_change("stuff");
|
||||||
|
assert!(ok.is_ok());
|
||||||
|
assert!(logs_contain("Cannot change stuff on a running client."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -66,3 +66,48 @@ impl<T> From<T> for MutCfg<T> {
|
||||||
MutCfg::new(config)
|
MutCfg::new(config)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn basic_constructors() {
|
||||||
|
let m = MutCfg::new(7_u32);
|
||||||
|
assert_eq!(*m.get(), 7);
|
||||||
|
let m: MutCfg<u32> = MutCfg::default();
|
||||||
|
assert_eq!(*m.get(), 0);
|
||||||
|
let m: MutCfg<u32> = 100.into();
|
||||||
|
assert_eq!(*m.get(), 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn mutate_with_existing_ref() {
|
||||||
|
let m = MutCfg::new(100_u32);
|
||||||
|
let old_ref = m.get();
|
||||||
|
m.replace(101);
|
||||||
|
assert_eq!(*old_ref, 100);
|
||||||
|
assert_eq!(*m.get(), 101);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn check_and_replace() {
|
||||||
|
let m = MutCfg::new(100_u32);
|
||||||
|
let different_100 = Arc::new(100_u32);
|
||||||
|
// won't replace, since it is a different arc.
|
||||||
|
assert!(!m.check_and_replace(&different_100, 200));
|
||||||
|
let old_100 = m.get();
|
||||||
|
assert_eq!(*old_100, 100);
|
||||||
|
assert!(m.check_and_replace(&old_100, 200));
|
||||||
|
assert_eq!(*m.get(), 200);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn map_and_replace() {
|
||||||
|
let m = MutCfg::new(100_u32);
|
||||||
|
let m_old = m.get();
|
||||||
|
m.map_and_replace(|old_val| **old_val * 20);
|
||||||
|
assert_eq!(*m.get(), 2000);
|
||||||
|
assert_eq!(*m_old, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -443,9 +443,8 @@ impl<R: Runtime> DirMgr<R> {
|
||||||
// was no current netdir.)
|
// was no current netdir.)
|
||||||
self.netdir_consensus_changed.store(true, Ordering::SeqCst);
|
self.netdir_consensus_changed.store(true, Ordering::SeqCst);
|
||||||
|
|
||||||
// TODO(nickm): need to make sure that notify gets called. But
|
// TODO(nickm): need to make sure that notify gets called. But first I should probably
|
||||||
// first I should probably refactor notify() to be more like the
|
// refactor notify() to be more like the backend for tor-events.
|
||||||
// backend for tor-events.
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
Loading…
Reference in New Issue