refactor(tvix/castore/tests): let gen_*_service return Boxes

Only convert to and reuse an Arc<…> where needed.

Change-Id: I2c1bc69cca5a4a3ebd3bdb33d6e28e1f5fb86cb9
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10514
Tested-by: BuildkiteCI
Autosubmit: flokli <flokli@flokli.de>
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
This commit is contained in:
Florian Klink 2023-12-31 23:33:41 +02:00 committed by flokli
parent 09a92b78d2
commit 597a6b6205
8 changed files with 63 additions and 37 deletions

View file

@ -4,11 +4,16 @@ use crate::tests::fixtures::*;
use crate::tests::utils::*;
use sha2::{Digest, Sha256};
use std::io;
use std::sync::Arc;
use tokio::io::sink;
use tvix_castore::blobservice::BlobService;
use tvix_castore::directoryservice::DirectoryService;
use tvix_castore::proto as castorepb;
#[tokio::test]
async fn single_symlink() {
let blob_service: Arc<dyn BlobService> = gen_blob_service().into();
let directory_service: Arc<dyn DirectoryService> = gen_directory_service().into();
let mut buf: Vec<u8> = vec![];
write_nar(
@ -18,8 +23,8 @@ async fn single_symlink() {
target: "/nix/store/somewhereelse".into(),
}),
// don't put anything in the stores, as we don't actually do any requests.
gen_blob_service(),
gen_directory_service(),
blob_service,
directory_service,
)
.await
.expect("must succeed");
@ -30,6 +35,9 @@ async fn single_symlink() {
/// Make sure the NARRenderer fails if a referred blob doesn't exist.
#[tokio::test]
async fn single_file_missing_blob() {
let blob_service: Arc<dyn BlobService> = gen_blob_service().into();
let directory_service: Arc<dyn DirectoryService> = gen_directory_service().into();
let e = write_nar(
sink(),
&castorepb::node::Node::File(castorepb::FileNode {
@ -39,8 +47,8 @@ async fn single_file_missing_blob() {
executable: false,
}),
// the blobservice is empty intentionally, to provoke the error.
gen_blob_service(),
gen_directory_service(),
blob_service,
directory_service,
)
.await
.expect_err("must fail");
@ -57,7 +65,7 @@ async fn single_file_missing_blob() {
/// than specified in the proto node.
#[tokio::test]
async fn single_file_wrong_blob_size() {
let blob_service = gen_blob_service();
let blob_service: Arc<dyn BlobService> = gen_blob_service().into();
// insert blob into the store
let mut writer = blob_service.open_write().await;
@ -75,6 +83,7 @@ async fn single_file_wrong_blob_size() {
let bs = blob_service.clone();
// Test with a root FileNode of a too big size
{
let directory_service: Arc<dyn DirectoryService> = gen_directory_service().into();
let e = write_nar(
sink(),
&castorepb::node::Node::File(castorepb::FileNode {
@ -84,7 +93,7 @@ async fn single_file_wrong_blob_size() {
executable: false,
}),
bs,
gen_directory_service(),
directory_service,
)
.await
.expect_err("must fail");
@ -100,6 +109,7 @@ async fn single_file_wrong_blob_size() {
let bs = blob_service.clone();
// Test with a root FileNode of a too small size
{
let directory_service: Arc<dyn DirectoryService> = gen_directory_service().into();
let e = write_nar(
sink(),
&castorepb::node::Node::File(castorepb::FileNode {
@ -109,7 +119,7 @@ async fn single_file_wrong_blob_size() {
executable: false,
}),
bs,
gen_directory_service(),
directory_service,
)
.await
.expect_err("must fail");
@ -125,7 +135,8 @@ async fn single_file_wrong_blob_size() {
#[tokio::test]
async fn single_file() {
let blob_service = gen_blob_service();
let blob_service: Arc<dyn BlobService> = gen_blob_service().into();
let directory_service: Arc<dyn DirectoryService> = gen_directory_service().into();
// insert blob into the store
let mut writer = blob_service.open_write().await;
@ -149,7 +160,7 @@ async fn single_file() {
executable: false,
}),
blob_service,
gen_directory_service(),
directory_service,
)
.await
.expect("must succeed");
@ -159,8 +170,8 @@ async fn single_file() {
#[tokio::test]
async fn test_complicated() {
let blob_service = gen_blob_service();
let directory_service = gen_directory_service();
let blob_service: Arc<dyn BlobService> = gen_blob_service().into();
let directory_service: Arc<dyn DirectoryService> = gen_directory_service().into();
// put all data into the stores.
// insert blob into the store