in nfm-controller/src/lib.rs [412:471]
fn test_do_work() {
let event_provider = EventProviderNoOp::default();
let nat_resolver = NatResolverNoOp::default();
let event_filter = EventFilterNoOp::default();
let publisher = PublisherNoOp::default();
let metadata_provider = MultiMetadataProviderNoOp::default();
let host_stats_provider = HostStatsProviderNoOp::default();
// Clone the struct to pass it to the thread
let event_provider_clone = event_provider.clone();
let nat_resolver_clone = nat_resolver.clone();
let event_filter_clone = event_filter.clone();
let publisher_clone = publisher.clone();
let metadata_provider_clone = metadata_provider.clone();
let host_stats_provider_clone = host_stats_provider.clone();
thread::spawn(move || {
do_work(
event_provider_clone,
Box::new(nat_resolver_clone),
event_filter_clone,
publisher_clone,
metadata_provider_clone,
host_stats_provider_clone,
Options {
log_reports: OnOff::Off,
publish_reports: OnOff::Off,
endpoint: "a".to_string(),
endpoint_region: "b".to_string(),
cgroup: "c".to_string(),
proxy: "d".to_string(),
top_k: 100,
notrack_secs: 0,
usage_data: OnOff::On,
aggregate_msecs: 0,
publish_secs: 0,
jitter_secs: 0,
report_compression: ReportCompression::None,
kubernetes_metadata: OnOff::On,
resolve_nat: OnOff::On,
},
);
});
let duration = Duration::from_millis(2000);
let start = Instant::now();
while start.elapsed() < duration {
// allow thread start to be delayed for 2sec at worst, to prevent failures at test
if *event_provider.calls.lock().unwrap() >= 1
&& *nat_resolver.calls.lock().unwrap() >= 1
&& *event_filter.calls.lock().unwrap() >= 1
&& *publisher.calls.lock().unwrap() >= 1
&& *metadata_provider.calls.lock().unwrap() >= 1
&& *host_stats_provider.calls.lock().unwrap() >= 1
{
return; // success
};
}
assert!(false); // failure
}