Skip to main content

Crate persistant_blob

Crate persistant_blob 

Source
Expand description

PersistAnt’s blob kind: a trait, a reference backend, and the tests that decide capabilities.

No driver is linked here (docs/DESIGN-KINDS.md §3 rule 1). A driver crate such as persistant-opendal implements BlobBackend; conformance runs the contract tests against it and returns matrix rows, each on only with both controls.

The harness covers the leaves whose written contract it can decide: sequentially (blob.read, blob.write, blob.delete, blob.stat, blob.list) and by sampled concurrency (blob.create_exclusive, blob.replace_atomic.concurrent_read; the trial parameters are recorded in the row). Leaves that need a crash or a power cut (blob.replace_atomic as a whole, blob.durable) have no test here yet, so no row is produced and they stay off.

Modules§

choose
Stage 4 of backend benchmarking for the blob kind: “best backend for X”, as a ranked list with its evidence. The logic is kind-agnostic and lives in persistant_core::choose; this module supplies what is specific to blob stores: the table of what each backend declares about its durability, the typed way to name a need, and the contract check that makes a candidate.
concurrency
Runtime-agnostic helpers for sampled-concurrency contract tests, shared with persistant-kv.
conformance
Contract tests for the blob leaves whose written contract sequential calls can decide.
contract
Stage 1 of backend benchmarking for the blob kind: eligibility, pass or fail, nothing else.
speed
Stage 3 of backend benchmarking for the blob kind: speed, as data, with the environment recorded. The rules and the data types are the kind-agnostic ones in persistant_core::bench (only a backend that passes the contract leaf a workload depends on is timed; the rest are listed as excluded, never ranked; a figure carries its environment and the command that re-runs it). This module owns the blob workloads and how they are timed: wall-clock, one operation at a time, from the caller’s side of the trait.
stats
Stage 2 of backend benchmarking for the blob kind: precision and per-operation statistics. The same shape as persistant_kv::stats. No timing (stage 3) and no ranking.

Structs§

Entry
What is stored at one key.
MemoryBlob
An in-memory reference backend. Correct unless built with MemoryBlob::with_defect.
Page
One page of a listing.

Enums§

BlobError
Why a blob operation failed. Plain data, no boxed payloads.
Defect
A deliberate fault, for the known-bad control of a contract test.

Traits§

BlobBackend
A blob store: bytes by key.