57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			57 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Rust
		
	
	
	
	
	
use herodb::{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,
 | 
						|
        encrypt: false,
 | 
						|
        encryption_key: None,
 | 
						|
        backend: herodb::options::BackendType::Redb,
 | 
						|
    };
 | 
						|
    
 | 
						|
    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);
 | 
						|
} |