Skip to content

Commit 30ec503

Browse files
SteveLauCdrmingdrmer
authored andcommitted
Test: add an AsyncRuntime test suite
1 parent 801ca4d commit 30ec503

File tree

13 files changed

+461
-51
lines changed

13 files changed

+461
-51
lines changed

cluster_benchmark/tests/benchmark/store/test.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::sync::Arc;
22

3-
use openraft::testing::StoreBuilder;
4-
use openraft::testing::Suite;
3+
use openraft::testing::log::StoreBuilder;
4+
use openraft::testing::log::Suite;
55
use openraft::StorageError;
66

77
use crate::store::LogStore;

examples/raft-kv-memstore/src/test.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::sync::Arc;
22

3-
use openraft::testing::StoreBuilder;
4-
use openraft::testing::Suite;
3+
use openraft::testing::log::StoreBuilder;
4+
use openraft::testing::log::Suite;
55
use openraft::StorageError;
66

77
use crate::store::LogStore;

openraft/src/docs/getting_started/getting-started.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ Most of the APIs are quite straightforward, except two indirect APIs:
176176
177177
### Ensure the storage implementation is correct
178178
179-
There is a [Test suite for RaftLogStorage and RaftStateMachine][`Suite`] available in Openraft.
179+
There is a [Test suite for RaftLogStorage and RaftStateMachine][`LogSuite`] available in Openraft.
180180
If your implementation passes the tests, Openraft should work well with it.
181181
To test your implementation, run `Suite::test_all()` with a [`StoreBuilder`] implementation,
182182
as shown in the [`RocksStore` test](https://github.com/datafuselabs/openraft/blob/main/stores/rocksstore/src/test.rs).
@@ -456,7 +456,7 @@ Additionally, two test scripts for setting up a cluster are available:
456456
[`build_snapshot()`]: `crate::storage::RaftSnapshotBuilder::build_snapshot`
457457
[`Snapshot`]: `crate::storage::Snapshot`
458458

459-
[`StoreBuilder`]: `crate::testing::StoreBuilder`
460-
[`Suite`]: `crate::testing::Suite`
459+
[`StoreBuilder`]: `crate::testing::log::StoreBuilder`
460+
[`LogSuite`]: `crate::testing::log::Suite`
461461

462462
[`docs::connect-to-correct-node`]: `crate::docs::cluster_control::dynamic_membership#ensure-connection-to-the-correct-node`

openraft/src/testing/common.rs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//! Testing utilities used by all kinds of tests.
2+
3+
use std::collections::BTreeSet;
4+
5+
use crate::entry::RaftEntry;
6+
use crate::CommittedLeaderId;
7+
use crate::LogId;
8+
use crate::RaftTypeConfig;
9+
10+
/// Builds a log id, for testing purposes.
11+
pub fn log_id<NID: crate::NodeId>(term: u64, node_id: NID, index: u64) -> LogId<NID> {
12+
LogId::<NID> {
13+
leader_id: CommittedLeaderId::new(term, node_id),
14+
index,
15+
}
16+
}
17+
18+
/// Create a blank log entry for test.
19+
pub fn blank_ent<C: RaftTypeConfig>(term: u64, node_id: C::NodeId, index: u64) -> crate::Entry<C> {
20+
crate::Entry::<C>::new_blank(LogId::new(CommittedLeaderId::new(term, node_id), index))
21+
}
22+
23+
/// Create a membership log entry without learner config for test.
24+
pub fn membership_ent<C: RaftTypeConfig>(
25+
term: u64,
26+
node_id: C::NodeId,
27+
index: u64,
28+
config: Vec<BTreeSet<C::NodeId>>,
29+
) -> crate::Entry<C> {
30+
crate::Entry::new_membership(
31+
LogId::new(CommittedLeaderId::new(term, node_id), index),
32+
crate::Membership::new(config, None),
33+
)
34+
}

openraft/src/testing/log/mod.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
//! Suite for testing implementations of [`RaftLogStorage`] and [`RaftStateMachine`].
2+
//!
3+
//! [`RaftLogStorage`]: crate::storage::RaftLogStorage
4+
//! [`RaftStateMachine`]: crate::storage::RaftStateMachine
5+
6+
mod store_builder;
7+
mod suite;
8+
9+
pub use store_builder::StoreBuilder;
10+
pub use suite::Suite;

openraft/src/testing/suite.rs renamed to openraft/src/testing/log/suite.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use crate::storage::RaftLogReaderExt;
2222
use crate::storage::RaftLogStorage;
2323
use crate::storage::RaftStateMachine;
2424
use crate::storage::StorageHelper;
25-
use crate::testing::StoreBuilder;
25+
use crate::testing::log::StoreBuilder;
2626
use crate::type_config::TypeConfigExt;
2727
use crate::vote::CommittedLeaderId;
2828
use crate::LogId;

openraft/src/testing/mod.rs

Lines changed: 4 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,7 @@
11
//! Testing utilities for OpenRaft.
22
3-
mod store_builder;
4-
mod suite;
3+
pub mod common;
4+
pub mod log;
5+
pub mod runtime;
56

6-
use std::collections::BTreeSet;
7-
8-
pub use store_builder::StoreBuilder;
9-
pub use suite::Suite;
10-
11-
use crate::entry::RaftEntry;
12-
use crate::CommittedLeaderId;
13-
use crate::LogId;
14-
use crate::RaftTypeConfig;
15-
16-
/// Builds a log id, for testing purposes.
17-
pub fn log_id<NID: crate::NodeId>(term: u64, node_id: NID, index: u64) -> LogId<NID> {
18-
LogId::<NID> {
19-
leader_id: CommittedLeaderId::new(term, node_id),
20-
index,
21-
}
22-
}
23-
24-
/// Create a blank log entry for test.
25-
pub fn blank_ent<C: RaftTypeConfig>(term: u64, node_id: C::NodeId, index: u64) -> crate::Entry<C> {
26-
crate::Entry::<C>::new_blank(LogId::new(CommittedLeaderId::new(term, node_id), index))
27-
}
28-
29-
/// Create a membership log entry without learner config for test.
30-
pub fn membership_ent<C: RaftTypeConfig>(
31-
term: u64,
32-
node_id: C::NodeId,
33-
index: u64,
34-
config: Vec<BTreeSet<C::NodeId>>,
35-
) -> crate::Entry<C> {
36-
crate::Entry::new_membership(
37-
LogId::new(CommittedLeaderId::new(term, node_id), index),
38-
crate::Membership::new(config, None),
39-
)
40-
}
7+
pub use common::*;

0 commit comments

Comments
 (0)