20260701 add validation-update-03 VRS mode

This commit is contained in:
2026-07-01 20:28:25 +08:00
parent a501cfb709
commit a5b194ce35
14 changed files with 1430 additions and 24 deletions

View File

@@ -2,6 +2,7 @@ use super::*;
use crate::memory_telemetry::{
MemoryTelemetryCheckpoint, MemoryTelemetrySummary, ProcessMemorySnapshot,
};
use crate::policy::ResourceValidationMode;
use crate::storage::{
RocksDbMemorySnapshot, RocksDbMemoryTotals, VcirCcrProjectionSizeBreakdown,
VcirChildResourceSizeBreakdown, VcirCoreFieldSizeBreakdown, VcirFieldSizeBreakdown,
@@ -19,6 +20,7 @@ fn parse_help_returns_usage() {
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("--resource-validation-mode"), "{err}");
assert!(
err.contains("--publication-point-cache-observe-only"),
"{err}"
@@ -340,6 +342,39 @@ fn parse_accepts_strict_without_value_as_all() {
assert_eq!(args.strict_policy, Some(StrictPolicy::all()));
}
#[test]
fn parse_accepts_resource_validation_mode() {
let argv = vec![
"rpki".to_string(),
"--db".to_string(),
"db".to_string(),
"--tal-url".to_string(),
"https://example.test/x.tal".to_string(),
"--resource-validation-mode".to_string(),
"rfc6487".to_string(),
];
let args = parse_args(&argv).expect("parse args");
assert_eq!(
args.resource_validation_mode,
Some(ResourceValidationMode::Rfc6487)
);
}
#[test]
fn parse_rejects_unknown_resource_validation_mode() {
let argv = vec![
"rpki".to_string(),
"--db".to_string(),
"db".to_string(),
"--tal-url".to_string(),
"https://example.test/x.tal".to_string(),
"--resource-validation-mode".to_string(),
"bogus".to_string(),
];
let err = parse_args(&argv).expect_err("unknown mode should fail");
assert!(err.contains("unknown resource validation mode"), "{err}");
}
#[test]
fn parse_rejects_unknown_strict_policy() {
let argv = vec![
@@ -1407,6 +1442,10 @@ fn read_policy_accepts_valid_toml() {
policy.signed_object_failure_policy,
crate::policy::SignedObjectFailurePolicy::DropPublicationPoint
);
assert_eq!(
policy.resource_validation_mode,
ResourceValidationMode::ValidationUpdate03
);
assert_eq!(policy.strict, StrictPolicy::default());
}
@@ -1435,6 +1474,19 @@ fn read_policy_accepts_strict_table() {
);
}
#[test]
fn read_policy_accepts_resource_validation_mode() {
let dir = tempfile::tempdir().expect("tmpdir");
let p = dir.path().join("policy.toml");
std::fs::write(&p, "resource_validation_mode = \"rfc6487\"\n").expect("write policy");
let policy = read_policy(Some(&p)).expect("parse policy");
assert_eq!(
policy.resource_validation_mode,
ResourceValidationMode::Rfc6487
);
}
#[test]
fn read_policy_reports_missing_file() {
let dir = tempfile::tempdir().expect("tmpdir");