From c01cdd2a694dc2b72df3ebc9b31c2ebdc5697a5a Mon Sep 17 00:00:00 2001 From: Robert Chacon Date: Mon, 30 Mar 2026 11:57:46 -0600 Subject: [PATCH] changes --- src/rust/Cargo.lock | 1 + src/rust/lqos_bakery/Cargo.toml | 3 +++ src/rust/lqos_bakery/src/lib.rs | 34 +++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/src/rust/Cargo.lock b/src/rust/Cargo.lock index 7ed3500d..fb8ccf7f 100644 --- a/src/rust/Cargo.lock +++ b/src/rust/Cargo.lock @@ -2029,6 +2029,7 @@ dependencies = [ "serde", "serde_json", "tokio", + "toml", "tracing", ] diff --git a/src/rust/lqos_bakery/Cargo.toml b/src/rust/lqos_bakery/Cargo.toml index da7fe67e..93ca5c97 100644 --- a/src/rust/lqos_bakery/Cargo.toml +++ b/src/rust/lqos_bakery/Cargo.toml @@ -15,3 +15,6 @@ parking_lot.workspace = true tokio.workspace = true serde.workspace = true serde_json.workspace = true + +[dev-dependencies] +toml.workspace = true diff --git a/src/rust/lqos_bakery/src/lib.rs b/src/rust/lqos_bakery/src/lib.rs index 993df647..bc913c83 100644 --- a/src/rust/lqos_bakery/src/lib.rs +++ b/src/rust/lqos_bakery/src/lib.rs @@ -9761,12 +9761,46 @@ mod tests { crate::test_state_lock() } + fn install_bakery_test_config() { + static TEST_CONFIG_PATH: std::sync::OnceLock = + std::sync::OnceLock::new(); + + let config_path = TEST_CONFIG_PATH.get_or_init(|| { + let runtime_dir = std::env::temp_dir().join("lqos_bakery_test_runtime"); + std::fs::create_dir_all(&runtime_dir) + .expect("create lqos_bakery test runtime directory"); + + let config = lqos_config::Config { + lqos_directory: runtime_dir.display().to_string(), + bridge: Some(lqos_config::BridgeConfig { + use_xdp_bridge: false, + to_internet: "lo".to_string(), + to_network: "lo".to_string(), + }), + ..lqos_config::Config::default() + }; + + let config_path = std::env::temp_dir().join("lqos_bakery_test_lqos.conf"); + let raw = toml::to_string_pretty(&config).expect("serialize lqos_bakery test config"); + std::fs::write(&config_path, raw).expect("write lqos_bakery test config"); + config_path + }); + + // SAFETY: these unit tests call this helper only while holding the bakery test lock, + // so the process environment is mutated in a serialized way within this test binary. + unsafe { + std::env::set_var("LQOS_CONFIG", config_path); + } + lqos_config::clear_cached_config(); + } + fn reset_bakery_test_state() { *telemetry_state().write() = BakeryTelemetryState::default(); MQ_CREATED.store(false, Ordering::Relaxed); SHAPING_TREE_ACTIVE.store(false, Ordering::Relaxed); FIRST_COMMIT_APPLIED.store(false, Ordering::Relaxed); FULL_RELOAD_IN_PROGRESS.store(false, Ordering::Relaxed); + install_bakery_test_config(); } fn mk_add_circuit(hash: i64, ip_addresses: &str) -> Arc {