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.
- Memory
Blob - An in-memory reference backend. Correct unless built with
MemoryBlob::with_defect. - Page
- One page of a listing.
Enums§
- Blob
Error - Why a blob operation failed. Plain data, no boxed payloads.
- Defect
- A deliberate fault, for the known-bad control of a contract test.
Traits§
- Blob
Backend - A blob store: bytes by key.