diff --git a/Cargo.lock b/Cargo.lock index 724162e3..450b3e5e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -35,12 +35,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "autocfg" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" - [[package]] name = "bincode" version = "1.3.1" @@ -75,17 +69,6 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -[[package]] -name = "chrono" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942f72db697d8767c22d46a598e01f2d3b475501ea43d0db4f16d90259182d0b" -dependencies = [ - "num-integer", - "num-traits", - "time", -] - [[package]] name = "clap" version = "2.33.3" @@ -166,7 +149,7 @@ checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" dependencies = [ "cfg-if", "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "wasi", ] [[package]] @@ -332,25 +315,6 @@ dependencies = [ "winapi 0.3.9", ] -[[package]] -name = "num-integer" -version = "0.1.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" -dependencies = [ - "autocfg", - "num-traits", -] - -[[package]] -name = "num-traits" -version = "0.2.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" -dependencies = [ - "autocfg", -] - [[package]] name = "num_cpus" version = "1.13.0" @@ -571,7 +535,6 @@ version = "0.4.1" dependencies = [ "bincode", "bytes", - "chrono", "clap", "env_logger", "lazy_static", @@ -611,17 +574,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "time" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi 0.3.9", -] - [[package]] name = "tokio" version = "0.2.22" @@ -703,12 +655,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "winapi" version = "0.2.8" diff --git a/server/Cargo.toml b/server/Cargo.toml index f717eb88..bb5b6ccb 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -14,7 +14,6 @@ bincode = "1.3.1" parking_lot = "0.11.0" lazy_static = "1.4.0" serde_derive = "1.0.115" -chrono = "0.4.15" serde = {version = "1.0.115", features= ["derive"]} toml = "0.5.6" clap = {version = "2.33.3", features=["yaml"]} diff --git a/server/src/coredb/mod.rs b/server/src/coredb/mod.rs index 0d359864..67f7c6c4 100644 --- a/server/src/coredb/mod.rs +++ b/server/src/coredb/mod.rs @@ -26,7 +26,6 @@ use crate::protocol::Connection; use crate::protocol::Query; use crate::queryengine; use bytes::Bytes; -use libtdb::util::terminal; use libtdb::TResult; use parking_lot::RwLock; use parking_lot::RwLockReadGuard; @@ -169,7 +168,7 @@ impl CoreDB { shared: Arc::new(Shared { bgsave_task: Notify::new(), table: RwLock::new(Coretable { - coremap: HashMap::new(), + coremap: HashMap::::new(), terminate: false, }), }), diff --git a/server/src/main.rs b/server/src/main.rs index 46810064..7d5e7a9c 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -21,13 +21,11 @@ use tokio::net::TcpListener; mod config; -use chrono::Local; use std::env; mod coredb; mod dbnet; mod diskstore; mod kvengine; -use std::io::Write; mod protocol; mod queryengine; mod resp; diff --git a/server/src/tests/mod.rs b/server/src/tests/mod.rs index 0e40a6d7..8f1b55d0 100644 --- a/server/src/tests/mod.rs +++ b/server/src/tests/mod.rs @@ -22,10 +22,7 @@ //! This module contains automated tests for queries use crate::dbnet; -use std::io::ErrorKind; use std::net::{Shutdown, SocketAddr}; -use std::thread; -use std::time::Duration; use tokio::net::{TcpListener, TcpStream}; use tokio::prelude::*; @@ -36,13 +33,7 @@ async fn start_server() -> Option { // HACK(@ohsayan): Since we want to start the server if it is not already // running, or use it if it is already running, we just return none if we failed // to bind to the port, since this will _almost_ never happen on our CI - let listener = match TcpListener::bind(ADDR).await { - Ok(l) => l, - Err(e) => match e.kind() { - ErrorKind::AddrInUse => return None, - x @ _ => panic!("Failed to start bg async server: '{:?}'", x), - }, - }; + let listener = TcpListener::bind(ADDR).await.unwrap(); let addr = if let Ok(addr) = listener.local_addr() { Some(addr) } else { @@ -52,29 +43,10 @@ async fn start_server() -> Option { addr } -async fn try_get_stream() -> TcpStream { - const SLEEP_DURATION: u64 = 4; - let mut server = start_server().await; - thread::sleep(Duration::from_secs(SLEEP_DURATION)); // Sleep for four seconds - if let Ok(stream) = TcpStream::connect(ADDR).await { - return stream; - } - loop { - // try starting the server again - server = start_server().await; - thread::sleep(Duration::from_secs(SLEEP_DURATION)); // Sleep for four seconds - if let Ok(stream) = TcpStream::connect(ADDR).await { - return stream; - } else { - continue; - } - } -} - #[tokio::test] -async fn test_heya() { +async fn test_queries() { let server = start_server().await; - let mut stream = try_get_stream().await; + let mut stream = TcpStream::connect(ADDR).await.unwrap(); stream .write_all(b"#2\n*1\n#2\n&1\n#4\nHEYA\n") .await @@ -82,15 +54,9 @@ async fn test_heya() { let res_should_be = "#2\n*1\n#2\n&1\n+4\nHEY!\n".as_bytes().to_owned(); let mut response = vec![0; res_should_be.len()]; stream.read_exact(&mut response).await.unwrap(); - stream.shutdown(Shutdown::Write).unwrap(); assert_eq!(response.to_vec(), res_should_be); -} - -#[tokio::test] -#[ignore] -async fn test_set_single_nil() { - let server = start_server().await; - let mut stream = try_get_stream().await; + println!("HEYA complete"); + // Test single nil value stream .write_all(b"#2\n*1\n#2\n&2\n#3\nGET\n#1\nx\n") .await @@ -98,22 +64,19 @@ async fn test_set_single_nil() { let res_should_be = "#2\n*1\n#2\n&1\n!1\n1\n".as_bytes().to_owned(); let mut response = vec![0; res_should_be.len()]; stream.read_exact(&mut response).await.unwrap(); - stream.shutdown(Shutdown::Write).unwrap(); assert_eq!(response, res_should_be); -} + println!("Single NIL complete"); -#[tokio::test] -#[ignore] -async fn test_set_multiple_nil() { - let server = start_server().await; - let mut stream = try_get_stream().await; + // Test multiple nil stream - .write_all(b"#2\n*1\n#2\n&3\n#3\nGET\n#1\nx\n#2\nex\n") + .write_all(b"#2\n*1\n#2\n&3\n#4\nMGET\n#1\nx\n#2\nex\n") .await .unwrap(); let res_should_be = b"#2\n*1\n#2\n&2\n!1\n1\n!1\n1"; let mut response = vec![0; res_should_be.len()]; stream.read_exact(&mut response).await.unwrap(); - stream.shutdown(Shutdown::Write).unwrap(); assert_eq!(response, res_should_be.to_vec()); + println!("Multiple NIL complete"); + // Stop the server + stream.shutdown(Shutdown::Write).unwrap(); }