소스 검색

Move kvraft testing_utils to test_configs.

Jing Yang 4 년 전
부모
커밋
4b761562b0

+ 2 - 3
kvraft/Cargo.toml

@@ -4,16 +4,14 @@ version = "0.1.0"
 edition = "2018"
 
 [dependencies]
+async-trait = "0.1"
 bincode = "1.3.3"
-bytes = "1.0"
 labrpc = "0.1.12"
 parking_lot = "0.11.1"
 rand = "0.8"
 ruaft = { path = "..", features = ["integration-test"] }
-linearizability = { path = "../linearizability" }
 serde = "1.0.116"
 serde_derive = "1.0.116"
-test_configs = { path = "../test_configs" }
 test_utils = { path = "../test_utils" }
 tokio = { version = "1.7", features = ["time", "parking_lot"] }
 log = "0.4.14"
@@ -21,3 +19,4 @@ log = "0.4.14"
 [dev-dependencies]
 scopeguard = "1.1.0"
 stdext = "0.3.0"
+test_configs = { path = "../test_configs" }

+ 2 - 2
kvraft/src/common.rs

@@ -52,8 +52,8 @@ impl UniqueIdSequence {
     }
 }
 
-pub(crate) const GET: &str = "KVServer.Get";
-pub(crate) const PUT_APPEND: &str = "KVServer.PutAppend";
+pub const GET: &str = "KVServer.Get";
+pub const PUT_APPEND: &str = "KVServer.PutAppend";
 
 #[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
 pub enum PutAppendEnum {

+ 1 - 1
kvraft/src/lib.rs

@@ -1,4 +1,5 @@
 pub use client::Clerk;
+pub use common::{GET, PUT_APPEND};
 pub use server::KVServer;
 
 mod client;
@@ -6,4 +7,3 @@ mod common;
 mod server;
 
 mod snapshot_holder;
-pub mod testing_utils;

+ 0 - 35
kvraft/src/testing_utils/rpcs.rs

@@ -1,35 +0,0 @@
-use labrpc::{Network, Server};
-use parking_lot::Mutex;
-
-use test_configs::make_rpc_handler;
-
-use crate::common::{GET, PUT_APPEND};
-use crate::server::KVServer;
-
-pub fn register_kv_server<
-    KV: 'static + AsRef<KVServer> + Clone,
-    S: AsRef<str>,
->(
-    kv: KV,
-    name: S,
-    network: &Mutex<Network>,
-) -> std::io::Result<()> {
-    let mut network = network.lock();
-    let server_name = name.as_ref();
-    let mut server = Server::make_server(server_name);
-
-    let kv_clone = kv.clone();
-    server.register_rpc_handler(
-        GET.to_owned(),
-        make_rpc_handler(move |args| kv_clone.as_ref().get(args)),
-    )?;
-
-    server.register_rpc_handler(
-        PUT_APPEND.to_owned(),
-        make_rpc_handler(move |args| kv.as_ref().put_append(args)),
-    )?;
-
-    network.add_server(server_name, server);
-
-    Ok(())
-}

+ 3 - 3
kvraft/tests/service_test.rs

@@ -1,13 +1,13 @@
 use std::sync::atomic::{AtomicUsize, Ordering};
 use std::sync::Arc;
 
-use kvraft::testing_utils::config::{
+use scopeguard::defer;
+use test_configs::kvraft::config::{
     make_config, sleep_election_timeouts, sleep_millis,
 };
-use kvraft::testing_utils::generic_test::{
+use test_configs::kvraft::generic_test::{
     generic_test, spawn_clients, GenericTestParams,
 };
-use scopeguard::defer;
 use test_utils::init_test_log;
 use test_utils::thread_local_logger::LocalLogger;
 

+ 2 - 0
test_configs/Cargo.toml

@@ -8,7 +8,9 @@ anyhow = "1.0"
 async-trait = "0.1"
 bincode = "1.3.3"
 bytes = "1.0"
+kvraft = { path = "../kvraft" }
 labrpc = "0.1.12"
+linearizability = { path = "../linearizability" }
 log = "0.4"
 parking_lot = "0.11.1"
 rand = "0.8"

+ 4 - 5
kvraft/src/testing_utils/config.rs → test_configs/src/kvraft/config.rs

@@ -5,11 +5,10 @@ use parking_lot::Mutex;
 use rand::seq::SliceRandom;
 use rand::thread_rng;
 
-use test_configs::{register_server, Persister};
+use crate::{register_kv_server, register_server, Persister};
 
-use crate::client::Clerk;
-use crate::server::KVServer;
-use crate::testing_utils::rpcs::register_kv_server;
+use kvraft::Clerk;
+use kvraft::KVServer;
 
 struct ConfigState {
     kv_servers: Vec<Option<Arc<KVServer>>>,
@@ -46,7 +45,7 @@ impl Config {
         {
             let mut network = self.network.lock();
             for j in 0..self.server_count {
-                clients.push(test_configs::RpcClient::new(network.make_client(
+                clients.push(crate::RpcClient::new(network.make_client(
                     Self::client_name(index, j),
                     Self::server_name(j),
                 )))

+ 2 - 2
kvraft/src/testing_utils/generic_test.rs → test_configs/src/kvraft/generic_test.rs

@@ -9,11 +9,11 @@ use test_utils::thread_local_logger::LocalLogger;
 
 use linearizability::{KvInput, KvModel, KvOp, KvOutput, Operation};
 
-use crate::testing_utils::config::{
+use super::config::{
     make_config, sleep_election_timeouts, sleep_millis, Config,
     LONG_ELECTION_TIMEOUT_MILLIS,
 };
-use crate::Clerk;
+use kvraft::Clerk;
 
 pub fn spawn_clients<T, Func>(
     config: Arc<Config>,

+ 0 - 1
kvraft/src/testing_utils/mod.rs → test_configs/src/kvraft/mod.rs

@@ -1,3 +1,2 @@
 pub mod config;
 pub mod generic_test;
-mod rpcs;

+ 2 - 1
test_configs/src/lib.rs

@@ -1,6 +1,7 @@
+pub mod kvraft;
 mod persister;
 pub mod raft;
 mod rpcs;
 
 pub use persister::Persister;
-pub use rpcs::{make_rpc_handler, register_server, RpcClient};
+use rpcs::{register_kv_server, register_server, RpcClient};

+ 28 - 0
test_configs/src/rpcs.rs

@@ -4,6 +4,7 @@ use parking_lot::Mutex;
 use serde::de::DeserializeOwned;
 use serde::Serialize;
 
+use kvraft::{KVServer, GET, PUT_APPEND};
 use ruaft::{
     AppendEntriesArgs, AppendEntriesReply, InstallSnapshotArgs,
     InstallSnapshotReply, Raft, RequestVoteArgs, RequestVoteReply,
@@ -129,6 +130,33 @@ pub fn register_server<
 
     Ok(())
 }
+pub fn register_kv_server<
+    KV: 'static + AsRef<KVServer> + Clone,
+    S: AsRef<str>,
+>(
+    kv: KV,
+    name: S,
+    network: &Mutex<Network>,
+) -> std::io::Result<()> {
+    let mut network = network.lock();
+    let server_name = name.as_ref();
+    let mut server = Server::make_server(server_name);
+
+    let kv_clone = kv.clone();
+    server.register_rpc_handler(
+        GET.to_owned(),
+        make_rpc_handler(move |args| kv_clone.as_ref().get(args)),
+    )?;
+
+    server.register_rpc_handler(
+        PUT_APPEND.to_owned(),
+        make_rpc_handler(move |args| kv.as_ref().put_append(args)),
+    )?;
+
+    network.add_server(server_name, server);
+
+    Ok(())
+}
 
 #[cfg(test)]
 mod tests {

+ 2 - 2
tests/snapshot_tests.rs

@@ -2,8 +2,8 @@ use std::sync::Arc;
 
 use scopeguard::defer;
 
-use kvraft::testing_utils::config::{make_config, sleep_election_timeouts};
-use kvraft::testing_utils::generic_test::{generic_test, GenericTestParams};
+use test_configs::kvraft::config::{make_config, sleep_election_timeouts};
+use test_configs::kvraft::generic_test::{generic_test, GenericTestParams};
 use test_utils::init_test_log;
 
 #[test]