54 lines
1.6 KiB
Rust
54 lines
1.6 KiB
Rust
use redis_rs::{server::Server, options::DBOption};
|
|
use std::time::Duration;
|
|
use tokio::io::{AsyncReadExt, AsyncWriteExt};
|
|
use tokio::net::TcpStream;
|
|
use tokio::time::sleep;
|
|
|
|
#[tokio::test]
|
|
async fn debug_hset_return_value() {
|
|
let test_dir = "/tmp/herodb_debug_hset_return";
|
|
|
|
// Clean up any existing test data
|
|
let _ = std::fs::remove_dir_all(&test_dir);
|
|
std::fs::create_dir_all(&test_dir).unwrap();
|
|
|
|
let option = DBOption {
|
|
dir: test_dir.to_string(),
|
|
port: 16390,
|
|
debug: false,
|
|
};
|
|
|
|
let mut server = Server::new(option).await;
|
|
|
|
// Start server in background
|
|
tokio::spawn(async move {
|
|
let listener = tokio::net::TcpListener::bind("127.0.0.1:16390")
|
|
.await
|
|
.unwrap();
|
|
|
|
loop {
|
|
if let Ok((stream, _)) = listener.accept().await {
|
|
let _ = server.handle(stream).await;
|
|
}
|
|
}
|
|
});
|
|
|
|
sleep(Duration::from_millis(200)).await;
|
|
|
|
// Connect and test HSET
|
|
let mut stream = TcpStream::connect("127.0.0.1:16390").await.unwrap();
|
|
|
|
// Send HSET command
|
|
let cmd = "*4\r\n$4\r\nHSET\r\n$4\r\nhash\r\n$6\r\nfield1\r\n$6\r\nvalue1\r\n";
|
|
stream.write_all(cmd.as_bytes()).await.unwrap();
|
|
|
|
let mut buffer = [0; 1024];
|
|
let n = stream.read(&mut buffer).await.unwrap();
|
|
let response = String::from_utf8_lossy(&buffer[..n]);
|
|
|
|
println!("HSET response: {}", response);
|
|
println!("Response bytes: {:?}", &buffer[..n]);
|
|
|
|
// Check if response contains "1"
|
|
assert!(response.contains("1"), "Expected response to contain '1', got: {}", response);
|
|
} |