Skip to content

Commit

Permalink
Merge pull request #123 from sargarass/feat/improve_test_utils
Browse files Browse the repository at this point in the history
feat(test): unstable `proxy_with_route`
  • Loading branch information
loyd authored Feb 26, 2024
2 parents 9eb8c16 + acdede9 commit 7197967
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 2 deletions.
1 change: 1 addition & 0 deletions elfo-test/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,4 @@ futures-intrusive = "0.5"
futures = "0.3.12"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
once_cell = { version = "1.8.0" }
stability = "0.1.1"
3 changes: 3 additions & 0 deletions elfo-test/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,8 @@
pub use proxy::{proxy, Proxy};
pub use utils::{extract_message, extract_request};

#[cfg(feature = "unstable")]
pub use proxy::proxy_with_route;

mod proxy;
mod utils;
17 changes: 15 additions & 2 deletions elfo-test/src/proxy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,16 @@ fn testers(tx: shared::OneshotSender<ProxyContext>) -> Blueprint {
})
}

pub async fn proxy(blueprint: Blueprint, config: impl for<'de> Deserializer<'de>) -> Proxy {
#[doc(hidden)]
#[stability::unstable]
pub async fn proxy_with_route<F>(
blueprint: Blueprint,
route_filter: F,
config: impl for<'de> Deserializer<'de>,
) -> Proxy
where
F: Fn(&Envelope) -> bool + Send + Sync + 'static,
{
let _ = tracing_subscriber::fmt()
.with_target(false)
.with_env_filter(tracing_subscriber::EnvFilter::from_default_env())
Expand All @@ -244,7 +253,7 @@ pub async fn proxy(blueprint: Blueprint, config: impl for<'de> Deserializer<'de>
let subject_addr = subject.addr();

testers.route_all_to(&subject);
subject.route_all_to(&testers);
subject.route_to(&testers, route_filter);

// TODO: capture log messages.
// TODO: capture metrics.
Expand All @@ -271,6 +280,10 @@ pub async fn proxy(blueprint: Blueprint, config: impl for<'de> Deserializer<'de>
}
}

pub async fn proxy(blueprint: Blueprint, config: impl for<'de> Deserializer<'de>) -> Proxy {
proxy_with_route(blueprint, |_| true, config).await
}

#[cfg(test)]
mod tests {
use super::*;
Expand Down

0 comments on commit 7197967

Please sign in to comment.