Milestone 2: persistent blob store, add/materialize/gc
iroh-blobs 0.35 fs store under <store_dir>/blobs. Add imports files or whole directory trees (as Collections, deterministic order), Materialize exports them with a real FICLONE reflink attempt and streaming-copy fallback, Gc is an explicit mark-and-sweep rooted at the pins. Pins, trusted peers and hash formats persist in meta.json (atomic writes). Store reads run on a LocalPool because iroh-blobs entry readers are not Send. Integration tests drive the real daemon binary: directory round trip byte-identical, gc keeps pinned/drops unpinned, reflink verified on the repo's own filesystem (XFS), plus a 32-case proptest round trip. Dependencies: iroh-blobs =0.35.0 (the store itself; pinned per spec), iroh-io (AsyncSliceReader traits to read store entries), reflink-copy (FICLONE with copy fallback, per spec), proptest (dev-only, round-trip property test). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
//! Shared helpers for integration tests: spawn the real daemon binary on
|
||||
//! ephemeral paths and speak the JSON-lines protocol to it.
|
||||
|
||||
// Each test binary compiles its own copy of this module and none of them
|
||||
// uses every helper.
|
||||
#![allow(dead_code)]
|
||||
|
||||
use std::io::{BufRead, BufReader, Write};
|
||||
use std::os::unix::net::UnixStream;
|
||||
use std::path::{Path, PathBuf};
|
||||
@@ -118,9 +122,6 @@ impl Client {
|
||||
}
|
||||
|
||||
/// Read one line of the event stream (after Subscribe).
|
||||
// Each test binary compiles its own copy of this module; not every
|
||||
// binary uses every helper.
|
||||
#[allow(dead_code)]
|
||||
pub fn read_event_line(&mut self) -> Option<String> {
|
||||
let mut line = String::new();
|
||||
match self.reader.read_line(&mut line) {
|
||||
|
||||
Reference in New Issue
Block a user