diff options
author | Florian Klink <flokli@flokli.de> | 2023-06-09T15·22+0300 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-06-12T10·24+0000 |
commit | aa7bdc1199bfbb69091dda942a82812257e30bc4 (patch) | |
tree | 933964562f5746274ef6df59cfa956aca73b0807 /tvix/store/src/tests | |
parent | 7725eb53ad67730e92a3839a6c10925c668e5586 (diff) |
refactor(tvix/store): use Arc instead of Box r/6273
This allows us to blob services without closing them before putting them in a box. We currently need to use Arc<_>, not Rc<_>, because the GRPC wrappers require Sync. Change-Id: I679c5f06b62304f5b0456cfefe25a0a881de7c84 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8738 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/store/src/tests')
-rw-r--r-- | tvix/store/src/tests/import.rs | 22 | ||||
-rw-r--r-- | tvix/store/src/tests/nar_renderer.rs | 28 | ||||
-rw-r--r-- | tvix/store/src/tests/utils.rs | 14 |
3 files changed, 35 insertions, 29 deletions
diff --git a/tvix/store/src/tests/import.rs b/tvix/store/src/tests/import.rs index 3498cf444640..ab6557421947 100644 --- a/tvix/store/src/tests/import.rs +++ b/tvix/store/src/tests/import.rs @@ -18,8 +18,8 @@ fn symlink() { .unwrap(); let root_node = ingest_path( - &mut gen_blob_service(), - &mut gen_directory_service(), + gen_blob_service(), + gen_directory_service(), tmpdir.path().join("doesntmatter"), ) .expect("must succeed"); @@ -39,11 +39,11 @@ fn single_file() { std::fs::write(tmpdir.path().join("root"), HELLOWORLD_BLOB_CONTENTS).unwrap(); - let mut blob_service = gen_blob_service(); + let blob_service = gen_blob_service(); let root_node = ingest_path( - &mut blob_service, - &mut gen_directory_service(), + blob_service.clone(), + gen_directory_service(), tmpdir.path().join("root"), ) .expect("must succeed"); @@ -75,11 +75,15 @@ fn complicated() { // File ``keep/.keep` std::fs::write(tmpdir.path().join("keep").join(".keep"), vec![]).unwrap(); - let mut blob_service = gen_blob_service(); - let mut directory_service = gen_directory_service(); + let blob_service = gen_blob_service(); + let directory_service = gen_directory_service(); - let root_node = ingest_path(&mut blob_service, &mut directory_service, tmpdir.path()) - .expect("must succeed"); + let root_node = ingest_path( + blob_service.clone(), + directory_service.clone(), + tmpdir.path(), + ) + .expect("must succeed"); // ensure root_node matched expectations assert_eq!( diff --git a/tvix/store/src/tests/nar_renderer.rs b/tvix/store/src/tests/nar_renderer.rs index bc9cc635eec3..37a01c2e1826 100644 --- a/tvix/store/src/tests/nar_renderer.rs +++ b/tvix/store/src/tests/nar_renderer.rs @@ -19,8 +19,8 @@ fn single_symlink() { target: "/nix/store/somewhereelse".to_string(), }), // don't put anything in the stores, as we don't actually do any requests. - &gen_blob_service(), - &gen_directory_service(), + gen_blob_service(), + gen_directory_service(), ) .expect("must succeed"); @@ -41,8 +41,8 @@ fn single_file_missing_blob() { executable: false, }), // the blobservice is empty intentionally, to provoke the error. - &gen_blob_service(), - &gen_directory_service(), + gen_blob_service(), + gen_directory_service(), ) .expect_err("must fail"); @@ -81,8 +81,8 @@ fn single_file_wrong_blob_size() { size: 42, // <- note the wrong size here! executable: false, }), - &blob_service, - &gen_directory_service(), + blob_service.clone(), + gen_directory_service(), ) .expect_err("must fail"); @@ -106,8 +106,8 @@ fn single_file_wrong_blob_size() { size: 2, // <- note the wrong size here! executable: false, }), - &blob_service, - &gen_directory_service(), + blob_service, + gen_directory_service(), ) .expect_err("must fail"); @@ -143,8 +143,8 @@ fn single_file() { size: HELLOWORLD_BLOB_CONTENTS.len() as u32, executable: false, }), - &blob_service, - &gen_directory_service(), + blob_service, + gen_directory_service(), ) .expect("must succeed"); @@ -180,8 +180,8 @@ fn test_complicated() { digest: DIRECTORY_COMPLICATED.digest().to_vec(), size: DIRECTORY_COMPLICATED.size(), }), - &blob_service, - &directory_service, + blob_service.clone(), + directory_service.clone(), ) .expect("must succeed"); @@ -194,8 +194,8 @@ fn test_complicated() { digest: DIRECTORY_COMPLICATED.digest().to_vec(), size: DIRECTORY_COMPLICATED.size(), }), - &blob_service, - &directory_service, + blob_service, + directory_service, ) .expect("must succeed"); diff --git a/tvix/store/src/tests/utils.rs b/tvix/store/src/tests/utils.rs index 285db449d36d..171919e4e777 100644 --- a/tvix/store/src/tests/utils.rs +++ b/tvix/store/src/tests/utils.rs @@ -1,20 +1,22 @@ +use std::sync::Arc; + use crate::{ blobservice::{BlobService, MemoryBlobService}, directoryservice::{DirectoryService, MemoryDirectoryService}, pathinfoservice::{MemoryPathInfoService, PathInfoService}, }; -pub fn gen_blob_service() -> Box<dyn BlobService> { - Box::new(MemoryBlobService::default()) +pub fn gen_blob_service() -> Arc<dyn BlobService> { + Arc::new(MemoryBlobService::default()) } -pub fn gen_directory_service() -> Box<dyn DirectoryService> { - Box::new(MemoryDirectoryService::default()) +pub fn gen_directory_service() -> Arc<dyn DirectoryService> { + Arc::new(MemoryDirectoryService::default()) } pub fn gen_pathinfo_service( - blob_service: Box<dyn BlobService>, - directory_service: Box<dyn DirectoryService>, + blob_service: Arc<dyn BlobService>, + directory_service: Arc<dyn DirectoryService>, ) -> impl PathInfoService { MemoryPathInfoService::new(blob_service, directory_service) } |