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)]
|
||||
|
||||
use crate::{bridge_verification_info::BridgeVerificationInfo, *};
|
||||
use crate::{
|
||||
analysis::{blocked_in, Analyzer},
|
||||
bridge_verification_info::BridgeVerificationInfo,
|
||||
*,
|
||||
};
|
||||
use lox_library::{
|
||||
bridge_table::{self, BridgeLine, BridgeTable},
|
||||
cred::Lox,
|
||||
|
@ -171,7 +175,7 @@ async fn test_extra_infos() {
|
|||
bincode::deserialize(&db.get("bridges").unwrap().unwrap()).unwrap();
|
||||
assert!(bridges.contains(&bridge_to_test));
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -773,3 +777,194 @@ fn test_positive_reports() {
|
|||
let positive_reports = prs_to_process.get(&map_key_2).unwrap();
|
||||
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