From 233ad78b3a0d1e0a34554d3b46a8ed1c70603971 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Thu, 2 Apr 2020 15:52:33 +0100 Subject: [PATCH] vmm: config: Add parsing test for pmem Signed-off-by: Rob Bradford --- vmm/src/config.rs | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/vmm/src/config.rs b/vmm/src/config.rs index ef1c8f3f4..1f2600584 100644 --- a/vmm/src/config.rs +++ b/vmm/src/config.rs @@ -832,7 +832,7 @@ impl FsConfig { } } -#[derive(Clone, Debug, PartialEq, Deserialize, Serialize)] +#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, Default)] pub struct PmemConfig { pub file: PathBuf, pub size: u64, @@ -1548,4 +1548,33 @@ mod tests { assert!(FsConfig::parse("tag=mytag,sock=/tmp/sock,dax=off,cache_size=4G").is_err()); Ok(()) } + + #[test] + fn test_pmem_parsing() -> Result<()> { + // Must always give a file and size + assert!(PmemConfig::parse("").is_err()); + assert!(PmemConfig::parse("file=/tmp/pmem").is_err()); + assert!(PmemConfig::parse("size=128M").is_err()); + assert_eq!( + PmemConfig::parse("file=/tmp/pmem,size=128M")?, + PmemConfig { + file: PathBuf::from("/tmp/pmem"), + size: 128 << 20, + ..Default::default() + } + ); + assert_eq!( + PmemConfig::parse("file=/tmp/pmem,size=128M,iommu=on,mergeable=on,discard_writes=on")?, + PmemConfig { + file: PathBuf::from("/tmp/pmem"), + size: 128 << 20, + mergeable: true, + discard_writes: true, + iommu: true, + ..Default::default() + } + ); + + Ok(()) + } }