rust_cni/
lib.rs

1pub mod cni;
2pub mod libcni;
3pub mod namespace;
4
5pub fn is_debug_logging() -> bool {
6    log::log_enabled!(log::Level::Debug)
7}
8
9#[cfg(test)]
10pub mod test {
11    use super::*;
12    use crate::cni;
13    use env_logger::Env;
14    use log::{error, info};
15    #[test]
16    fn test_cni_add_remove() {
17        env_logger::Builder::from_env(Env::default().default_filter_or("info")).init();
18        info!("Starting CNI test");
19
20        let mut cni = cni::Libcni::default();
21        cni.load_default_conf();
22
23        let pid = std::process::id();
24        let path = format!("/proc/{}/ns/net", pid);
25        let id = "test".to_string();
26
27        info!("Setting up network for container {}", id);
28        let setup_result = cni.setup(id.clone(), path.clone());
29        match &setup_result {
30            Ok(_) => info!("Network setup successful"),
31            Err(e) => error!("Network setup failed: {}", e),
32        }
33
34        info!("Removing network for container {}", id);
35        let remove_result = cni.remove(id.clone(), path.clone());
36        match &remove_result {
37            Ok(_) => info!("Network removal successful"),
38            Err(e) => error!("Network removal failed: {}", e),
39        }
40    }
41}