refactor(tvix/store/tests): move fixtures into separate module
Change-Id: I362dbf0899e4dc42114fd2e6a8fa7f537e9ea138 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8156 Tested-by: BuildkiteCI Reviewed-by: raitobezarius <tvl@lahfa.xyz>
This commit is contained in:
parent
28a862976b
commit
e7279b6063
7 changed files with 94 additions and 95 deletions
|
@ -134,23 +134,15 @@ mod tests {
|
|||
use super::BlobReader;
|
||||
use crate::chunkservice::ChunkService;
|
||||
use crate::proto;
|
||||
use crate::tests::fixtures::DUMMY_DATA_1;
|
||||
use crate::tests::fixtures::DUMMY_DATA_2;
|
||||
use crate::tests::fixtures::DUMMY_DIGEST;
|
||||
use crate::tests::utils::gen_chunk_service;
|
||||
use lazy_static::lazy_static;
|
||||
use std::io::Cursor;
|
||||
use std::io::Read;
|
||||
use std::io::Write;
|
||||
use tempfile::TempDir;
|
||||
|
||||
lazy_static! {
|
||||
static ref DUMMY_DIGEST: Vec<u8> = vec![
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
];
|
||||
static ref DUMMY_DATA_1: Vec<u8> = vec![0x01, 0x02, 0x03];
|
||||
static ref DUMMY_DATA_2: Vec<u8> = vec![0x04, 0x05];
|
||||
}
|
||||
|
||||
#[test]
|
||||
/// reading from a blobmeta with zero chunks should produce zero bytes.
|
||||
fn empty_blobmeta() -> anyhow::Result<()> {
|
||||
|
|
|
@ -3,21 +3,11 @@ use crate::chunkservice::ChunkService;
|
|||
use crate::proto::blob_meta::ChunkMeta;
|
||||
use crate::proto::blob_service_server::BlobService as GRPCBlobService;
|
||||
use crate::proto::{BlobChunk, GRPCBlobServiceWrapper, ReadBlobRequest, StatBlobRequest};
|
||||
use crate::tests::fixtures::{BLOB_A, BLOB_A_DIGEST, BLOB_B, BLOB_B_DIGEST};
|
||||
use crate::tests::utils::{gen_blob_service, gen_chunk_service};
|
||||
use lazy_static::lazy_static;
|
||||
use std::path::Path;
|
||||
use tempfile::TempDir;
|
||||
|
||||
lazy_static! {
|
||||
// 2 bytes
|
||||
static ref BLOB_A: Vec<u8> = vec![0x00, 0x01];
|
||||
static ref BLOB_A_DIGEST: Vec<u8> = blake3::hash(&BLOB_A).as_bytes().to_vec();
|
||||
|
||||
// 1MB
|
||||
static ref BLOB_B: Vec<u8> = (0..255).collect::<Vec<u8>>().repeat(4 * 1024);
|
||||
static ref BLOB_B_DIGEST: Vec<u8> = blake3::hash(&BLOB_B).as_bytes().to_vec();
|
||||
}
|
||||
|
||||
fn gen_grpc_blob_service(
|
||||
p: &Path,
|
||||
) -> GRPCBlobServiceWrapper<
|
||||
|
|
|
@ -3,40 +3,13 @@ use crate::proto::directory_service_server::DirectoryService as GRPCDirectorySer
|
|||
use crate::proto::get_directory_request::ByWhat;
|
||||
use crate::proto::{Directory, DirectoryNode, SymlinkNode};
|
||||
use crate::proto::{GRPCDirectoryServiceWrapper, GetDirectoryRequest};
|
||||
use crate::tests::fixtures::{DIRECTORY_A, DIRECTORY_B, DIRECTORY_C};
|
||||
use crate::tests::utils::gen_directory_service;
|
||||
use lazy_static::lazy_static;
|
||||
use std::path::Path;
|
||||
use tempfile::TempDir;
|
||||
use tokio_stream::StreamExt;
|
||||
use tonic::Status;
|
||||
|
||||
lazy_static! {
|
||||
static ref DIRECTORY_A: Directory = Directory::default();
|
||||
static ref DIRECTORY_B: Directory = Directory {
|
||||
directories: vec![DirectoryNode {
|
||||
name: "a".to_string(),
|
||||
digest: DIRECTORY_A.digest(),
|
||||
size: DIRECTORY_A.size(),
|
||||
}],
|
||||
..Default::default()
|
||||
};
|
||||
static ref DIRECTORY_C: Directory = Directory {
|
||||
directories: vec![
|
||||
DirectoryNode {
|
||||
name: "a".to_string(),
|
||||
digest: DIRECTORY_A.digest(),
|
||||
size: DIRECTORY_A.size(),
|
||||
},
|
||||
DirectoryNode {
|
||||
name: "a'".to_string(),
|
||||
digest: DIRECTORY_A.digest(),
|
||||
size: DIRECTORY_A.size(),
|
||||
}
|
||||
],
|
||||
..Default::default()
|
||||
};
|
||||
}
|
||||
|
||||
fn gen_grpc_service(
|
||||
p: &Path,
|
||||
) -> GRPCDirectoryServiceWrapper<impl DirectoryService + Send + Sync + Clone + 'static> {
|
||||
|
|
|
@ -5,21 +5,14 @@ use crate::proto::path_info_service_server::PathInfoService as GRPCPathInfoServi
|
|||
use crate::proto::GRPCPathInfoServiceWrapper;
|
||||
use crate::proto::PathInfo;
|
||||
use crate::proto::{GetPathInfoRequest, Node, SymlinkNode};
|
||||
use crate::tests::fixtures::DUMMY_OUTPUT_HASH;
|
||||
use crate::tests::utils::{
|
||||
gen_blob_service, gen_chunk_service, gen_directory_service, gen_pathinfo_service,
|
||||
};
|
||||
use lazy_static::lazy_static;
|
||||
use std::path::Path;
|
||||
use tempfile::TempDir;
|
||||
use tonic::Request;
|
||||
|
||||
lazy_static! {
|
||||
static ref DUMMY_OUTPUT_HASH: Vec<u8> = vec![
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00
|
||||
];
|
||||
}
|
||||
|
||||
/// generates a GRPCPathInfoService out of blob, chunk, directory and pathinfo services.
|
||||
///
|
||||
/// We only interact with it via the PathInfo GRPC interface.
|
||||
|
|
86
tvix/store/src/tests/fixtures.rs
Normal file
86
tvix/store/src/tests/fixtures.rs
Normal file
|
@ -0,0 +1,86 @@
|
|||
use crate::proto::{self, Directory, DirectoryNode, FileNode, SymlinkNode};
|
||||
use lazy_static::lazy_static;
|
||||
|
||||
pub const HELLOWORLD_BLOB_CONTENTS: &[u8] = b"Hello World!";
|
||||
pub const EMPTY_BLOB_CONTENTS: &[u8] = b"";
|
||||
|
||||
lazy_static! {
|
||||
pub static ref DUMMY_DIGEST: Vec<u8> = vec![
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00,
|
||||
];
|
||||
pub static ref DUMMY_DATA_1: Vec<u8> = vec![0x01, 0x02, 0x03];
|
||||
pub static ref DUMMY_DATA_2: Vec<u8> = vec![0x04, 0x05];
|
||||
pub static ref HELLOWORLD_BLOB_DIGEST: Vec<u8> =
|
||||
blake3::hash(HELLOWORLD_BLOB_CONTENTS).as_bytes().to_vec();
|
||||
pub static ref EMPTY_BLOB_DIGEST: Vec<u8> =
|
||||
blake3::hash(EMPTY_BLOB_CONTENTS).as_bytes().to_vec();
|
||||
|
||||
// 2 bytes
|
||||
pub static ref BLOB_A: Vec<u8> = vec![0x00, 0x01];
|
||||
pub static ref BLOB_A_DIGEST: Vec<u8> = blake3::hash(&BLOB_A).as_bytes().to_vec();
|
||||
|
||||
// 1MB
|
||||
pub static ref BLOB_B: Vec<u8> = (0..255).collect::<Vec<u8>>().repeat(4 * 1024);
|
||||
pub static ref BLOB_B_DIGEST: Vec<u8> = blake3::hash(&BLOB_B).as_bytes().to_vec();
|
||||
|
||||
// Directories
|
||||
pub static ref DIRECTORY_WITH_KEEP: proto::Directory = proto::Directory {
|
||||
directories: vec![],
|
||||
files: vec![FileNode {
|
||||
name: ".keep".to_string(),
|
||||
digest: EMPTY_BLOB_DIGEST.to_vec(),
|
||||
size: 0,
|
||||
executable: false,
|
||||
}],
|
||||
symlinks: vec![],
|
||||
};
|
||||
pub static ref DIRECTORY_COMPLICATED: proto::Directory = proto::Directory {
|
||||
directories: vec![DirectoryNode {
|
||||
name: "keep".to_string(),
|
||||
digest: DIRECTORY_WITH_KEEP.digest(),
|
||||
size: DIRECTORY_WITH_KEEP.size(),
|
||||
}],
|
||||
files: vec![FileNode {
|
||||
name: ".keep".to_string(),
|
||||
digest: EMPTY_BLOB_DIGEST.to_vec(),
|
||||
size: 0,
|
||||
executable: false,
|
||||
}],
|
||||
symlinks: vec![SymlinkNode {
|
||||
name: "aa".to_string(),
|
||||
target: "/nix/store/somewhereelse".to_string(),
|
||||
}],
|
||||
};
|
||||
pub static ref DIRECTORY_A: Directory = Directory::default();
|
||||
pub static ref DIRECTORY_B: Directory = Directory {
|
||||
directories: vec![DirectoryNode {
|
||||
name: "a".to_string(),
|
||||
digest: DIRECTORY_A.digest(),
|
||||
size: DIRECTORY_A.size(),
|
||||
}],
|
||||
..Default::default()
|
||||
};
|
||||
pub static ref DIRECTORY_C: Directory = Directory {
|
||||
directories: vec![
|
||||
DirectoryNode {
|
||||
name: "a".to_string(),
|
||||
digest: DIRECTORY_A.digest(),
|
||||
size: DIRECTORY_A.size(),
|
||||
},
|
||||
DirectoryNode {
|
||||
name: "a'".to_string(),
|
||||
digest: DIRECTORY_A.digest(),
|
||||
size: DIRECTORY_A.size(),
|
||||
}
|
||||
],
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
// output hash
|
||||
pub static ref DUMMY_OUTPUT_HASH: Vec<u8> = vec![
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00
|
||||
];
|
||||
}
|
|
@ -1,2 +1,3 @@
|
|||
pub mod fixtures;
|
||||
mod nar_renderer;
|
||||
pub mod utils;
|
||||
|
|
|
@ -6,46 +6,10 @@ use crate::proto;
|
|||
use crate::proto::DirectoryNode;
|
||||
use crate::proto::FileNode;
|
||||
use crate::proto::SymlinkNode;
|
||||
use crate::tests::fixtures::*;
|
||||
use crate::tests::utils::*;
|
||||
use lazy_static::lazy_static;
|
||||
use tempfile::TempDir;
|
||||
|
||||
const HELLOWORLD_BLOB_CONTENTS: &[u8] = b"Hello World!";
|
||||
const EMPTY_BLOB_CONTENTS: &[u8] = b"";
|
||||
|
||||
lazy_static! {
|
||||
static ref HELLOWORLD_BLOB_DIGEST: Vec<u8> =
|
||||
blake3::hash(HELLOWORLD_BLOB_CONTENTS).as_bytes().to_vec();
|
||||
static ref EMPTY_BLOB_DIGEST: Vec<u8> = blake3::hash(EMPTY_BLOB_CONTENTS).as_bytes().to_vec();
|
||||
static ref DIRECTORY_WITH_KEEP: proto::Directory = proto::Directory {
|
||||
directories: vec![],
|
||||
files: vec![FileNode {
|
||||
name: ".keep".to_string(),
|
||||
digest: EMPTY_BLOB_DIGEST.to_vec(),
|
||||
size: 0,
|
||||
executable: false,
|
||||
}],
|
||||
symlinks: vec![],
|
||||
};
|
||||
static ref DIRECTORY_COMPLICATED: proto::Directory = proto::Directory {
|
||||
directories: vec![DirectoryNode {
|
||||
name: "keep".to_string(),
|
||||
digest: DIRECTORY_WITH_KEEP.digest(),
|
||||
size: DIRECTORY_WITH_KEEP.size(),
|
||||
}],
|
||||
files: vec![FileNode {
|
||||
name: ".keep".to_string(),
|
||||
digest: EMPTY_BLOB_DIGEST.to_vec(),
|
||||
size: 0,
|
||||
executable: false,
|
||||
}],
|
||||
symlinks: vec![SymlinkNode {
|
||||
name: "aa".to_string(),
|
||||
target: "/nix/store/somewhereelse".to_string(),
|
||||
}],
|
||||
};
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn single_symlink() {
|
||||
let tmpdir = TempDir::new().unwrap();
|
||||
|
|
Loading…
Reference in a new issue