From bddc27d93d7b5059585097e9a6a895159de32037 Mon Sep 17 00:00:00 2001 From: jiacai2050 Date: Mon, 3 Jul 2023 15:30:48 +0800 Subject: [PATCH] add ut --- analytic_engine/src/compaction/picker.rs | 43 +++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/analytic_engine/src/compaction/picker.rs b/analytic_engine/src/compaction/picker.rs index c85c600479..74511f95eb 100644 --- a/analytic_engine/src/compaction/picker.rs +++ b/analytic_engine/src/compaction/picker.rs @@ -940,7 +940,7 @@ mod tests { #[test] fn test_time_window_newest_bucket() { let size_tiered_opts = SizeTieredCompactionOptions::default(); - let tw_picker = TimeWindowPicker::default(); + let tw_picker = TimeWindowPicker { pick_by_seq: false }; // old bucket have enough sst for compaction { let old_bucket = build_file_handles(vec![ @@ -978,6 +978,47 @@ mod tests { } } + #[test] + fn test_time_window_newest_bucket_for_seq() { + let size_tiered_opts = SizeTieredCompactionOptions::default(); + let tw_picker = TimeWindowPicker { pick_by_seq: true }; + // old bucket have enough sst for compaction + { + let old_bucket = build_file_handles(vec![ + (102, TimeRange::new_unchecked_for_test(100, 200)), + (100, TimeRange::new_unchecked_for_test(100, 200)), + (101, TimeRange::new_unchecked_for_test(100, 200)), + ]); + let new_bucket = build_file_handles(vec![ + (200, TimeRange::new_unchecked_for_test(200, 300)), + (201, TimeRange::new_unchecked_for_test(200, 300)), + ]); + + let buckets = hash_map! { 100 => old_bucket, 200 => new_bucket }; + let bucket = tw_picker + .newest_bucket(buckets, size_tiered_opts, 200) + .unwrap(); + assert_eq!( + vec![102, 100, 101], + bucket.into_iter().map(|f| f.size()).collect::>() + ); + } + + // old bucket have only 1 sst, which is not enough for compaction + { + let old_bucket = + build_file_handles(vec![(100, TimeRange::new_unchecked_for_test(100, 200))]); + let new_bucket = build_file_handles(vec![ + (200, TimeRange::new_unchecked_for_test(200, 300)), + (201, TimeRange::new_unchecked_for_test(200, 300)), + ]); + + let buckets = hash_map! { 100 => old_bucket, 200 => new_bucket }; + let bucket = tw_picker.newest_bucket(buckets, size_tiered_opts, 200); + assert_eq!(None, bucket); + } + } + #[test] fn test_size_pick_by_max_seq() { let input_files = build_file_handles_seq(vec![