Test stage 1 analysis
This commit is contained in:
parent
45e71f32e8
commit
bd4bc1b7b8
199
src/tests.rs
199
src/tests.rs
|
@ -1,6 +1,10 @@
|
||||||
#![allow(non_snake_case)]
|
#![allow(non_snake_case)]
|
||||||
|
|
||||||
use crate::{bridge_verification_info::BridgeVerificationInfo, *};
|
use crate::{
|
||||||
|
analysis::{blocked_in, Analyzer},
|
||||||
|
bridge_verification_info::BridgeVerificationInfo,
|
||||||
|
*,
|
||||||
|
};
|
||||||
use lox_library::{
|
use lox_library::{
|
||||||
bridge_table::{self, BridgeLine, BridgeTable},
|
bridge_table::{self, BridgeLine, BridgeTable},
|
||||||
cred::Lox,
|
cred::Lox,
|
||||||
|
@ -171,7 +175,7 @@ async fn test_extra_infos() {
|
||||||
bincode::deserialize(&db.get("bridges").unwrap().unwrap()).unwrap();
|
bincode::deserialize(&db.get("bridges").unwrap().unwrap()).unwrap();
|
||||||
assert!(bridges.contains(&bridge_to_test));
|
assert!(bridges.contains(&bridge_to_test));
|
||||||
assert!(db.contains_key(bridge_to_test).unwrap());
|
assert!(db.contains_key(bridge_to_test).unwrap());
|
||||||
let bridge_info: BridgeInfo =
|
let _bridge_info: BridgeInfo =
|
||||||
bincode::deserialize(&db.get(bridge_to_test).unwrap().unwrap()).unwrap();
|
bincode::deserialize(&db.get(bridge_to_test).unwrap().unwrap()).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -773,3 +777,194 @@ fn test_positive_reports() {
|
||||||
let positive_reports = prs_to_process.get(&map_key_2).unwrap();
|
let positive_reports = prs_to_process.get(&map_key_2).unwrap();
|
||||||
assert_eq!(positive_reports.len(), 1);
|
assert_eq!(positive_reports.len(), 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_analysis() {
|
||||||
|
// Test stage 1 analysis
|
||||||
|
{
|
||||||
|
let mut date = get_date();
|
||||||
|
|
||||||
|
// New bridge info
|
||||||
|
let mut bridge_info = BridgeInfo::new([0; 20], &String::default());
|
||||||
|
|
||||||
|
bridge_info
|
||||||
|
.info_by_country
|
||||||
|
.insert("ru".to_string(), BridgeCountryInfo::new());
|
||||||
|
let analyzer = analysis::NormalAnalyzer::new(5, 0.25);
|
||||||
|
let confidence = 0.95;
|
||||||
|
|
||||||
|
let mut blocking_countries = HashSet::<String>::new();
|
||||||
|
|
||||||
|
// No data today
|
||||||
|
assert_eq!(
|
||||||
|
blocked_in(&analyzer, &bridge_info, confidence, date),
|
||||||
|
blocking_countries
|
||||||
|
);
|
||||||
|
|
||||||
|
// 1 connection, 0 negative reports
|
||||||
|
date += 1;
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::BridgeIps,
|
||||||
|
date,
|
||||||
|
8,
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
blocked_in(&analyzer, &bridge_info, confidence, date),
|
||||||
|
blocking_countries
|
||||||
|
);
|
||||||
|
|
||||||
|
// 0 connections, 0 negative reports
|
||||||
|
date += 1;
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::BridgeIps,
|
||||||
|
date,
|
||||||
|
0,
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
blocked_in(&analyzer, &bridge_info, confidence, date),
|
||||||
|
blocking_countries
|
||||||
|
);
|
||||||
|
|
||||||
|
// 0 connections, 1 negative report
|
||||||
|
// (exceeds scaled threshold)
|
||||||
|
date += 1;
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::NegativeReports,
|
||||||
|
date,
|
||||||
|
1,
|
||||||
|
);
|
||||||
|
blocking_countries.insert("ru".to_string());
|
||||||
|
assert_eq!(
|
||||||
|
blocked_in(&analyzer, &bridge_info, confidence, date),
|
||||||
|
blocking_countries
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let mut date = get_date();
|
||||||
|
|
||||||
|
// New bridge info
|
||||||
|
let mut bridge_info = BridgeInfo::new([0; 20], &String::default());
|
||||||
|
|
||||||
|
bridge_info
|
||||||
|
.info_by_country
|
||||||
|
.insert("ru".to_string(), BridgeCountryInfo::new());
|
||||||
|
let analyzer = analysis::NormalAnalyzer::new(5, 0.25);
|
||||||
|
let confidence = 0.95;
|
||||||
|
|
||||||
|
let mut blocking_countries = HashSet::<String>::new();
|
||||||
|
|
||||||
|
// No data today
|
||||||
|
assert_eq!(
|
||||||
|
blocked_in(&analyzer, &bridge_info, confidence, date),
|
||||||
|
blocking_countries
|
||||||
|
);
|
||||||
|
|
||||||
|
// 1 connection, 1 negative report
|
||||||
|
date += 1;
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::BridgeIps,
|
||||||
|
date,
|
||||||
|
8,
|
||||||
|
);
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::NegativeReports,
|
||||||
|
date,
|
||||||
|
1,
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
blocked_in(&analyzer, &bridge_info, confidence, date),
|
||||||
|
blocking_countries
|
||||||
|
);
|
||||||
|
|
||||||
|
// 8 connections, 2 negative reports
|
||||||
|
date += 1;
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::BridgeIps,
|
||||||
|
date,
|
||||||
|
8,
|
||||||
|
);
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::NegativeReports,
|
||||||
|
date,
|
||||||
|
2,
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
blocked_in(&analyzer, &bridge_info, confidence, date),
|
||||||
|
blocking_countries
|
||||||
|
);
|
||||||
|
|
||||||
|
// 8 connections, 3 negative reports
|
||||||
|
// (exceeds scaled threshold)
|
||||||
|
date += 1;
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::BridgeIps,
|
||||||
|
date,
|
||||||
|
8,
|
||||||
|
);
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::NegativeReports,
|
||||||
|
date,
|
||||||
|
3,
|
||||||
|
);
|
||||||
|
blocking_countries.insert("ru".to_string());
|
||||||
|
assert_eq!(
|
||||||
|
blocked_in(&analyzer, &bridge_info, confidence, date),
|
||||||
|
blocking_countries
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
let mut date = get_date();
|
||||||
|
|
||||||
|
// New bridge info
|
||||||
|
let mut bridge_info = BridgeInfo::new([0; 20], &String::default());
|
||||||
|
|
||||||
|
bridge_info
|
||||||
|
.info_by_country
|
||||||
|
.insert("ru".to_string(), BridgeCountryInfo::new());
|
||||||
|
let analyzer = analysis::NormalAnalyzer::new(5, 0.25);
|
||||||
|
let confidence = 0.95;
|
||||||
|
|
||||||
|
let mut blocking_countries = HashSet::<String>::new();
|
||||||
|
|
||||||
|
// 24 connections, 5 negative reports
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::BridgeIps,
|
||||||
|
date,
|
||||||
|
24,
|
||||||
|
);
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::NegativeReports,
|
||||||
|
date,
|
||||||
|
5,
|
||||||
|
);
|
||||||
|
assert_eq!(
|
||||||
|
blocked_in(&analyzer, &bridge_info, confidence, date),
|
||||||
|
blocking_countries
|
||||||
|
);
|
||||||
|
|
||||||
|
// 24 connections, 6 negative reports
|
||||||
|
// (exceeds max threshold)
|
||||||
|
date += 1;
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::BridgeIps,
|
||||||
|
date,
|
||||||
|
24,
|
||||||
|
);
|
||||||
|
bridge_info.info_by_country.get_mut("ru").unwrap().add_info(
|
||||||
|
BridgeInfoType::NegativeReports,
|
||||||
|
date,
|
||||||
|
6,
|
||||||
|
);
|
||||||
|
blocking_countries.insert("ru".to_string());
|
||||||
|
assert_eq!(
|
||||||
|
blocked_in(&analyzer, &bridge_info, confidence, date),
|
||||||
|
blocking_countries
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Test stage 2 analysis
|
||||||
|
|
||||||
|
// TODO: Test stage 3 analysis
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue