From 9dd93ac7ec9b11697e4eeb88c346b4ec5e7eb8c8 Mon Sep 17 00:00:00 2001 From: Ruslan Pislari Date: Wed, 4 Mar 2026 14:26:15 +0200 Subject: [PATCH] feat: add support for victoria_log feature with deserialization tests --- Cargo.lock | 16 +++++------ Cargo.toml | 2 +- crates/runtime/Cargo.toml | 3 ++- crates/runtime/src/app.rs | 57 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f5a6c18..371fd3a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -901,7 +901,7 @@ dependencies = [ [[package]] name = "fastedge-run" -version = "0.14.0" +version = "0.14.1" dependencies = [ "anyhow", "async-trait", @@ -1480,7 +1480,7 @@ dependencies = [ [[package]] name = "http-backend" -version = "0.14.0" +version = "0.14.1" dependencies = [ "anyhow", "claims", @@ -1523,7 +1523,7 @@ dependencies = [ [[package]] name = "http-service" -version = "0.14.0" +version = "0.14.1" dependencies = [ "anyhow", "async-trait", @@ -1879,7 +1879,7 @@ dependencies = [ [[package]] name = "key-value-store" -version = "0.14.0" +version = "0.14.1" dependencies = [ "async-trait", "reactor", @@ -2714,7 +2714,7 @@ dependencies = [ [[package]] name = "reactor" -version = "0.14.0" +version = "0.14.1" dependencies = [ "wasmtime", ] @@ -2831,7 +2831,7 @@ dependencies = [ [[package]] name = "runtime" -version = "0.14.0" +version = "0.14.1" dependencies = [ "anyhow", "async-trait", @@ -2999,7 +2999,7 @@ checksum = "0cd08a21f852bd2fe42e3b2a6c76a0db6a95a5b5bd29c0521dd0b30fa1712ec8" [[package]] name = "secret" -version = "0.14.0" +version = "0.14.1" dependencies = [ "anyhow", "reactor", @@ -3748,7 +3748,7 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "utils" -version = "0.14.0" +version = "0.14.1" dependencies = [ "reactor", ] diff --git a/Cargo.toml b/Cargo.toml index cba678b..3f70a84 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ members = ["crates/*"] resolver = "2" [workspace.package] -version = "0.14.0" +version = "0.14.1" edition = "2021" publish = false authors = ["FastEdge Development Team"] diff --git a/crates/runtime/Cargo.toml b/crates/runtime/Cargo.toml index bbbae57..bed0516 100644 --- a/crates/runtime/Cargo.toml +++ b/crates/runtime/Cargo.toml @@ -6,8 +6,9 @@ publish.workspace = true authors.workspace = true [features] -default = ["kafka_log"] +default = ["kafka_log", "victoria_log"] kafka_log = [] +victoria_log = [] metrics = ["prometheus", "lazy_static"] [dependencies] diff --git a/crates/runtime/src/app.rs b/crates/runtime/src/app.rs index 5992212..133a2de 100644 --- a/crates/runtime/src/app.rs +++ b/crates/runtime/src/app.rs @@ -79,6 +79,8 @@ pub enum Log { None, #[cfg(feature = "kafka_log")] Kafka, + #[cfg(feature = "victoria_log")] + Victoria, } #[derive(Debug, Clone, PartialEq)] @@ -192,6 +194,61 @@ mod tests { assert_eq!(expected, assert_ok!(serde_json::from_str(&json))); } + #[test] + fn test_log_deserialize_default() { + let log: Log = assert_ok!(serde_json::from_str("\"none\"")); + assert_eq!(log, Log::None); + } + + #[test] + fn test_log_deserialize_missing_defaults_to_none() { + #[derive(Deserialize)] + struct Wrapper { + #[serde(default)] + log: Log, + } + let w: Wrapper = assert_ok!(serde_json::from_str("{}")); + assert_eq!(w.log, Log::None); + } + + #[cfg(feature = "kafka_log")] + #[test] + fn test_log_deserialize_kafka() { + let log: Log = assert_ok!(serde_json::from_str("\"kafka\"")); + assert_eq!(log, Log::Kafka); + } + + #[cfg(feature = "victoria_log")] + #[test] + fn test_log_deserialize_victoria_logs() { + let log: Log = assert_ok!(serde_json::from_str("\"victoria\"")); + assert_eq!(log, Log::Victoria); + } + + #[cfg(feature = "victoria_log")] + #[test] + fn deserialize_app_with_victoria_log() { + let json = json!({ + "binary_id": 1, + "max_duration": 5, + "mem_limit": 512000, + "app_id": 1, + "client_id": 2, + "plan": "basic", + "plan_id": 0, + "status": 1, + "log": "victoria" + }); + let json = assert_ok!(serde_json::to_string(&json)); + let app: App = assert_ok!(serde_json::from_str(&json)); + assert_eq!(app.log, Log::Victoria); + } + + #[test] + fn test_log_deserialize_invalid() { + assert_err!(serde_json::from_str::("\"unknown\"")); + } + #[test] fn test_kv_store_option_deserialize_defaults() { let json = r#"{