70 lines
2.4 KiB
Rust
70 lines
2.4 KiB
Rust
use std::process::Command;
|
|
|
|
#[test]
|
|
fn cli_payload_replay_root_only_smoke_writes_report_json() {
|
|
let bin = env!("CARGO_BIN_EXE_rpki");
|
|
let db_dir = tempfile::tempdir().expect("db tempdir");
|
|
let out_dir = tempfile::tempdir().expect("out tempdir");
|
|
let report_path = out_dir.path().join("report.json");
|
|
|
|
let tal_path = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"))
|
|
.join("tests/fixtures/tal/apnic-rfc7730-https.tal");
|
|
let ta_path =
|
|
std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("tests/fixtures/ta/apnic-ta.cer");
|
|
let archive_root = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"))
|
|
.join("target/live/payload_replay/payload-archive");
|
|
let locks_path = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"))
|
|
.join("target/live/payload_replay/locks.json");
|
|
|
|
assert!(
|
|
archive_root.is_dir(),
|
|
"payload replay archive missing: {}",
|
|
archive_root.display()
|
|
);
|
|
assert!(
|
|
locks_path.is_file(),
|
|
"payload replay locks missing: {}",
|
|
locks_path.display()
|
|
);
|
|
|
|
let out = Command::new(bin)
|
|
.args([
|
|
"--db",
|
|
db_dir.path().to_string_lossy().as_ref(),
|
|
"--tal-path",
|
|
tal_path.to_string_lossy().as_ref(),
|
|
"--ta-path",
|
|
ta_path.to_string_lossy().as_ref(),
|
|
"--payload-replay-archive",
|
|
archive_root.to_string_lossy().as_ref(),
|
|
"--payload-replay-locks",
|
|
locks_path.to_string_lossy().as_ref(),
|
|
"--validation-time",
|
|
"2026-03-13T02:30:00Z",
|
|
"--max-depth",
|
|
"0",
|
|
"--max-instances",
|
|
"1",
|
|
"--report-json",
|
|
report_path.to_string_lossy().as_ref(),
|
|
])
|
|
.output()
|
|
.expect("run replay cli");
|
|
|
|
assert!(
|
|
out.status.success(),
|
|
"cli failed: status={}\nstdout={}\nstderr={}",
|
|
out.status,
|
|
String::from_utf8_lossy(&out.stdout),
|
|
String::from_utf8_lossy(&out.stderr)
|
|
);
|
|
|
|
let bytes = std::fs::read(&report_path).expect("read report json");
|
|
let v: serde_json::Value = serde_json::from_slice(&bytes).expect("parse report json");
|
|
assert_eq!(v["format_version"], 2);
|
|
assert!(v["tree"]["instances_processed"].as_u64().unwrap_or(0) >= 1);
|
|
assert!(v.get("publication_points").is_some());
|
|
assert!(v.get("downloads").is_some());
|
|
assert!(v.get("download_stats").is_some());
|
|
}
|