#![feature(test)]
extern crate test;
use test::{black_box, Bencher};
use async_backplane::*;
#[bench]
fn create_destroy(b: &mut Bencher) {
let d = Device::new();
b.iter(|| { black_box(d.line()) });
}
#[bench]
fn line_monitor_drop(b: &mut Bencher) {
b.iter(|| {
let d1 = Device::new();
let d2 = Device::new();
let l1 = d1.line();
let l2 = d2.line();
l1.link_line(l2, LinkMode::Monitor).unwrap();
black_box(l1);
black_box(d1);
black_box(d2);
})
}
#[bench]
fn line_monitor_drop_notify(b: &mut Bencher) {
b.iter(|| {
let d1 = Device::new();
let d2 = Device::new();
let l1 = d1.line();
let l2 = d2.line();
l1.link_line(l2, LinkMode::Monitor).unwrap();
black_box(l1);
black_box(d2);
black_box(d1);
})
}
#[bench]
fn line_monitor_error_notify(b: &mut Bencher) {
b.iter(|| {
let d1 = Device::new();
let d2 = Device::new();
let l1 = d1.line();
let l2 = d2.line();
l1.link_line(l2, LinkMode::Monitor).unwrap();
black_box(l1);
d2.disconnect(Some(Fault::Error));
black_box(d1);
})
}
#[bench]
fn line_peer_drop_notify(b: &mut Bencher) {
b.iter(|| {
let d1 = Device::new();
let d2 = Device::new();
let l1 = d1.line();
let l2 = d2.line();
l1.link_line(l2, LinkMode::Peer).unwrap();
black_box(l1);
black_box(d2);
black_box(d1);
})
}
#[bench]
fn line_peer_error_notify(b: &mut Bencher) {
b.iter(|| {
let d1 = Device::new();
let d2 = Device::new();
let l1 = d1.line();
let l2 = d2.line();
l1.link_line(l2, LinkMode::Peer).unwrap();
black_box(l1);
d2.disconnect(Some(Fault::Error));
black_box(d1);
})
}