feat(carrier): implement carrier format V2 paged manifest and secondary index

This commit is contained in:
2026-09-20 00:15:11 +02:00
parent 02f731f57d
commit 167e4b65fc
6 changed files with 1241 additions and 137 deletions
+18 -11
View File
@@ -1436,21 +1436,28 @@ async fn test_c04_manifest_capacity_limit_and_warning() {
}
}
// sync_manifest() MUSS jetzt mit Fehler abbrechen
let err = cfs_loaded.sync_manifest().unwrap_err();
let err_str = err.to_string();
// In Format V2 (v0.9.0): Die 1-MB-Grenze bricht NICHT mehr ab, sondern allokiert eine zusätzliche Seite
cfs_loaded
.sync_manifest()
.expect("sync_manifest with > 1 MB must succeed in V2 via paged manifest");
assert!(
err_str.contains("Carrier-Manifest überschreitet die maximale Blockgröße"),
"Error message must specify carrier capacity limit: {}",
err_str
);
assert!(
err_str.contains("7.000 Dateien/Verzeichnisse"),
"Error message must recommend file limit: {}",
err_str
cfs_loaded.page_count() >= 2,
"Page count must expand to at least 2 pages"
);
// Reloaden und prüfen, ob beide Seiten geladen werden
drop(cfs_loaded);
let cfs_paged = sanctum::carrier::CarrierFs::load(
db.clone(),
carrier_node_id,
std::sync::Arc::new(auth_hidden.carrier_dek().unwrap().clone()),
std::sync::Arc::new(auth_hidden.dek().clone()),
auth_hidden.version(),
true,
)
.expect("CarrierFs load paged manifest");
assert!(cfs_paged.page_count() >= 2);
drop(cfs_paged);
drop(db);
let _ = std::fs::remove_file(&path);
}