From e4763b47f10cb5df21e014fa1fff4b94a2519ad6 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Wed, 5 Jan 2022 10:45:46 +0000 Subject: [PATCH] vmm, build: Remove use of "credibility" from unit tests This crate was used in the integration tests to allow the tests to continue and clean up after a failure. This isn't necessary in the unit tests and adds a large build dependency chain including an unmaintained crate. Signed-off-by: Rob Bradford --- Cargo.lock | 95 ------------------- Cargo.toml | 1 - src/main.rs | 139 +++++++++++++-------------- vmm/Cargo.toml | 3 - vmm/src/device_tree.rs | 210 ++++++++++++++++++++--------------------- vmm/src/lib.rs | 3 - 6 files changed, 167 insertions(+), 284 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8c975dd9c..b176e3a47 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9,21 +9,6 @@ dependencies = [ "vm-memory", ] -[[package]] -name = "addr2line" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "aho-corasick" version = "0.7.18" @@ -92,21 +77,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" -[[package]] -name = "backtrace" -version = "0.3.63" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "321629d8ba6513061f26707241fa9bc89524ff1cd7a915a97ef0c62c666ce1b6" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - [[package]] name = "bincode" version = "1.3.3" @@ -183,7 +153,6 @@ dependencies = [ "anyhow", "api_client", "clap", - "credibility", "dirs 4.0.0", "epoll", "event_monitor", @@ -219,16 +188,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55626594feae15d266d52440b26ff77de0e22230cf0c113abe619084c1ddc910" -[[package]] -name = "credibility" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fae7a162fd5b462bc49704873a89950a655d44161add4be07e00e64c4c83a5bf" -dependencies = [ - "failure", - "failure_derive", -] - [[package]] name = "devices" version = "0.1.0" @@ -311,28 +270,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "failure" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32e9bd16cc02eae7db7ef620b392808b89f6a5e16bb3497d159c6b92a0f4f86" -dependencies = [ - "backtrace", - "failure_derive", -] - -[[package]] -name = "failure_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - [[package]] name = "fdt" version = "0.1.3" @@ -350,12 +287,6 @@ dependencies = [ "wasi", ] -[[package]] -name = "gimli" -version = "0.26.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" - [[package]] name = "glob" version = "0.3.0" @@ -559,16 +490,6 @@ dependencies = [ "vmm-sys-util", ] -[[package]] -name = "miniz_oxide" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" -dependencies = [ - "adler", - "autocfg", -] - [[package]] name = "mshv-bindings" version = "0.1.0" @@ -621,15 +542,6 @@ dependencies = [ "vmm-sys-util", ] -[[package]] -name = "object" -version = "0.27.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" -dependencies = [ - "memchr", -] - [[package]] name = "openssl-sys" version = "0.9.72" @@ -882,12 +794,6 @@ dependencies = [ "syn", ] -[[package]] -name = "rustc-demangle" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" - [[package]] name = "rustc_version" version = "0.2.3" @@ -1385,7 +1291,6 @@ dependencies = [ "bitflags", "block_util", "clap", - "credibility", "devices", "epoll", "event_monitor", diff --git a/Cargo.toml b/Cargo.toml index f61080c54..258f18719 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,6 @@ kvm-ioctls = { git = "https://github.com/rust-vmm/kvm-ioctls", branch = "main" } versionize_derive = { git = "https://github.com/cloud-hypervisor/versionize_derive", branch = "ch" } [dev-dependencies] -credibility = "0.1.3" dirs = "4.0.0" lazy_static= "1.4.0" net_util = { path = "net_util" } diff --git a/src/main.rs b/src/main.rs index 011e8ee13..2597cbd03 100644 --- a/src/main.rs +++ b/src/main.rs @@ -586,10 +586,6 @@ fn main() { std::process::exit(exit_code); } -#[cfg(test)] -#[macro_use] -extern crate credibility; - #[cfg(test)] mod unit_tests { use crate::config::HotplugMethod; @@ -618,15 +614,11 @@ mod unit_tests { let cli_vm_config = get_vm_config_from_vec(cli); let openapi_vm_config: VmConfig = serde_json::from_str(openapi).unwrap(); - test_block!(tb, "", { - if equal { - aver_eq!(tb, cli_vm_config, openapi_vm_config); - } else { - aver_ne!(tb, cli_vm_config, openapi_vm_config); - } - - Ok(()) - }); + if equal { + assert_eq!(cli_vm_config, openapi_vm_config); + } else { + assert_ne!(cli_vm_config, openapi_vm_config); + } (cli_vm_config, openapi_vm_config) } @@ -640,70 +632,67 @@ mod unit_tests { let (result_vm_config, _) = compare_vm_config_cli_vs_json(&cli, openapi, true); // As a second step, we validate all the default values. - test_block!(tb, "", { - let expected_vm_config = VmConfig { - cpus: CpusConfig { - boot_vcpus: 1, - max_vcpus: 1, - topology: None, - kvm_hyperv: false, - max_phys_bits: 46, - affinity: None, - }, - memory: MemoryConfig { - size: 536_870_912, - mergeable: false, - hotplug_method: HotplugMethod::Acpi, - hotplug_size: None, - hotplugged_size: None, - shared: false, - hugepages: false, - hugepage_size: None, - prefault: false, - zones: None, - }, - kernel: Some(KernelConfig { - path: PathBuf::from("/path/to/kernel"), - }), - initramfs: None, - cmdline: CmdlineConfig { - args: String::from(""), - }, - disks: None, - net: None, - rng: RngConfig { - src: PathBuf::from("/dev/urandom"), - iommu: false, - }, - balloon: None, - fs: None, - pmem: None, - serial: ConsoleConfig { - file: None, - mode: ConsoleOutputMode::Null, - iommu: false, - }, - console: ConsoleConfig { - file: None, - mode: ConsoleOutputMode::Tty, - iommu: false, - }, - devices: None, - user_devices: None, - vsock: None, + let expected_vm_config = VmConfig { + cpus: CpusConfig { + boot_vcpus: 1, + max_vcpus: 1, + topology: None, + kvm_hyperv: false, + max_phys_bits: 46, + affinity: None, + }, + memory: MemoryConfig { + size: 536_870_912, + mergeable: false, + hotplug_method: HotplugMethod::Acpi, + hotplug_size: None, + hotplugged_size: None, + shared: false, + hugepages: false, + hugepage_size: None, + prefault: false, + zones: None, + }, + kernel: Some(KernelConfig { + path: PathBuf::from("/path/to/kernel"), + }), + initramfs: None, + cmdline: CmdlineConfig { + args: String::from(""), + }, + disks: None, + net: None, + rng: RngConfig { + src: PathBuf::from("/dev/urandom"), iommu: false, - #[cfg(target_arch = "x86_64")] - sgx_epc: None, - numa: None, - watchdog: false, - #[cfg(feature = "tdx")] - tdx: None, - platform: None, - }; + }, + balloon: None, + fs: None, + pmem: None, + serial: ConsoleConfig { + file: None, + mode: ConsoleOutputMode::Null, + iommu: false, + }, + console: ConsoleConfig { + file: None, + mode: ConsoleOutputMode::Tty, + iommu: false, + }, + devices: None, + user_devices: None, + vsock: None, + iommu: false, + #[cfg(target_arch = "x86_64")] + sgx_epc: None, + numa: None, + watchdog: false, + #[cfg(feature = "tdx")] + tdx: None, + platform: None, + }; - aver_eq!(tb, expected_vm_config, result_vm_config); - Ok(()) - }) + assert_eq!(expected_vm_config, result_vm_config); } #[test] diff --git a/vmm/Cargo.toml b/vmm/Cargo.toml index d3234d41d..c440b08e9 100644 --- a/vmm/Cargo.toml +++ b/vmm/Cargo.toml @@ -54,6 +54,3 @@ vm-memory = { version = "0.7.0", features = ["backend-mmap", "backend-atomic", " vm-migration = { path = "../vm-migration" } vm-virtio = { path = "../vm-virtio" } vmm-sys-util = { version = "0.9.0", features = ["with-serde"] } - -[dev-dependencies] -credibility = "0.1.3" diff --git a/vmm/src/device_tree.rs b/vmm/src/device_tree.rs index 77ce12a45..54cb65a31 100644 --- a/vmm/src/device_tree.rs +++ b/vmm/src/device_tree.rs @@ -165,121 +165,117 @@ mod tests { #[test] fn test_device_tree() { - test_block!(tb, "", { - // Check new() - let mut device_tree = DeviceTree::new(); - aver_eq!(tb, device_tree.0.len(), 0); + // Check new() + let mut device_tree = DeviceTree::new(); + assert_eq!(device_tree.0.len(), 0); - // Check insert() - let id = String::from("id1"); - device_tree.insert(id.clone(), DeviceNode::new(id.clone(), None)); - aver_eq!(tb, device_tree.0.len(), 1); - let node = device_tree.0.get(&id); - aver!(tb, node.is_some()); - let node = node.unwrap(); - aver_eq!(tb, node.id, id); + // Check insert() + let id = String::from("id1"); + device_tree.insert(id.clone(), DeviceNode::new(id.clone(), None)); + assert_eq!(device_tree.0.len(), 1); + let node = device_tree.0.get(&id); + assert!(node.is_some()); + let node = node.unwrap(); + assert_eq!(node.id, id); - // Check get() - let id2 = String::from("id2"); - aver!(tb, device_tree.get(&id).is_some()); - aver!(tb, device_tree.get(&id2).is_none()); + // Check get() + let id2 = String::from("id2"); + assert!(device_tree.get(&id).is_some()); + assert!(device_tree.get(&id2).is_none()); - // Check get_mut() - let node = device_tree.get_mut(&id).unwrap(); - node.id = id2.clone(); - let node = device_tree.0.get(&id).unwrap(); - aver_eq!(tb, node.id, id2); + // Check get_mut() + let node = device_tree.get_mut(&id).unwrap(); + node.id = id2.clone(); + let node = device_tree.0.get(&id).unwrap(); + assert_eq!(node.id, id2); - // Check remove() - let node = device_tree.remove(&id).unwrap(); - aver_eq!(tb, node.id, id2); - aver_eq!(tb, device_tree.0.len(), 0); + // Check remove() + let node = device_tree.remove(&id).unwrap(); + assert_eq!(node.id, id2); + assert_eq!(device_tree.0.len(), 0); - // Check iter() - let disk_id = String::from("disk0"); - let net_id = String::from("net0"); - let rng_id = String::from("rng0"); - let device_list = vec![ - (disk_id.clone(), device_node!(disk_id)), - (net_id.clone(), device_node!(net_id)), - (rng_id.clone(), device_node!(rng_id)), - ]; - device_tree.0.extend(device_list); - for (id, node) in device_tree.iter() { - if id == &disk_id { - aver_eq!(tb, node.id, disk_id); - } else if id == &net_id { - aver_eq!(tb, node.id, net_id); - } else if id == &rng_id { - aver_eq!(tb, node.id, rng_id); - } else { - aver!(tb, false); - } + // Check iter() + let disk_id = String::from("disk0"); + let net_id = String::from("net0"); + let rng_id = String::from("rng0"); + let device_list = vec![ + (disk_id.clone(), device_node!(disk_id)), + (net_id.clone(), device_node!(net_id)), + (rng_id.clone(), device_node!(rng_id)), + ]; + device_tree.0.extend(device_list); + for (id, node) in device_tree.iter() { + if id == &disk_id { + assert_eq!(node.id, disk_id); + } else if id == &net_id { + assert_eq!(node.id, net_id); + } else if id == &rng_id { + assert_eq!(node.id, rng_id); + } else { + unreachable!() } + } - // Check breadth_first_traversal() based on the following hierarchy - // - // 0 - // | \ - // 1 2 - // | | \ - // 3 4 5 - // - let mut device_tree = DeviceTree::new(); - let child_1_id = String::from("child1"); - let child_2_id = String::from("child2"); - let child_3_id = String::from("child3"); - let parent_1_id = String::from("parent1"); - let parent_2_id = String::from("parent2"); - let root_id = String::from("root"); - let mut child_1_node = device_node!(child_1_id); - let mut child_2_node = device_node!(child_2_id); - let mut child_3_node = device_node!(child_3_id); - let mut parent_1_node = device_node!(parent_1_id); - let mut parent_2_node = device_node!(parent_2_id); - let mut root_node = device_node!(root_id); - child_1_node.parent = Some(parent_1_id.clone()); - child_2_node.parent = Some(parent_2_id.clone()); - child_3_node.parent = Some(parent_2_id.clone()); - parent_1_node.children = vec![child_1_id.clone()]; - parent_1_node.parent = Some(root_id.clone()); - parent_2_node.children = vec![child_2_id.clone(), child_3_id.clone()]; - parent_2_node.parent = Some(root_id.clone()); - root_node.children = vec![parent_1_id.clone(), parent_2_id.clone()]; - let device_list = vec![ - (child_1_id.clone(), child_1_node), - (child_2_id.clone(), child_2_node), - (child_3_id.clone(), child_3_node), - (parent_1_id.clone(), parent_1_node), - (parent_2_id.clone(), parent_2_node), - (root_id.clone(), root_node), - ]; - device_tree.0.extend(device_list); + // Check breadth_first_traversal() based on the following hierarchy + // + // 0 + // | \ + // 1 2 + // | | \ + // 3 4 5 + // + let mut device_tree = DeviceTree::new(); + let child_1_id = String::from("child1"); + let child_2_id = String::from("child2"); + let child_3_id = String::from("child3"); + let parent_1_id = String::from("parent1"); + let parent_2_id = String::from("parent2"); + let root_id = String::from("root"); + let mut child_1_node = device_node!(child_1_id); + let mut child_2_node = device_node!(child_2_id); + let mut child_3_node = device_node!(child_3_id); + let mut parent_1_node = device_node!(parent_1_id); + let mut parent_2_node = device_node!(parent_2_id); + let mut root_node = device_node!(root_id); + child_1_node.parent = Some(parent_1_id.clone()); + child_2_node.parent = Some(parent_2_id.clone()); + child_3_node.parent = Some(parent_2_id.clone()); + parent_1_node.children = vec![child_1_id.clone()]; + parent_1_node.parent = Some(root_id.clone()); + parent_2_node.children = vec![child_2_id.clone(), child_3_id.clone()]; + parent_2_node.parent = Some(root_id.clone()); + root_node.children = vec![parent_1_id.clone(), parent_2_id.clone()]; + let device_list = vec![ + (child_1_id.clone(), child_1_node), + (child_2_id.clone(), child_2_node), + (child_3_id.clone(), child_3_node), + (parent_1_id.clone(), parent_1_node), + (parent_2_id.clone(), parent_2_node), + (root_id.clone(), root_node), + ]; + device_tree.0.extend(device_list); - let iter_vec = device_tree - .breadth_first_traversal() - .collect::>(); - aver_eq!(tb, iter_vec.len(), 6); - aver_eq!(tb, iter_vec[0].id, root_id); - aver_eq!(tb, iter_vec[1].id, parent_1_id); - aver_eq!(tb, iter_vec[2].id, parent_2_id); - aver_eq!(tb, iter_vec[3].id, child_1_id); - aver_eq!(tb, iter_vec[4].id, child_2_id); - aver_eq!(tb, iter_vec[5].id, child_3_id); + let iter_vec = device_tree + .breadth_first_traversal() + .collect::>(); + assert_eq!(iter_vec.len(), 6); + assert_eq!(iter_vec[0].id, root_id); + assert_eq!(iter_vec[1].id, parent_1_id); + assert_eq!(iter_vec[2].id, parent_2_id); + assert_eq!(iter_vec[3].id, child_1_id); + assert_eq!(iter_vec[4].id, child_2_id); + assert_eq!(iter_vec[5].id, child_3_id); - let iter_vec = device_tree - .breadth_first_traversal() - .rev() - .collect::>(); - aver_eq!(tb, iter_vec.len(), 6); - aver_eq!(tb, iter_vec[5].id, root_id); - aver_eq!(tb, iter_vec[4].id, parent_1_id); - aver_eq!(tb, iter_vec[3].id, parent_2_id); - aver_eq!(tb, iter_vec[2].id, child_1_id); - aver_eq!(tb, iter_vec[1].id, child_2_id); - aver_eq!(tb, iter_vec[0].id, child_3_id); - - Ok(()) - }) + let iter_vec = device_tree + .breadth_first_traversal() + .rev() + .collect::>(); + assert_eq!(iter_vec.len(), 6); + assert_eq!(iter_vec[5].id, root_id); + assert_eq!(iter_vec[4].id, parent_1_id); + assert_eq!(iter_vec[3].id, parent_2_id); + assert_eq!(iter_vec[2].id, child_1_id); + assert_eq!(iter_vec[1].id, child_2_id); + assert_eq!(iter_vec[0].id, child_3_id); } } diff --git a/vmm/src/lib.rs b/vmm/src/lib.rs index a0d915982..20f11c0f7 100644 --- a/vmm/src/lib.rs +++ b/vmm/src/lib.rs @@ -11,9 +11,6 @@ extern crate lazy_static; extern crate log; #[macro_use] extern crate serde_derive; -#[cfg(test)] -#[macro_use] -extern crate credibility; use crate::api::{ ApiError, ApiRequest, ApiResponse, ApiResponsePayload, VmInfo, VmReceiveMigrationData,