feat(irtt): make IRTT measurement optional and refine engine behavior
Build binaries / Build (arm-musleabi) (push) Successful in 1m42s
Build binaries / Build (aarch64-musl) (push) Successful in 1m44s
Build binaries / Build (arm-musleabihf) (push) Successful in 1m45s
Build binaries / Build (armv7-musleabi) (push) Successful in 1m44s
Build binaries / Build (i686-musl) (push) Successful in 1m36s
Build binaries / Build (armv7-musleabihf) (push) Successful in 1m39s
Build binaries / Build (mips-musl) (push) Successful in 2m6s
Build binaries / Build (mips64-muslabi64) (push) Successful in 2m7s
Build binaries / Build (mipsel-musl) (push) Successful in 2m18s
Build binaries / Build (mips64el-muslabi64) (push) Successful in 2m18s
Build binaries / Build (x86_64-musl) (push) Successful in 1m53s
Build binaries / Build (riscv64gc-musl) (push) Successful in 1m54s
Build binaries / Build (arm-musleabi) (push) Successful in 1m42s
Build binaries / Build (aarch64-musl) (push) Successful in 1m44s
Build binaries / Build (arm-musleabihf) (push) Successful in 1m45s
Build binaries / Build (armv7-musleabi) (push) Successful in 1m44s
Build binaries / Build (i686-musl) (push) Successful in 1m36s
Build binaries / Build (armv7-musleabihf) (push) Successful in 1m39s
Build binaries / Build (mips-musl) (push) Successful in 2m6s
Build binaries / Build (mips64-muslabi64) (push) Successful in 2m7s
Build binaries / Build (mipsel-musl) (push) Successful in 2m18s
Build binaries / Build (mips64el-muslabi64) (push) Successful in 2m18s
Build binaries / Build (x86_64-musl) (push) Successful in 1m53s
Build binaries / Build (riscv64gc-musl) (push) Successful in 1m54s
Conditionally compile IRTT functionality behind the `irtt` feature flag to allow building smaller binaries without IRTT dependencies. Enhance IRTT engine shutdown, configuration, and clarify ICMP protocol names.
This commit is contained in:
5 files changed
+112
-42
No files matched your search
+19
-3
@@ -22,6 +22,7 @@ mod util;
|
||||
use crate::baseliner::Baseliner;
|
||||
use crate::controller::Controller;
|
||||
use crate::measurement::icmp::IcmpEngine;
|
||||
#[cfg(feature = "irtt")]
|
||||
use crate::measurement::irtt::IrttEngine;
|
||||
use crate::measurement::model::{MeasurementSource, MeasurementStream};
|
||||
use crate::metrics::{Metric, Metrics, MetricsSender};
|
||||
@@ -279,6 +280,12 @@ fn wait_for_exit(error_rx: &flume::Receiver<anyhow::Error>) -> anyhow::Result<()
|
||||
}
|
||||
|
||||
fn run(settings: &Settings) -> anyhow::Result<()> {
|
||||
#[cfg(not(feature = "irtt"))]
|
||||
if settings.advanced_settings.measurement_type == ReflectorProtocol::Irtt {
|
||||
anyhow::bail!(
|
||||
"IRTT measurement selected, but this binary was built without the `irtt` feature"
|
||||
);
|
||||
}
|
||||
let rt = tokio::runtime::Runtime::new()?;
|
||||
|
||||
if settings.advanced_settings.dry_run {
|
||||
@@ -299,6 +306,7 @@ fn run(settings: &Settings) -> anyhow::Result<()> {
|
||||
let (control_snapshot_tx, control_snapshot_rx) = flume::unbounded();
|
||||
let (error_tx, error_rx) = flume::unbounded::<anyhow::Error>();
|
||||
let (icmp_binding_tx, icmp_binding_rx) = flume::unbounded();
|
||||
#[cfg(feature = "irtt")]
|
||||
let (irtt_binding_tx, irtt_binding_rx) = flume::unbounded();
|
||||
let (measurement_tx, measurement_rx) = flume::unbounded();
|
||||
let (reflector_tx, reflector_rx) = flume::unbounded();
|
||||
@@ -318,6 +326,7 @@ fn run(settings: &Settings) -> anyhow::Result<()> {
|
||||
let controller = Controller::new(
|
||||
reflector_rx,
|
||||
icmp_binding_tx,
|
||||
#[cfg(feature = "irtt")]
|
||||
irtt_binding_tx,
|
||||
reflectors,
|
||||
Arc::clone(&active_streams),
|
||||
@@ -333,13 +342,20 @@ fn run(settings: &Settings) -> anyhow::Result<()> {
|
||||
icmp_binding_rx,
|
||||
)?
|
||||
};
|
||||
let (_irtt_task, irtt_engine) = {
|
||||
#[cfg(feature = "irtt")]
|
||||
let (irtt_task, irtt_engine) = {
|
||||
let _guard = rt.enter();
|
||||
IrttEngine::new(start_time, measurement_tx, irtt_binding_rx)?
|
||||
IrttEngine::new(
|
||||
start_time,
|
||||
Duration::from_secs_f64(settings.advanced_settings.tick_interval),
|
||||
measurement_tx,
|
||||
irtt_binding_rx,
|
||||
)?
|
||||
};
|
||||
|
||||
spawn_task(&rt, &error_tx, icmp_engine.run());
|
||||
spawn_task(&rt, &error_tx, irtt_engine.run());
|
||||
#[cfg(feature = "irtt")]
|
||||
spawn_task(&rt, &error_tx, irtt_engine.run(irtt_task));
|
||||
|
||||
let dropped = Arc::new(AtomicU32::new(0));
|
||||
|
||||
|
||||
Reference in new issue
Block a user