pub mod byte_arrays;
pub mod criterion;
mod packet;
pub mod proptest;
mod rvg;
pub use self::packet::*;
pub use self::rvg::*;
use crate::dpdk::{self, Mempool, SocketId, MEMPOOL};
use crate::metrics;
use std::ptr;
use std::sync::Once;
static TEST_INIT: Once = Once::new();
pub fn cargo_test_init() {
TEST_INIT.call_once(|| {
dpdk::eal_init(vec![
"capsule_test".to_owned(),
"--no-huge".to_owned(),
"--iova-mode=va".to_owned(),
])
.unwrap();
let _ = metrics::init();
});
}
#[derive(Debug)]
pub struct MempoolGuard {
#[allow(dead_code)]
inner: Mempool,
}
impl Drop for MempoolGuard {
fn drop(&mut self) {
MEMPOOL.with(|tls| tls.replace(ptr::null_mut()));
}
}
pub fn new_mempool(capacity: usize, cache_size: usize) -> MempoolGuard {
let mut mempool = Mempool::new(capacity, cache_size, SocketId::ANY).unwrap();
MEMPOOL.with(|tls| tls.set(mempool.raw_mut()));
MempoolGuard { inner: mempool }
}