khive-db 0.9.0

SQLite storage backend: entities, edges, notes, events, FTS5, sqlite-vec vectors.
Documentation
use super::*;
use crate::timeout_sink::{capture_direct_routes, Site};

#[test]
fn runtime_routing_refuses_strict_fallbacks_and_attributes_only_enabled_queue_degrades() {
    assert!(tokio::runtime::Handle::try_current().is_err());
    let operations = [
        (
            RuntimeWriteOperation::MergeEntity,
            Site::DirectRouteRuntimeMergeEntity,
        ),
        (
            RuntimeWriteOperation::MergeNote,
            Site::DirectRouteRuntimeMergeNote,
        ),
        (
            RuntimeWriteOperation::UpdateSymmetricEdge,
            Site::DirectRouteRuntimeUpdateSymmetricEdge,
        ),
    ];
    for (strict, enabled) in [(true, true), (true, false), (false, true), (false, false)] {
        let dir = tempfile::tempdir().unwrap();
        let pool = ConnectionPool::new(PoolConfig {
            path: Some(dir.path().join("runtime-routing.db")),
            write_queue_enabled: Some(enabled),
            write_routing_strict: strict,
            ..PoolConfig::for_test()
        })
        .unwrap();
        let (_, events) = capture_direct_routes(|| {
            for (operation, _) in operations {
                let result = pool.writer_task_for_runtime_write(operation);
                if strict && enabled {
                    assert!(matches!(result, Err(StorageError::WriterTaskNoRuntime)));
                } else if strict {
                    assert!(matches!(
                        result,
                        Err(StorageError::Pool { operation: name, .. })
                            if name == operation.operation()
                    ));
                } else {
                    assert!(result.unwrap().is_none());
                }
            }
        });
        if !strict && enabled {
            assert_eq!(
                events.iter().map(|(_, site)| *site).collect::<Vec<_>>(),
                operations.iter().map(|(_, site)| *site).collect::<Vec<_>>()
            );
            assert!(events.iter().all(|(database, _)| !database.is_empty()));
        } else {
            assert!(
                events.is_empty(),
                "refusal or explicit opt-out is not a bypass"
            );
        }
    }
}