From 564a03c0a21986374b8626ff413829ca57307fe7 Mon Sep 17 00:00:00 2001 From: weedge Date: Mon, 16 Oct 2023 17:14:53 +0800 Subject: [PATCH 1/3] change test start_redis_server_with_module add module args Signed-off-by: weedge --- tests/integration.rs | 66 +++++++++++++++++++++++++------------------- tests/utils.rs | 12 ++++++-- 2 files changed, 47 insertions(+), 31 deletions(-) diff --git a/tests/integration.rs b/tests/integration.rs index 7864e366..ce7bbc61 100644 --- a/tests/integration.rs +++ b/tests/integration.rs @@ -12,7 +12,7 @@ mod utils; #[test] fn test_hello() -> Result<()> { let port: u16 = 6479; - let _guards = vec![start_redis_server_with_module("hello", port) + let _guards = vec![start_redis_server_with_module("hello", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -35,7 +35,7 @@ fn test_hello() -> Result<()> { #[test] fn test_keys_pos() -> Result<()> { let port: u16 = 6480; - let _guards = vec![start_redis_server_with_module("keys_pos", port) + let _guards = vec![start_redis_server_with_module("keys_pos", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -58,7 +58,7 @@ fn test_keys_pos() -> Result<()> { #[test] fn test_helper_version() -> Result<()> { let port: u16 = 6481; - let _guards = vec![start_redis_server_with_module("test_helper", port) + let _guards = vec![start_redis_server_with_module("test_helper", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -82,7 +82,7 @@ fn test_command_name() -> Result<()> { use redis_module::RedisValue; let port: u16 = 6482; - let _guards = vec![start_redis_server_with_module("test_helper", port) + let _guards = vec![start_redis_server_with_module("test_helper", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -127,7 +127,7 @@ fn test_helper_info() -> Result<()> { .into_iter() .try_for_each(|(module, has_dictionary)| { let port: u16 = 6483; - let _guards = vec![start_redis_server_with_module(module, port) + let _guards = vec![start_redis_server_with_module(module, port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -152,7 +152,7 @@ fn test_info_handler_multiple_sections() -> Result<()> { MODULES.into_iter().try_for_each(|module| { let port: u16 = 6500; - let _guards = vec![start_redis_server_with_module(module, port) + let _guards = vec![start_redis_server_with_module(module, port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -173,7 +173,7 @@ fn test_info_handler_multiple_sections() -> Result<()> { #[test] fn test_test_helper_err() -> Result<()> { let port: u16 = 6484; - let _guards = vec![start_redis_server_with_module("hello", port) + let _guards = vec![start_redis_server_with_module("hello", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -193,7 +193,7 @@ fn test_test_helper_err() -> Result<()> { #[test] fn test_string() -> Result<()> { let port: u16 = 6485; - let _guards = vec![start_redis_server_with_module("string", port) + let _guards = vec![start_redis_server_with_module("string", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -213,7 +213,7 @@ fn test_string() -> Result<()> { #[test] fn test_scan() -> Result<()> { let port: u16 = 6486; - let _guards = vec![start_redis_server_with_module("scan_keys", port) + let _guards = vec![start_redis_server_with_module("scan_keys", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -239,7 +239,7 @@ fn test_scan() -> Result<()> { #[test] fn test_stream_reader() -> Result<()> { let port: u16 = 6487; - let _guards = vec![start_redis_server_with_module("stream", port) + let _guards = vec![start_redis_server_with_module("stream", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -279,7 +279,7 @@ fn test_stream_reader() -> Result<()> { #[test] fn test_call() -> Result<()> { let port: u16 = 6488; - let _guards = vec![start_redis_server_with_module("call", port) + let _guards = vec![start_redis_server_with_module("call", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -296,7 +296,7 @@ fn test_call() -> Result<()> { #[test] fn test_ctx_flags() -> Result<()> { let port: u16 = 6489; - let _guards = vec![start_redis_server_with_module("ctx_flags", port) + let _guards = vec![start_redis_server_with_module("ctx_flags", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -311,7 +311,7 @@ fn test_ctx_flags() -> Result<()> { #[test] fn test_get_current_user() -> Result<()> { let port: u16 = 6490; - let _guards = vec![start_redis_server_with_module("acl", port) + let _guards = vec![start_redis_server_with_module("acl", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -326,7 +326,7 @@ fn test_get_current_user() -> Result<()> { #[test] fn test_verify_acl_on_user() -> Result<()> { let port: u16 = 6491; - let _guards = vec![start_redis_server_with_module("acl", port) + let _guards = vec![start_redis_server_with_module("acl", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -367,7 +367,7 @@ fn test_verify_acl_on_user() -> Result<()> { #[test] fn test_key_space_notifications() -> Result<()> { let port: u16 = 6492; - let _guards = vec![start_redis_server_with_module("events", port) + let _guards = vec![start_redis_server_with_module("events", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -391,7 +391,7 @@ fn test_key_space_notifications() -> Result<()> { #[test] fn test_context_mutex() -> Result<()> { let port: u16 = 6493; - let _guards = vec![start_redis_server_with_module("threads", port) + let _guards = vec![start_redis_server_with_module("threads", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -413,8 +413,10 @@ fn test_context_mutex() -> Result<()> { #[test] fn test_server_event() -> Result<()> { let port: u16 = 6494; - let _guards = vec![start_redis_server_with_module("server_events", port) - .with_context(|| "failed to start redis server")?]; + let _guards = vec![ + start_redis_server_with_module("server_events", port, vec![]) + .with_context(|| "failed to start redis server")?, + ]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -462,8 +464,10 @@ fn test_server_event() -> Result<()> { #[test] fn test_configuration() -> Result<()> { let port: u16 = 6495; - let _guards = vec![start_redis_server_with_module("configuration", port) - .with_context(|| "failed to start redis server")?]; + let _guards = vec![ + start_redis_server_with_module("configuration", port, vec![]) + .with_context(|| "failed to start redis server")?, + ]; let config_get = |config: &str| -> Result { let mut con = @@ -535,7 +539,7 @@ fn test_configuration() -> Result<()> { #[test] fn test_response() -> Result<()> { let port: u16 = 6496; - let _guards = vec![start_redis_server_with_module("response", port) + let _guards = vec![start_redis_server_with_module("response", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -567,8 +571,10 @@ fn test_response() -> Result<()> { #[test] fn test_command_proc_macro() -> Result<()> { let port: u16 = 6497; - let _guards = vec![start_redis_server_with_module("proc_macro_commands", port) - .with_context(|| "failed to start redis server")?]; + let _guards = vec![ + start_redis_server_with_module("proc_macro_commands", port, vec![]) + .with_context(|| "failed to start redis server")?, + ]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -606,8 +612,10 @@ fn test_command_proc_macro() -> Result<()> { #[test] fn test_redis_value_derive() -> Result<()> { let port: u16 = 6498; - let _guards = vec![start_redis_server_with_module("proc_macro_commands", port) - .with_context(|| "failed to start redis server")?]; + let _guards = vec![ + start_redis_server_with_module("proc_macro_commands", port, vec![]) + .with_context(|| "failed to start redis server")?, + ]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -630,7 +638,7 @@ fn test_redis_value_derive() -> Result<()> { #[test] fn test_call_blocking() -> Result<()> { let port: u16 = 6499; - let _guards = vec![start_redis_server_with_module("call", port) + let _guards = vec![start_redis_server_with_module("call", port, vec![]) .with_context(|| "failed to start redis server")?]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; @@ -653,8 +661,10 @@ fn test_call_blocking() -> Result<()> { #[test] fn test_open_key_with_flags() -> Result<()> { let port: u16 = 6501; - let _guards = vec![start_redis_server_with_module("open_key_with_flags", port) - .with_context(|| "failed to start redis server")?]; + let _guards = vec![ + start_redis_server_with_module("open_key_with_flags", port, vec![]) + .with_context(|| "failed to start redis server")?, + ]; let mut con = get_redis_connection(port).with_context(|| "failed to connect to redis server")?; diff --git a/tests/utils.rs b/tests/utils.rs index 76e2e859..c2fcad33 100644 --- a/tests/utils.rs +++ b/tests/utils.rs @@ -23,7 +23,11 @@ impl Drop for ChildGuard { } } -pub fn start_redis_server_with_module(module_name: &str, port: u16) -> Result { +pub fn start_redis_server_with_module( + module_name: &str, + port: u16, + other_args: Vec<&str>, +) -> Result { let extension = if cfg!(target_os = "macos") { "dylib" } else { @@ -51,14 +55,16 @@ pub fn start_redis_server_with_module(module_name: &str, port: u16) -> Result Date: Mon, 16 Oct 2023 22:15:03 +0800 Subject: [PATCH 2/3] fix: version_from_info from info cmd Signed-off-by: weedge --- src/context/mod.rs | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/context/mod.rs b/src/context/mod.rs index 3c0cb66a..c596fab5 100644 --- a/src/context/mod.rs +++ b/src/context/mod.rs @@ -700,15 +700,28 @@ impl Context { pub fn version_from_info(info: RedisValue) -> Result { if let RedisValue::SimpleString(info_str) = info { - if let Some(ver) = utils::get_regexp_captures( - info_str.as_str(), - r"(?m)\bredis_version:([0-9]+)\.([0-9]+)\.([0-9]+)\b", - ) { - return Ok(Version { - major: ver[0].parse::().unwrap(), - minor: ver[1].parse::().unwrap(), - patch: ver[2].parse::().unwrap(), - }); + let regex = regex::Regex::new( + r"(?m)\bredis_version:(?[0-9]+)\.(?[0-9]+)\.(?[0-9]+)\b", + ); + + if regex.is_ok() { + let regex = regex.unwrap(); + let ss = info_str.replace("\r\n", " "); + let ver_str: Vec<&str> = ss.split(' ').collect(); + let s = ver_str.as_slice()[2]; + let mut it = regex.captures_iter(s); + match it.next() { + None => { + return Err(RedisError::Str("Error getting redis_version")); + } + Some(caps) => { + return Ok(Version { + major: caps["major"].parse::().unwrap(), + minor: caps["minor"].parse::().unwrap(), + patch: caps["patch"].parse::().unwrap(), + }); + } + } } } Err(RedisError::Str("Error getting redis_version")) From 3e974d082569d9082ce68a7d6e4485de042cb7db Mon Sep 17 00:00:00 2001 From: weedge Date: Mon, 16 Oct 2023 22:43:54 +0800 Subject: [PATCH 3/3] change get redis_version Signed-off-by: weedge --- src/context/mod.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/context/mod.rs b/src/context/mod.rs index 99300c9f..d6211371 100644 --- a/src/context/mod.rs +++ b/src/context/mod.rs @@ -708,7 +708,14 @@ impl Context { let regex = regex.unwrap(); let ss = info_str.replace("\r\n", " "); let ver_str: Vec<&str> = ss.split(' ').collect(); - let s = ver_str.as_slice()[2]; + let mut s = ""; + for item in ver_str.iter() { + if item.contains("redis_version:") { + s = item; + break; + } + } + //let s = ver_str.as_slice()[2]; let mut it = regex.captures_iter(s); match it.next() { None => {