|
14 | 14 | // KIND, either express or implied. See the License for the |
15 | 15 | // specific language governing permissions and limitations |
16 | 16 | // under the License. |
17 | | - |
18 | 17 | //! Object store implem used for testing |
19 | 18 |
|
20 | 19 | use std::{ |
21 | | - fs, io, |
| 20 | + io, |
22 | 21 | io::{Cursor, Read}, |
23 | 22 | sync::Arc, |
24 | 23 | }; |
25 | 24 |
|
26 | | -use crate::datasource::object_store::{ |
27 | | - local::LocalFileSystem, FileMeta, FileMetaStream, ListEntryStream, ObjectReader, |
28 | | - ObjectStore, SizedFile, |
| 25 | +use crate::{ |
| 26 | + datasource::object_store::{ |
| 27 | + FileMeta, FileMetaStream, ListEntryStream, ObjectReader, ObjectStore, SizedFile, |
| 28 | + }, |
| 29 | + error::{DataFusionError, Result}, |
29 | 30 | }; |
30 | | -use crate::error::{DataFusionError, Result}; |
31 | | - |
32 | 31 | use async_trait::async_trait; |
33 | 32 | use futures::{stream, AsyncRead, StreamExt}; |
34 | 33 |
|
35 | 34 | #[derive(Debug)] |
36 | 35 | /// An object store implem that is useful for testing. |
37 | | -/// Can either generate `ObjectReader`s that are filled with zero- |
38 | | -/// bytes or mirror a given file to multiple path. |
| 36 | +/// `ObjectReader`s are filled with zero bytes. |
39 | 37 | pub struct TestObjectStore { |
40 | 38 | /// The `(path,size)` of the files that "exist" in the store |
41 | 39 | files: Vec<(String, u64)>, |
42 | | - /// The file that will be read at all path. If none fille the |
43 | | - /// file with zero-bytes. |
44 | | - mirrored_file: Option<String>, |
45 | 40 | } |
46 | 41 |
|
47 | 42 | impl TestObjectStore { |
48 | 43 | pub fn new_arc(files: &[(&str, u64)]) -> Arc<dyn ObjectStore> { |
49 | 44 | Arc::new(Self { |
50 | 45 | files: files.iter().map(|f| (f.0.to_owned(), f.1)).collect(), |
51 | | - mirrored_file: None, |
52 | | - }) |
53 | | - } |
54 | | - pub fn new_mirror(mirrored_file: String, paths: &[&str]) -> Arc<dyn ObjectStore> { |
55 | | - let metadata = fs::metadata(&mirrored_file).expect("Local file metadata"); |
56 | | - Arc::new(Self { |
57 | | - files: paths |
58 | | - .iter() |
59 | | - .map(|&f| (f.to_owned(), metadata.len())) |
60 | | - .collect(), |
61 | | - mirrored_file: Some(mirrored_file), |
62 | 46 | }) |
63 | 47 | } |
64 | 48 | } |
@@ -96,15 +80,8 @@ impl ObjectStore for TestObjectStore { |
96 | 80 |
|
97 | 81 | fn file_reader(&self, file: SizedFile) -> Result<Arc<dyn ObjectReader>> { |
98 | 82 | match self.files.iter().find(|item| file.path == item.0) { |
99 | | - Some(&(_, size)) if size == file.size => { |
100 | | - if let Some(mirrored_file) = &self.mirrored_file { |
101 | | - Ok(LocalFileSystem {}.file_reader(SizedFile { |
102 | | - path: mirrored_file.clone(), |
103 | | - size, |
104 | | - })?) |
105 | | - } else { |
106 | | - Ok(Arc::new(EmptyObjectReader(size))) |
107 | | - } |
| 83 | + Some((_, size)) if *size == file.size => { |
| 84 | + Ok(Arc::new(EmptyObjectReader(*size))) |
108 | 85 | } |
109 | 86 | Some(_) => Err(DataFusionError::IoError(io::Error::new( |
110 | 87 | io::ErrorKind::NotFound, |
|
0 commit comments