Skip to content

Commit 28c6106

Browse files
authored
chore(meta-service): re-organize tests for raft-store (#18740)
1 parent 599c715 commit 28c6106

File tree

13 files changed

+94
-89
lines changed

13 files changed

+94
-89
lines changed

src/meta/raft-store/src/applier/applier_data/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ use std::sync::Arc;
1616
use std::sync::Mutex;
1717
use std::time::Duration;
1818

19-
use crate::leveled_store::leveled_map::applier_acquirer::WriterPermit;
2019
use crate::leveled_store::view::StateMachineView;
20+
use crate::sm_v003::writer_acquirer::WriterPermit;
2121
use crate::sm_v003::OnChange;
2222

2323
pub(crate) struct ApplierData {

src/meta/raft-store/src/leveled_store/immutable_data/compact_into_stream.rs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,69 @@ impl ImmutableData {
103103
Ok((sys_data, normal_strm.boxed()))
104104
}
105105
}
106+
107+
#[cfg(test)]
108+
mod tests {
109+
use super::*;
110+
use crate::leveled_store::testing_data::build_2_levels_leveled_map_with_expire;
111+
use crate::leveled_store::testing_data::build_3_levels_leveled_map;
112+
113+
#[tokio::test]
114+
async fn test_compact_3_level() -> anyhow::Result<()> {
115+
let lm = build_3_levels_leveled_map().await?;
116+
println!("{:#?}", lm);
117+
118+
lm.freeze_writable_without_permit();
119+
120+
let immutable_data = lm.immutable_data();
121+
122+
let (sys_data, strm) = immutable_data.compact_into_stream().await?;
123+
assert_eq!(
124+
r#"{"last_applied":{"leader_id":{"term":3,"node_id":3},"index":3},"last_membership":{"log_id":{"leader_id":{"term":3,"node_id":3},"index":3},"membership":{"configs":[],"nodes":{}}},"nodes":{"3":{"name":"3","endpoint":{"addr":"3","port":3},"grpc_api_advertise_address":null}},"sequence":7,"data_seq":2}"#,
125+
serde_json::to_string(&sys_data).unwrap()
126+
);
127+
128+
let got = strm
129+
.map_ok(|x| serde_json::to_string(&x).unwrap())
130+
.try_collect::<Vec<_>>()
131+
.await?;
132+
133+
assert_eq!(got, vec![
134+
r#"["kv--/a",{"seq":1,"marked":{"Normal":[1,4,110,117,108,108,2,97,48]}}]"#,
135+
r#"["kv--/d",{"seq":7,"marked":{"Normal":[1,4,110,117,108,108,2,100,50]}}]"#,
136+
r#"["kv--/e",{"seq":6,"marked":{"Normal":[1,4,110,117,108,108,2,101,49]}}]"#,
137+
]);
138+
139+
Ok(())
140+
}
141+
142+
#[tokio::test]
143+
async fn test_export_2_level_with_meta() -> anyhow::Result<()> {
144+
let leveled_map = build_2_levels_leveled_map_with_expire().await?;
145+
leveled_map.freeze_writable_without_permit();
146+
147+
let immutable_data = leveled_map.immutable_data();
148+
149+
let (sys_data, strm) = immutable_data.compact_into_stream().await?;
150+
let got = strm
151+
.map_ok(|x| serde_json::to_string(&x).unwrap())
152+
.try_collect::<Vec<_>>()
153+
.await?;
154+
155+
assert_eq!(
156+
r#"{"last_applied":null,"last_membership":{"log_id":null,"membership":{"configs":[],"nodes":{}}},"nodes":{},"sequence":4,"data_seq":1}"#,
157+
serde_json::to_string(&sys_data).unwrap()
158+
);
159+
160+
assert_eq!(got, vec![
161+
r#"["exp-/00000000000000005000/00000000000000000002",{"seq":2,"marked":{"Normal":[1,4,110,117,108,108,1,98]}}]"#,
162+
r#"["exp-/00000000000000015000/00000000000000000004",{"seq":4,"marked":{"Normal":[1,4,110,117,108,108,1,97]}}]"#,
163+
r#"["exp-/00000000000000020000/00000000000000000003",{"seq":3,"marked":{"Normal":[1,4,110,117,108,108,1,99]}}]"#,
164+
r#"["kv--/a",{"seq":4,"marked":{"Normal":[1,16,123,34,101,120,112,105,114,101,95,97,116,34,58,49,53,125,2,97,49]}}]"#,
165+
r#"["kv--/b",{"seq":2,"marked":{"Normal":[1,15,123,34,101,120,112,105,114,101,95,97,116,34,58,53,125,2,98,48]}}]"#,
166+
r#"["kv--/c",{"seq":3,"marked":{"Normal":[1,16,123,34,101,120,112,105,114,101,95,97,116,34,58,50,48,125,2,99,48]}}]"#,
167+
]);
168+
169+
Ok(())
170+
}
171+
}

src/meta/raft-store/src/leveled_store/immutable_levels/compact_all.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ mod tests {
7171
use state_machine_api::KVMeta;
7272
use state_machine_api::UserKey;
7373

74-
use crate::sm_v003::compact_immutable_levels_test::build_3_levels;
75-
use crate::sm_v003::compact_immutable_levels_test::build_sm_with_expire;
74+
use crate::leveled_store::testing_data::build_2_levels_leveled_map_with_expire;
75+
use crate::leveled_store::testing_data::build_3_levels_leveled_map;
7676

7777
fn s(x: impl ToString) -> String {
7878
x.to_string()
@@ -88,7 +88,7 @@ mod tests {
8888

8989
#[tokio::test]
9090
async fn test_compact_copied_value_and_kv() -> anyhow::Result<()> {
91-
let lm = build_3_levels().await?;
91+
let lm = build_3_levels_leveled_map().await?;
9292

9393
lm.freeze_writable_without_permit();
9494
let immutable_levels = lm.immutable_levels();
@@ -143,12 +143,12 @@ mod tests {
143143

144144
#[tokio::test]
145145
async fn test_compact_expire_index() -> anyhow::Result<()> {
146-
let sm = build_sm_with_expire().await?;
146+
let leveled_map = build_2_levels_leveled_map_with_expire().await?;
147+
148+
leveled_map.freeze_writable_without_permit();
147149

148150
let immutable_levels = {
149-
sm.leveled_map().freeze_writable_without_permit();
150-
let compactor = sm.acquire_compactor("").await;
151-
let immutable_levels = compactor.immutable_levels();
151+
let immutable_levels = leveled_map.immutable_levels();
152152
immutable_levels.compact_all().await
153153
};
154154

src/meta/raft-store/src/leveled_store/leveled_map/compactor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use rotbl::v001::SeqMarked;
2222

2323
use crate::leveled_store::immutable_data::ImmutableData;
2424
use crate::leveled_store::immutable_levels::ImmutableLevels;
25-
use crate::leveled_store::leveled_map::compactor_acquirer::CompactorPermit;
25+
use crate::sm_v003::compactor_acquirer::CompactorPermit;
2626

2727
/// Compactor is responsible for compacting the immutable levels and db.
2828
///

src/meta/raft-store/src/leveled_store/leveled_map/mod.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,14 @@ use seq_marked::InternalSeq;
3030
use crate::leveled_store::immutable::Immutable;
3131
use crate::leveled_store::immutable_data::ImmutableData;
3232
use crate::leveled_store::immutable_levels::ImmutableLevels;
33-
use crate::leveled_store::leveled_map::applier_acquirer::WriterPermit;
34-
use crate::leveled_store::leveled_map::compactor_acquirer::CompactorPermit;
3533
use crate::leveled_store::leveled_map::leveled_map_data::LeveledMapData;
3634
use crate::leveled_store::snapshot::MvccSnapshot;
3735
use crate::leveled_store::snapshot::StateMachineSnapshot;
3836
use crate::leveled_store::view::StateMachineView;
37+
use crate::sm_v003::compactor_acquirer::CompactorPermit;
38+
use crate::sm_v003::writer_acquirer::WriterPermit;
3939

40-
#[cfg(test)]
41-
mod acquire_compactor_test;
42-
43-
pub mod applier_acquirer;
4440
pub mod compactor;
45-
pub mod compactor_acquirer;
4641
mod impl_commit;
4742
mod impl_scoped_seq_bounded_get;
4843
mod impl_scoped_seq_bounded_range;

src/meta/raft-store/src/leveled_store/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ pub mod util;
3030
pub mod value_convert;
3131
pub mod view;
3232

33+
#[cfg(test)]
34+
pub(crate) mod testing_data;
35+
3336
mod db_impl_scoped_seq_bounded_read;
3437
mod db_open_snapshot_impl;
3538
#[cfg(test)]

src/meta/raft-store/src/sm_v003/compact_immutable_levels_test.rs renamed to src/meta/raft-store/src/leveled_store/testing_data/mod.rs

Lines changed: 5 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -12,86 +12,25 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
use databend_common_meta_types::node::Node;
1615
use databend_common_meta_types::raft_types::Membership;
1716
use databend_common_meta_types::raft_types::StoredMembership;
1817
use databend_common_meta_types::Endpoint;
18+
use databend_common_meta_types::Node;
1919
use databend_common_meta_types::UpsertKV;
20-
use futures_util::TryStreamExt;
2120
use map_api::mvcc::ScopedSet;
2221
use maplit::btreemap;
2322
use openraft::testing::log_id;
24-
use pretty_assertions::assert_eq;
2523
use state_machine_api::UserKey;
2624

2725
use crate::leveled_store::leveled_map::LeveledMap;
28-
use crate::sm_v003::sm_v003::SMV003;
29-
30-
#[tokio::test]
31-
async fn test_compact_3_level() -> anyhow::Result<()> {
32-
let lm = build_3_levels().await?;
33-
println!("{:#?}", lm);
34-
35-
lm.freeze_writable_without_permit();
36-
37-
let immutable_data = lm.immutable_data();
38-
39-
let (sys_data, strm) = immutable_data.compact_into_stream().await?;
40-
assert_eq!(
41-
r#"{"last_applied":{"leader_id":{"term":3,"node_id":3},"index":3},"last_membership":{"log_id":{"leader_id":{"term":3,"node_id":3},"index":3},"membership":{"configs":[],"nodes":{}}},"nodes":{"3":{"name":"3","endpoint":{"addr":"3","port":3},"grpc_api_advertise_address":null}},"sequence":7,"data_seq":2}"#,
42-
serde_json::to_string(&sys_data).unwrap()
43-
);
44-
45-
let got = strm
46-
.map_ok(|x| serde_json::to_string(&x).unwrap())
47-
.try_collect::<Vec<_>>()
48-
.await?;
49-
50-
assert_eq!(got, vec![
51-
r#"["kv--/a",{"seq":1,"marked":{"Normal":[1,4,110,117,108,108,2,97,48]}}]"#,
52-
r#"["kv--/d",{"seq":7,"marked":{"Normal":[1,4,110,117,108,108,2,100,50]}}]"#,
53-
r#"["kv--/e",{"seq":6,"marked":{"Normal":[1,4,110,117,108,108,2,101,49]}}]"#,
54-
]);
55-
56-
Ok(())
57-
}
58-
59-
#[tokio::test]
60-
async fn test_export_2_level_with_meta() -> anyhow::Result<()> {
61-
let sm = build_sm_with_expire().await?;
62-
sm.leveled_map().freeze_writable_without_permit();
63-
64-
let mut compactor = sm.acquire_compactor("").await;
65-
66-
let (sys_data, strm) = compactor.compact_into_stream().await?;
67-
let got = strm
68-
.map_ok(|x| serde_json::to_string(&x).unwrap())
69-
.try_collect::<Vec<_>>()
70-
.await?;
71-
72-
assert_eq!(
73-
r#"{"last_applied":null,"last_membership":{"log_id":null,"membership":{"configs":[],"nodes":{}}},"nodes":{},"sequence":4,"data_seq":1}"#,
74-
serde_json::to_string(&sys_data).unwrap()
75-
);
76-
77-
assert_eq!(got, vec![
78-
r#"["exp-/00000000000000005000/00000000000000000002",{"seq":2,"marked":{"Normal":[1,4,110,117,108,108,1,98]}}]"#,
79-
r#"["exp-/00000000000000015000/00000000000000000004",{"seq":4,"marked":{"Normal":[1,4,110,117,108,108,1,97]}}]"#,
80-
r#"["exp-/00000000000000020000/00000000000000000003",{"seq":3,"marked":{"Normal":[1,4,110,117,108,108,1,99]}}]"#,
81-
r#"["kv--/a",{"seq":4,"marked":{"Normal":[1,16,123,34,101,120,112,105,114,101,95,97,116,34,58,49,53,125,2,97,49]}}]"#,
82-
r#"["kv--/b",{"seq":2,"marked":{"Normal":[1,15,123,34,101,120,112,105,114,101,95,97,116,34,58,53,125,2,98,48]}}]"#,
83-
r#"["kv--/c",{"seq":3,"marked":{"Normal":[1,16,123,34,101,120,112,105,114,101,95,97,116,34,58,50,48,125,2,99,48]}}]"#,
84-
]);
85-
86-
Ok(())
87-
}
26+
use crate::sm_v003::SMV003;
8827

8928
/// Create multi levels store:
9029
///
9130
/// l2 | c(D) d
9231
/// l1 | b(D) c e
9332
/// l0 | a b c d // db
94-
pub(crate) async fn build_3_levels() -> anyhow::Result<LeveledMap> {
33+
pub(crate) async fn build_3_levels_leveled_map() -> anyhow::Result<LeveledMap> {
9534
let lm = LeveledMap::default();
9635
lm.with_sys_data(|sd| {
9736
*sd.last_membership_mut() = StoredMembership::new(
@@ -158,7 +97,7 @@ pub(crate) async fn build_3_levels() -> anyhow::Result<LeveledMap> {
15897
/// l1 | a₄ c₃ | 10,1₄ -> ø 15,4₄ -> a 20,3₃ -> c
15998
/// ------------------------------------------------------------
16099
/// l0 | a₁ b₂ | 5,2₂ -> b 10,1₁ -> a
161-
pub(crate) async fn build_sm_with_expire() -> anyhow::Result<SMV003> {
100+
pub(crate) async fn build_2_levels_leveled_map_with_expire() -> anyhow::Result<LeveledMap> {
162101
let mut sm = SMV003::default();
163102

164103
let mut a = sm.new_applier().await;
@@ -178,7 +117,7 @@ pub(crate) async fn build_sm_with_expire() -> anyhow::Result<SMV003> {
178117
.await?;
179118
a.commit().await?;
180119

181-
Ok(sm)
120+
Ok(sm.leveled_map().clone())
182121
}
183122

184123
fn b(x: impl ToString) -> Vec<u8> {

src/meta/raft-store/src/leveled_store/leveled_map/acquire_compactor_test.rs renamed to src/meta/raft-store/src/sm_v003/acquire_compactor_test.rs

File renamed without changes.

src/meta/raft-store/src/leveled_store/leveled_map/compactor_acquirer.rs renamed to src/meta/raft-store/src/sm_v003/compactor_acquirer.rs

File renamed without changes.

src/meta/raft-store/src/sm_v003/mod.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@ pub mod write_entry;
2828
pub mod writer_stat;
2929

3030
#[cfg(test)]
31-
pub(crate) mod compact_immutable_levels_test;
31+
mod acquire_compactor_test;
3232
#[cfg(test)]
3333
mod compact_with_db_test;
34+
pub mod compactor_acquirer;
3435
#[cfg(test)]
3536
pub(crate) mod sm_v003_test;
37+
pub mod writer_acquirer;
3638

3739
pub use sm_v003::OnChange;
3840
pub use sm_v003::SMV003;

0 commit comments

Comments
 (0)