20260605 ROA增量验证和rsync host失败短路
This commit is contained in:
@@ -18,6 +18,7 @@ fn parse_help_returns_usage() {
|
||||
assert!(err.contains("--rsync-scope"), "{err}");
|
||||
assert!(err.contains("--parallel-phase2-object-workers"), "{err}");
|
||||
assert!(err.contains("--memory-trim-after-validation"), "{err}");
|
||||
assert!(err.contains("--enable-roa-validation-cache"), "{err}");
|
||||
assert!(!err.contains("--parallel-phase1"), "{err}");
|
||||
assert!(!err.contains("--parallel-phase2 "), "{err}");
|
||||
}
|
||||
@@ -122,6 +123,58 @@ fn parse_disables_memory_trim_after_validation_by_default() {
|
||||
assert!(!args.memory_trim_after_validation);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_accepts_enable_roa_validation_cache() {
|
||||
let argv = vec![
|
||||
"rpki".to_string(),
|
||||
"--db".to_string(),
|
||||
"db".to_string(),
|
||||
"--tal-path".to_string(),
|
||||
"x.tal".to_string(),
|
||||
"--ta-path".to_string(),
|
||||
"x.cer".to_string(),
|
||||
"--enable-roa-validation-cache".to_string(),
|
||||
];
|
||||
let args = parse_args(&argv).expect("parse args");
|
||||
assert!(args.enable_roa_validation_cache);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_disables_roa_validation_cache_by_default() {
|
||||
let argv = vec![
|
||||
"rpki".to_string(),
|
||||
"--db".to_string(),
|
||||
"db".to_string(),
|
||||
"--tal-path".to_string(),
|
||||
"x.tal".to_string(),
|
||||
"--ta-path".to_string(),
|
||||
"x.cer".to_string(),
|
||||
];
|
||||
let args = parse_args(&argv).expect("parse args");
|
||||
assert!(!args.enable_roa_validation_cache);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_accepts_analysis_out_and_implies_analyze() {
|
||||
let argv = vec![
|
||||
"rpki".to_string(),
|
||||
"--db".to_string(),
|
||||
"db".to_string(),
|
||||
"--tal-path".to_string(),
|
||||
"x.tal".to_string(),
|
||||
"--ta-path".to_string(),
|
||||
"x.cer".to_string(),
|
||||
"--analysis-out".to_string(),
|
||||
"run/analyze".to_string(),
|
||||
];
|
||||
let args = parse_args(&argv).expect("parse args");
|
||||
assert!(args.analyze);
|
||||
assert_eq!(
|
||||
args.analysis_out_path.as_deref(),
|
||||
Some(std::path::Path::new("run/analyze"))
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_accepts_report_json_compact_when_report_json_is_set() {
|
||||
let argv = vec![
|
||||
@@ -157,6 +210,21 @@ fn parse_accepts_rsync_scope_policy() {
|
||||
assert_eq!(args.rsync_scope_policy, RsyncScopePolicy::ModuleRoot);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_accepts_host_rsync_scope_policy() {
|
||||
let argv = vec![
|
||||
"rpki".to_string(),
|
||||
"--db".to_string(),
|
||||
"db".to_string(),
|
||||
"--tal-url".to_string(),
|
||||
"https://example.test/x.tal".to_string(),
|
||||
"--rsync-scope".to_string(),
|
||||
"host".to_string(),
|
||||
];
|
||||
let args = parse_args(&argv).expect("parse args");
|
||||
assert_eq!(args.rsync_scope_policy, RsyncScopePolicy::Host);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn parse_rejects_invalid_rsync_scope_policy() {
|
||||
let argv = vec![
|
||||
@@ -1380,6 +1448,7 @@ fn synthetic_post_validation_shared() -> PostValidationShared {
|
||||
successful_tal_inputs: Vec::new(),
|
||||
tree,
|
||||
publication_points: vec![pp1, pp2, pp3],
|
||||
roa_cache_stats: crate::validation::objects::RoaValidationCacheStats::default(),
|
||||
downloads: Vec::new(),
|
||||
download_stats: crate::audit::AuditDownloadStats::default(),
|
||||
current_repo_objects: Vec::new(),
|
||||
@@ -1465,6 +1534,7 @@ fn run_report_task_and_stage_timing_work() {
|
||||
|
||||
let stage_timing = RunStageTiming {
|
||||
validation_ms: 1,
|
||||
enable_roa_validation_cache: false,
|
||||
report_build_ms: report_output.report_build_ms,
|
||||
report_write_ms: report_output.report_write_ms,
|
||||
ccr_build_ms: Some(2),
|
||||
@@ -1483,6 +1553,8 @@ fn run_report_task_and_stage_timing_work() {
|
||||
rrdp_download_ms_total: 13,
|
||||
rsync_download_ms_total: 14,
|
||||
download_bytes_total: 15,
|
||||
roa_validation_cache: crate::validation::objects::RoaValidationCacheStats::default(),
|
||||
analysis_counts: std::collections::HashMap::new(),
|
||||
vcir_storage_summary_ms: Some(16),
|
||||
vcir_storage: Some(VcirStorageSummary {
|
||||
entry_count: 2,
|
||||
@@ -1558,6 +1630,7 @@ fn stage_timing_serializes_memory_telemetry() {
|
||||
let report_path = dir.path().join("report.json");
|
||||
let stage_timing = RunStageTiming {
|
||||
validation_ms: 1,
|
||||
enable_roa_validation_cache: true,
|
||||
report_build_ms: 2,
|
||||
report_write_ms: None,
|
||||
ccr_build_ms: None,
|
||||
@@ -1576,6 +1649,14 @@ fn stage_timing_serializes_memory_telemetry() {
|
||||
rrdp_download_ms_total: 8,
|
||||
rsync_download_ms_total: 9,
|
||||
download_bytes_total: 10,
|
||||
roa_validation_cache: crate::validation::objects::RoaValidationCacheStats {
|
||||
hit_roas: 2,
|
||||
..crate::validation::objects::RoaValidationCacheStats::default()
|
||||
},
|
||||
analysis_counts: std::collections::HashMap::from([(
|
||||
"roa_validation_cache_hit_roas".to_string(),
|
||||
2,
|
||||
)]),
|
||||
vcir_storage_summary_ms: None,
|
||||
vcir_storage: None,
|
||||
memory_telemetry: Some(MemoryTelemetrySummary {
|
||||
@@ -1626,6 +1707,8 @@ fn stage_timing_serializes_memory_telemetry() {
|
||||
checkpoint["rocksdb"]["totals"]["cur_size_all_mem_tables"],
|
||||
16
|
||||
);
|
||||
assert_eq!(value["analysis_counts"]["roa_validation_cache_hit_roas"], 2);
|
||||
assert_eq!(value["roa_validation_cache"]["hit_roas"], 2);
|
||||
assert!(
|
||||
value["memory_telemetry"]
|
||||
.as_object()
|
||||
|
||||
Reference in New Issue
Block a user