commonware-storage 2026.7.0

Persist and retrieve data from an abstract store.
Documentation
//! Ordinal storage conformance tests.

use crate::ordinal::{Config, Error, Ordinal};
use commonware_conformance::conformance_tests;
use commonware_runtime::{
    conformance::{StorageConformance, StorageWorkload},
    Supervisor as _,
};
use commonware_utils::{sequence::FixedBytes, NZUsize, NZU64};
use rand::RngExt as _;

struct OrdinalWorkload;

impl StorageWorkload for OrdinalWorkload {
    type Error = Error;

    async fn run(
        mut context: commonware_runtime::deterministic::Context,
        seed: u64,
    ) -> Result<(), Self::Error> {
        let cfg = Config {
            partition: format!("ordinal-conformance-{seed}"),
            items_per_blob: NZU64!(16),
            write_buffer: NZUsize!(1024),
            replay_buffer: NZUsize!(1024),
        };
        let mut ordinal =
            Ordinal::<_, FixedBytes<32>>::init(context.child("ordinal"), cfg, None).await?;

        let items = context.random_range(16..80);
        for i in 0..items {
            let index = i as u64 * 3 + (seed % 3);
            let mut value = [0; 32];
            context.fill(&mut value);
            ordinal.put(index, FixedBytes::new(value)).await?;
        }
        ordinal.sync().await?;

        if items > 32 {
            ordinal.prune(32).await?;
            ordinal.sync().await?;
        }

        Ok(())
    }
}

conformance_tests! {
    StorageConformance<OrdinalWorkload> => 256,
}