From 8754720e2d2bbe96ccce86e58f4a564c7d7cb73e Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Tue, 31 Mar 2020 16:27:13 +0100 Subject: [PATCH] vmm: config: Add unit test for net parsing Signed-off-by: Rob Bradford --- vmm/src/config.rs | 64 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/vmm/src/config.rs b/vmm/src/config.rs index 86222f897..c111f5811 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -643,6 +643,22 @@ fn default_netconfig_queue_size() -> u16 { DEFAULT_QUEUE_SIZE_VUNET } +impl Default for NetConfig { + fn default() -> Self { + Self { + tap: default_netconfig_tap(), + ip: default_netconfig_ip(), + mask: default_netconfig_mask(), + mac: default_netconfig_mac(), + iommu: false, + num_queues: default_netconfig_num_queues(), + queue_size: default_netconfig_queue_size(), + vhost_user: false, + vhost_socket: None, + } + } +} + impl NetConfig { pub const SYNTAX: &'static str = "Network parameters \ \"tap=,ip=,mask=,mac=,iommu=on|off,\ @@ -1470,4 +1486,52 @@ mod tests { Ok(()) } + + #[test] + fn test_net_parsing() -> Result<()> { + // mac address is random + assert_eq!( + NetConfig::parse("mac=de:ad:be:ef:12:34")?, + NetConfig { + mac: MacAddr::parse_str("de:ad:be:ef:12:34").unwrap(), + ..Default::default() + } + ); + + assert_eq!( + NetConfig::parse( + "mac=de:ad:be:ef:12:34,tap=tap0,ip=192.168.100.1,mask=255.255.255.128" + )?, + NetConfig { + mac: MacAddr::parse_str("de:ad:be:ef:12:34").unwrap(), + tap: Some("tap0".to_owned()), + ip: "192.168.100.1".parse().unwrap(), + mask: "255.255.255.128".parse().unwrap(), + ..Default::default() + } + ); + + assert_eq!( + NetConfig::parse("mac=de:ad:be:ef:12:34,vhost_user=true,socket=/tmp/socket")?, + NetConfig { + mac: MacAddr::parse_str("de:ad:be:ef:12:34").unwrap(), + vhost_user: true, + vhost_socket: Some("/tmp/socket".to_owned()), + ..Default::default() + } + ); + + assert_eq!( + NetConfig::parse("mac=de:ad:be:ef:12:34,num_queues=4,queue_size=1024,iommu=on")?, + NetConfig { + mac: MacAddr::parse_str("de:ad:be:ef:12:34").unwrap(), + num_queues: 4, + queue_size: 1024, + iommu: true, + ..Default::default() + } + ); + + Ok(()) + } }