Running healthcheck specified number of times

This commit is contained in:
Jedrzej Stuczynski
2020-01-10 15:01:12 +00:00
parent 769598d40a
commit 25575b4598
+18 -11
View File
@@ -62,7 +62,7 @@ impl HealthCheckResult {
true
}
pub fn calculate<T: NymTopology>(topology: T) -> Self {
pub fn calculate<T: NymTopology>(topology: T, iterations: usize) -> Self {
let all_paths = match topology.all_paths() {
Ok(paths) => paths,
Err(_) => return Self::zero_score(topology),
@@ -87,16 +87,20 @@ impl HealthCheckResult {
);
});
for path in all_paths {
let path_status = HealthCheckResult::check_path(&path);
for node in path {
// if value doesn't exist, something extremely weird must have happened
let current_score = score_map.get_mut(&node.pub_key.0);
if current_score.is_none() {
return Self::zero_score(topology);
// do it as many times is specified in config
for i in 0..iterations {
debug!("running healthcheck iteration {} / {}", i + 1, iterations);
for path in &all_paths {
let path_status = HealthCheckResult::check_path(&path);
for node in path {
// if value doesn't exist, something extremely weird must have happened
let current_score = score_map.get_mut(&node.pub_key.0);
if current_score.is_none() {
return Self::zero_score(topology);
}
let current_score = current_score.unwrap();
current_score.increase_packet_count(path_status);
}
let current_score = current_score.unwrap();
current_score.increase_packet_count(path_status);
}
}
@@ -205,7 +209,10 @@ impl HealthChecker {
};
trace!("current topology: {:?}", current_topology);
Ok(HealthCheckResult::calculate(current_topology))
Ok(HealthCheckResult::calculate(
current_topology,
self.num_test_packets,
))
}
pub async fn run(self) -> Result<(), HealthCheckerError> {