From 45c33dd031c067ece4c91f19f32650e95ec6b87f Mon Sep 17 00:00:00 2001 From: charles-gauthereau Date: Mon, 16 Mar 2026 12:30:22 +0100 Subject: [PATCH] feat: add valkey test sequences --- Cargo.toml | 4 +-- scripts/tests/requirements.sh | 3 +- src/tests/domain/mod.rs | 3 +- src/tests/domain/valkey.rs | 64 +++++++++++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 src/tests/domain/valkey.rs diff --git a/Cargo.toml b/Cargo.toml index d7ea3c3..8e4d6b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,7 +30,7 @@ tokio-postgres = "0.7.15" futures = "0.3.31" tracing-appender = "0.2.4" time = { version = "0.3.44", features = ["macros"] } -mongodb = "3.5.0" +mongodb = "3.5.1" rand = "0.9.2" bytes = "1.11.0" async-stream = "0.3.6" @@ -49,7 +49,7 @@ tokio-stream = "0.1.18" aes = "0.9.0-rc.4" typenum = "1.19.0" testcontainers = "0.27.1" -testcontainers-modules = { version = "0.15.0", features = ["postgres", "redis"] } +testcontainers-modules = { version = "0.15.0", features = ["postgres", "redis", "valkey"] } postgres = "0.19.12" url = "2.5.8" diff --git a/scripts/tests/requirements.sh b/scripts/tests/requirements.sh index 2239327..324244e 100755 --- a/scripts/tests/requirements.sh +++ b/scripts/tests/requirements.sh @@ -58,7 +58,7 @@ if [[ "$OS_TYPE" == "Linux" ]]; then if command -v apt >/dev/null 2>&1; then echo "Linux detected with apt. Installing prerequisites..." sudo apt update - sudo apt install -y wget gnupg lsb-release redis-tools + sudo apt install -y wget gnupg lsb-release redis-tools valkey install_pg_binaries else echo "Unsupported Linux distribution. Only apt-based distros are supported." @@ -69,6 +69,7 @@ elif [[ "$OS_TYPE" == "Darwin" ]]; then if command -v brew >/dev/null 2>&1; then echo "macOS detected. Installing prerequisites..." brew install redis + brew install valkey sudo mkdir -p "$POSTGRES_BASE" sudo chown -R "$(whoami)" "$POSTGRES_BASE" diff --git a/src/tests/domain/mod.rs b/src/tests/domain/mod.rs index d68fe4f..7668a49 100644 --- a/src/tests/domain/mod.rs +++ b/src/tests/domain/mod.rs @@ -1,2 +1,3 @@ mod postgres; -mod redis; \ No newline at end of file +mod redis; +mod valkey; \ No newline at end of file diff --git a/src/tests/domain/valkey.rs b/src/tests/domain/valkey.rs new file mode 100644 index 0000000..b6d36bb --- /dev/null +++ b/src/tests/domain/valkey.rs @@ -0,0 +1,64 @@ +use tempfile::TempDir; +use testcontainers::runners::AsyncRunner; +use testcontainers::ContainerAsync; +use testcontainers_modules::valkey::{Valkey}; +use url::Host; +use crate::domain::factory::DatabaseFactory; +use crate::services::config::{DatabaseConfig, DbType}; +use crate::tests::init_tracing_for_test; + +async fn create_config() -> (ContainerAsync, DatabaseConfig) { + let container = Valkey::default().start().await.unwrap(); + + let host = container + .get_host() + .await + .unwrap_or(Host::parse("127.0.0.1").unwrap()); + + let port = container + .get_host_port_ipv4(6379) + .await + .unwrap_or(6379); + + let config = DatabaseConfig { + name: "Test Valey".to_string(), + database: "valkey".to_string(), + username: "".to_string(), + password: "".to_string(), + db_type: DbType::Valkey, + port, + host: host.to_string(), + generated_id: "40875485-e3d2-4dfe-a26b-2a347ecc64fd".to_string(), + path: "".to_string(), + }; + + (container, config) +} + +#[tokio::test] +async fn valkey_ping_test() { + init_tracing_for_test(); + + let (_container, config) = create_config().await; + + let db = DatabaseFactory::create_for_backup(config.clone()).await; + let reachable = db.ping().await.unwrap_or(false); + + assert!(reachable); +} + +#[tokio::test] +async fn valkey_backup_test() { + init_tracing_for_test(); + + let (_container, config) = create_config().await; + + let temp_dir = TempDir::new().unwrap(); + let backup_path = temp_dir.path(); + + let db = DatabaseFactory::create_for_backup(config.clone()).await; + + let file_path = db.backup(backup_path, Some(true)).await.unwrap(); + + assert!(file_path.is_file()); +} \ No newline at end of file