zeppelin-embed 0.7.0

In-process vector, lexical, and hybrid search for macOS and Apple silicon
Documentation
#![allow(clippy::expect_used)]
use zeppelin_embed::lifecycle::{OpenOptions, Store};
use zeppelin_embed::property_graph::{
    query::resources::{QueryArena, QueryExternalReservation, QueryMemory},
    resources::GraphResources,
};
#[test]
fn external_compiler_capacity_shares_query_and_store_budget_and_releases_exactly() {
    let directory = tempfile::tempdir().expect("fixture");
    let store = Store::open(
        directory.path(),
        OpenOptions::new().with_max_resident_bytes(2 * 1024 * 1024),
    )
    .expect("store");
    let shared = GraphResources::from_store(&store).expect("shared owner");
    let initial = shared.reserved_bytes().expect("initial");
    {
        let memory = QueryMemory::new(&shared, 1024).expect("query");
        let base = memory.reserved_bytes();
        let mut guard = memory.reserve_external_capacity().expect("frontend guard");
        assert_eq!(guard.bytes(), 0);
        guard.reserve_additional(64).expect("before allocation");
        let retained = base + std::mem::size_of::<QueryExternalReservation<'_, '_>>() + 64;
        assert_eq!(memory.reserved_bytes(), retained);
        assert_eq!(
            shared.reserved_bytes().expect("shared"),
            initial + retained as u64
        );
        assert!(guard.reserve_additional(1024).is_err());
        assert_eq!(guard.bytes(), 64);
        assert_eq!(memory.reserved_bytes(), retained);
        let arena = QueryArena::<u8>::new(&memory, 16).expect("separate real IR copy");
        assert_eq!(memory.reserved_bytes(), retained + arena.reserved_bytes());
        drop(arena);
        drop(guard);
        assert_eq!(memory.reserved_bytes(), base);
    }
    assert_eq!(shared.reserved_bytes().expect("release"), initial);
    store.close().expect("close");
}