pub struct BenchIsolation {
pub qdrant_collection: String,
pub sqlite_db_path: PathBuf,
}Expand description
Per-scenario storage isolation for benchmark runs.
Before each scenario starts, call reset to delete and recreate the
bench-namespaced SQLite database so earlier scenario memories cannot
contaminate later ones.
§Collection naming
The Qdrant collection name follows the pattern bench_{dataset}_{run_id}.
Production collections (zeph_memory, zeph_skills, etc.) are never touched.
§Examples
use std::path::Path;
use zeph_bench::BenchIsolation;
let iso = BenchIsolation::new("locomo", "run-2026-01-01", Path::new("/data/bench"));
assert_eq!(iso.qdrant_collection, "bench_locomo_run-2026-01-01");
assert!(iso.sqlite_db_path.ends_with("bench-run-2026-01-01.db"));Fields§
§qdrant_collection: StringQdrant collection name: bench_{dataset}_{run_id}.
sqlite_db_path: PathBufAbsolute path to the bench-namespaced SQLite database.
Implementations§
Source§impl BenchIsolation
impl BenchIsolation
Sourcepub fn new(dataset: &str, run_id: &str, data_dir: &Path) -> Self
pub fn new(dataset: &str, run_id: &str, data_dir: &Path) -> Self
Create a new isolation context for a benchmark run.
The Qdrant collection is named bench_{dataset}_{run_id} and the SQLite
database is placed at {data_dir}/bench-{run_id}.db.
§Note
dataset and run_id are not sanitized. Callers should use alphanumeric
values (plus hyphens/underscores) to ensure a valid Qdrant collection name
and a safe filesystem path component.
Sourcepub async fn reset(&self) -> Result<(), BenchError>
pub async fn reset(&self) -> Result<(), BenchError>
Reset isolation state for a fresh scenario run.
Deletes the SQLite database file at sqlite_db_path if it exists, so
memories from a previous scenario cannot bleed into the next one.
Qdrant isolation is currently a no-op: zeph-bench does not depend on
qdrant-client, so collection cleanup must be performed externally if
needed. The collection is overwritten on the next run anyway.
§Errors
Returns BenchError::Io if the SQLite file exists but cannot be deleted.
Auto Trait Implementations§
impl Freeze for BenchIsolation
impl RefUnwindSafe for BenchIsolation
impl Send for BenchIsolation
impl Sync for BenchIsolation
impl Unpin for BenchIsolation
impl UnsafeUnpin for BenchIsolation
impl UnwindSafe for BenchIsolation
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request