Skip to content

Commit e538289

Browse files
authored
Cleanup MetadataLoader tests (#6484)
1 parent 551eaab commit e538289

1 file changed

Lines changed: 24 additions & 15 deletions

File tree

parquet/src/file/metadata/reader.rs

Lines changed: 24 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,7 @@ mod async_tests {
841841

842842
struct MetadataFetchFn<F>(F);
843843

844-
impl<'a, F, Fut> MetadataFetch for &'a mut MetadataFetchFn<F>
844+
impl<F, Fut> MetadataFetch for MetadataFetchFn<F>
845845
where
846846
F: FnMut(Range<usize>) -> Fut + Send,
847847
Fut: Future<Output = Result<Bytes>> + Send,
@@ -870,68 +870,74 @@ mod async_tests {
870870
let expected = expected.file_metadata().schema();
871871
let fetch_count = AtomicUsize::new(0);
872872

873-
let fetch = |range| {
873+
let mut fetch = |range| {
874874
fetch_count.fetch_add(1, Ordering::SeqCst);
875875
futures::future::ready(read_range(&mut file, range))
876876
};
877877

878-
let mut f = MetadataFetchFn(fetch);
878+
let input = MetadataFetchFn(&mut fetch);
879879
let actual = ParquetMetaDataReader::new()
880-
.load_and_finish(&mut f, len)
880+
.load_and_finish(input, len)
881881
.await
882882
.unwrap();
883883
assert_eq!(actual.file_metadata().schema(), expected);
884884
assert_eq!(fetch_count.load(Ordering::SeqCst), 2);
885885

886886
// Metadata hint too small - below footer size
887887
fetch_count.store(0, Ordering::SeqCst);
888+
let input = MetadataFetchFn(&mut fetch);
888889
let actual = ParquetMetaDataReader::new()
889890
.with_prefetch_hint(Some(7))
890-
.load_and_finish(&mut f, len)
891+
.load_and_finish(input, len)
891892
.await
892893
.unwrap();
893894
assert_eq!(actual.file_metadata().schema(), expected);
894895
assert_eq!(fetch_count.load(Ordering::SeqCst), 2);
895896

896897
// Metadata hint too small
897898
fetch_count.store(0, Ordering::SeqCst);
899+
let input = MetadataFetchFn(&mut fetch);
898900
let actual = ParquetMetaDataReader::new()
899901
.with_prefetch_hint(Some(10))
900-
.load_and_finish(&mut f, len)
902+
.load_and_finish(input, len)
901903
.await
902904
.unwrap();
903905
assert_eq!(actual.file_metadata().schema(), expected);
904906
assert_eq!(fetch_count.load(Ordering::SeqCst), 2);
905907

906908
// Metadata hint too large
907909
fetch_count.store(0, Ordering::SeqCst);
910+
let input = MetadataFetchFn(&mut fetch);
908911
let actual = ParquetMetaDataReader::new()
909912
.with_prefetch_hint(Some(500))
910-
.load_and_finish(&mut f, len)
913+
.load_and_finish(input, len)
911914
.await
912915
.unwrap();
913916
assert_eq!(actual.file_metadata().schema(), expected);
914917
assert_eq!(fetch_count.load(Ordering::SeqCst), 1);
915918

916919
// Metadata hint exactly correct
917920
fetch_count.store(0, Ordering::SeqCst);
921+
let input = MetadataFetchFn(&mut fetch);
918922
let actual = ParquetMetaDataReader::new()
919923
.with_prefetch_hint(Some(428))
920-
.load_and_finish(&mut f, len)
924+
.load_and_finish(input, len)
921925
.await
922926
.unwrap();
923927
assert_eq!(actual.file_metadata().schema(), expected);
924928
assert_eq!(fetch_count.load(Ordering::SeqCst), 1);
925929

930+
let input = MetadataFetchFn(&mut fetch);
926931
let err = ParquetMetaDataReader::new()
927-
.load_and_finish(&mut f, 4)
932+
.load_and_finish(input, 4)
928933
.await
929934
.unwrap_err()
930935
.to_string();
931936
assert_eq!(err, "EOF: file size of 4 is less than footer");
932937

938+
let input = MetadataFetchFn(&mut fetch);
933939
let err = ParquetMetaDataReader::new()
934-
.load_and_finish(&mut f, 20)
940+
.load_and_finish(input, 20)
935941
.await
936942
.unwrap_err()
937943
.to_string();
@@ -948,39 +954,42 @@ mod async_tests {
948954
futures::future::ready(read_range(&mut file, range))
949955
};
950956

951-
let mut f = MetadataFetchFn(&mut fetch);
957+
let f = MetadataFetchFn(&mut fetch);
952958
let mut loader = ParquetMetaDataReader::new().with_page_indexes(true);
953-
loader.try_load(&mut f, len).await.unwrap();
959+
loader.try_load(f, len).await.unwrap();
954960
assert_eq!(fetch_count.load(Ordering::SeqCst), 3);
955961
let metadata = loader.finish().unwrap();
956962
assert!(metadata.offset_index().is_some() && metadata.column_index().is_some());
957963

958964
// Prefetch just footer exactly
959965
fetch_count.store(0, Ordering::SeqCst);
966+
let f = MetadataFetchFn(&mut fetch);
960967
let mut loader = ParquetMetaDataReader::new()
961968
.with_page_indexes(true)
962969
.with_prefetch_hint(Some(1729));
963-
loader.try_load(&mut f, len).await.unwrap();
970+
loader.try_load(f, len).await.unwrap();
964971
assert_eq!(fetch_count.load(Ordering::SeqCst), 2);
965972
let metadata = loader.finish().unwrap();
966973
assert!(metadata.offset_index().is_some() && metadata.column_index().is_some());
967974

968975
// Prefetch more than footer but not enough
969976
fetch_count.store(0, Ordering::SeqCst);
977+
let f = MetadataFetchFn(&mut fetch);
970978
let mut loader = ParquetMetaDataReader::new()
971979
.with_page_indexes(true)
972980
.with_prefetch_hint(Some(130649));
973-
loader.try_load(&mut f, len).await.unwrap();
981+
loader.try_load(f, len).await.unwrap();
974982
assert_eq!(fetch_count.load(Ordering::SeqCst), 2);
975983
let metadata = loader.finish().unwrap();
976984
assert!(metadata.offset_index().is_some() && metadata.column_index().is_some());
977985

978986
// Prefetch exactly enough
979987
fetch_count.store(0, Ordering::SeqCst);
988+
let f = MetadataFetchFn(&mut fetch);
980989
let metadata = ParquetMetaDataReader::new()
981990
.with_page_indexes(true)
982991
.with_prefetch_hint(Some(130650))
983-
.load_and_finish(&mut f, len)
992+
.load_and_finish(f, len)
984993
.await
985994
.unwrap();
986995
assert_eq!(fetch_count.load(Ordering::SeqCst), 1);

0 commit comments

Comments
 (0)