mkit-server 0.5.0

Runtime-agnostic core of the mkit server: operation model, errors, runtime and telemetry vocabulary
Documentation
use super::*;
use crate::MemoryBlobStore;
#[tokio::test]
async fn equal_canonical_pieces_have_independent_verified_action_ownership() {
    let store = MemoryBlobStore::default();
    let one = write(&store, &[1; 32], &[8; 32], 0, b"canonical piece")
        .await
        .unwrap();
    let two = write(&store, &[2; 32], &[8; 32], 0, b"canonical piece")
        .await
        .unwrap();
    assert_ne!(one.storage, two.storage);
    assert_eq!(
        read(&store, &[1; 32], &one).await.unwrap().unwrap(),
        b"canonical piece"[..]
    );
    assert!(read(&store, &[2; 32], &one).await.is_err());
    store.delete(&BlobKey::pack(one.storage)).await.unwrap();
    assert!(read(&store, &[1; 32], &one).await.unwrap().is_none());
    assert_eq!(
        read(&store, &[2; 32], &two).await.unwrap().unwrap(),
        b"canonical piece"[..]
    );
}
#[tokio::test]
async fn duplicate_copy_validates_stored_bytes_and_exact_header_geometry() {
    let store = MemoryBlobStore::default();
    let piece = write(&store, &[1; 32], &[2; 32], 123, b"bytes")
        .await
        .unwrap();
    let duplicate = write(&store, &[1; 32], &[2; 32], 123, b"bytes")
        .await
        .unwrap();
    assert_eq!(piece.storage, duplicate.storage);
    for modified in [
        Piece {
            offset: 124,
            ..piece.clone()
        },
        Piece {
            length: 4,
            ..piece.clone()
        },
        Piece {
            object: [3; 32],
            ..piece
        },
    ] {
        assert!(read(&store, &[1; 32], &modified).await.is_err());
    }
    assert!(
        write(&store, &[1; 32], &[2; 32], 0, &vec![0; PIECE_BYTES + 1])
            .await
            .is_err()
    );
    assert!(write(&store, &[1; 32], &[2; 32], 0, &[]).await.is_err());
}