#[cfg(test)]
#[cfg(feature = "server")]
mod tests {
use std::sync::Arc;
use std::net::SocketAddr;
use tokio::sync::oneshot;
use crate::config::AppConfig;
use crate::server::{ServerConfig, start_server};
use qdrant_client::Qdrant;
use tokio::time::{timeout, Duration};
#[tokio::test]
async fn test_server_startup_shutdown() {
let addr: SocketAddr = "127.0.0.1:0".parse().unwrap(); let config = Arc::new(AppConfig::default());
let client = Arc::new(Qdrant::from_url("http://localhost:6334").build().unwrap());
let _server_config = ServerConfig::default();
let (tx, rx) = oneshot::channel();
let server_handle = tokio::spawn(async move {
start_server(addr, config, client, Some(rx), false, None, None).await
});
tokio::time::sleep(Duration::from_millis(100)).await;
let _ = tx.send(());
let result = timeout(Duration::from_secs(5), server_handle).await;
assert!(result.is_ok(), "Server task timed out");
let server_result = result.unwrap();
assert!(server_result.is_ok(), "Server task panicked");
assert!(server_result.unwrap().is_ok(), "Server returned an error during run");
}
}