refactor(tvix/store/tests): move gen_*_service() into helper
This allows hiding to tests what exact implementation we're using, when testing things that do something with a store, but don't care what's used for underlying storage. Change-Id: I7cdf60fd73c25d5050159cb31ec177db2bc2a7f1 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8155 Tested-by: BuildkiteCI Reviewed-by: raitobezarius <tvl@lahfa.xyz>
This commit is contained in:
parent
0baaabc43e
commit
28a862976b
7 changed files with 57 additions and 71 deletions
|
|
@ -1,8 +1,9 @@
|
|||
use crate::blobservice::{BlobService, SledBlobService};
|
||||
use crate::chunkservice::{ChunkService, SledChunkService};
|
||||
use crate::blobservice::BlobService;
|
||||
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::utils::{gen_blob_service, gen_chunk_service};
|
||||
use lazy_static::lazy_static;
|
||||
use std::path::Path;
|
||||
use tempfile::TempDir;
|
||||
|
|
@ -23,8 +24,8 @@ fn gen_grpc_blob_service(
|
|||
impl BlobService + Send + Sync + Clone + 'static,
|
||||
impl ChunkService + Send + Sync + Clone + 'static,
|
||||
> {
|
||||
let blob_service = SledBlobService::new(p.join("blobs")).unwrap();
|
||||
let chunk_service = SledChunkService::new(p.join("chunks")).unwrap();
|
||||
let blob_service = gen_blob_service(p);
|
||||
let chunk_service = gen_chunk_service(p);
|
||||
GRPCBlobServiceWrapper::new(blob_service, chunk_service)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
use crate::directoryservice::SledDirectoryService;
|
||||
use crate::directoryservice::DirectoryService;
|
||||
use crate::proto::directory_service_server::DirectoryService as GRPCDirectoryService;
|
||||
use crate::proto::get_directory_request::ByWhat;
|
||||
use crate::proto::{Directory, DirectoryNode, SymlinkNode};
|
||||
use crate::proto::{GRPCDirectoryServiceWrapper, GetDirectoryRequest};
|
||||
use crate::tests::utils::gen_directory_service;
|
||||
use lazy_static::lazy_static;
|
||||
use std::path::Path;
|
||||
use tempfile::TempDir;
|
||||
|
|
@ -36,8 +37,10 @@ lazy_static! {
|
|||
};
|
||||
}
|
||||
|
||||
fn gen_grpc_service(p: &Path) -> GRPCDirectoryServiceWrapper<SledDirectoryService> {
|
||||
let directory_service = SledDirectoryService::new(p.join("directories")).unwrap();
|
||||
fn gen_grpc_service(
|
||||
p: &Path,
|
||||
) -> GRPCDirectoryServiceWrapper<impl DirectoryService + Send + Sync + Clone + 'static> {
|
||||
let directory_service = gen_directory_service(p);
|
||||
GRPCDirectoryServiceWrapper::from(directory_service)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,21 +1,17 @@
|
|||
use std::path::Path;
|
||||
|
||||
use tempfile::TempDir;
|
||||
use tonic::Request;
|
||||
|
||||
use crate::blobservice::{BlobService, SledBlobService};
|
||||
use crate::chunkservice::{ChunkService, SledChunkService};
|
||||
use crate::directoryservice::{DirectoryService, SledDirectoryService};
|
||||
use crate::nar::NonCachingNARCalculationService;
|
||||
use crate::pathinfoservice::{PathInfoService, SledPathInfoService};
|
||||
use crate::proto::get_path_info_request::ByWhat::ByOutputHash;
|
||||
use crate::proto::node::Node::Symlink;
|
||||
use crate::proto::path_info_service_server::PathInfoService as GRPCPathInfoService;
|
||||
use crate::proto::GRPCPathInfoServiceWrapper;
|
||||
use crate::proto::PathInfo;
|
||||
use crate::proto::{GetPathInfoRequest, Node, SymlinkNode};
|
||||
|
||||
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![
|
||||
|
|
@ -24,38 +20,19 @@ lazy_static! {
|
|||
];
|
||||
}
|
||||
|
||||
// TODO: dedup these helpers
|
||||
fn gen_pathinfo_service(p: &Path) -> impl PathInfoService {
|
||||
SledPathInfoService::new(p.join("pathinfo")).unwrap()
|
||||
}
|
||||
fn gen_blob_service(p: &Path) -> impl BlobService {
|
||||
SledBlobService::new(p.join("blobs")).unwrap()
|
||||
}
|
||||
|
||||
fn gen_chunk_service(p: &Path) -> impl ChunkService + Clone {
|
||||
SledChunkService::new(p.join("chunks")).unwrap()
|
||||
}
|
||||
|
||||
fn gen_directory_service(p: &Path) -> impl DirectoryService {
|
||||
SledDirectoryService::new(p.join("directories")).unwrap()
|
||||
}
|
||||
|
||||
/// generates a GRPCPathInfoService out of blob, chunk, directory and pathinfo services.
|
||||
///
|
||||
/// It doesn't create underlying services on its own, as we don't need to
|
||||
/// preseed them with existing data for the test - we only interact with it via
|
||||
// the PathInfo GRPC interface.
|
||||
/// We only interact with it via the PathInfo GRPC interface.
|
||||
/// It uses the NonCachingNARCalculationService NARCalculationService to
|
||||
/// calculate NARs.
|
||||
fn gen_grpc_service(p: &Path) -> impl GRPCPathInfoService {
|
||||
let blob_service = gen_blob_service(p);
|
||||
let chunk_service = gen_chunk_service(p);
|
||||
let directory_service = gen_directory_service(p);
|
||||
let pathinfo_service = gen_pathinfo_service(p);
|
||||
|
||||
GRPCPathInfoServiceWrapper::new(
|
||||
pathinfo_service,
|
||||
NonCachingNARCalculationService::new(blob_service, chunk_service, directory_service),
|
||||
gen_pathinfo_service(p),
|
||||
NonCachingNARCalculationService::new(
|
||||
gen_blob_service(p),
|
||||
gen_chunk_service(p),
|
||||
gen_directory_service(p),
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue