]> git.proxmox.com Git - proxmox-backup.git/commitdiff
tests/blob_writer.rs: test DataBlobWriter
authorDietmar Maurer <dietmar@proxmox.com>
Mon, 12 Aug 2019 10:05:11 +0000 (12:05 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 12 Aug 2019 10:05:11 +0000 (12:05 +0200)
tests/blob_writer.rs [new file with mode: 0644]

diff --git a/tests/blob_writer.rs b/tests/blob_writer.rs
new file mode 100644 (file)
index 0000000..db6e02e
--- /dev/null
@@ -0,0 +1,93 @@
+use failure::*;
+use std::io::Cursor;
+use std::io::Write;
+
+use proxmox_backup::backup::*;
+
+#[test]
+fn test_data_blob_writer() -> Result<(), Error> {
+
+    let key = [1u8; 32];
+    let crypt_config = CryptConfig::new(key)?;
+
+    let test_data = b"123456789".to_vec();
+
+    let verify_test_blob = |raw_data: Vec<u8>| -> Result<(), Error> {
+        let blob = DataBlob::from_raw(raw_data)?;
+        blob.verify_crc()?;
+        
+        let data = blob.decode(Some(&crypt_config))?;
+        if data != test_data {
+            bail!("blob data is wrong");
+        }
+        Ok(())
+    };
+
+    {
+        let tmp = Cursor::new(Vec::<u8>::new()); 
+        let mut blob_writer = DataBlobWriter::new_uncompressed(tmp)?;
+        blob_writer.write_all(&test_data)?;
+
+        let raw_data = blob_writer.finish()?.into_inner();
+
+        println!("UNCOMPRESSED: {:?}", raw_data);
+        verify_test_blob(raw_data)?;
+    }
+
+    {
+        let tmp = Cursor::new(Vec::<u8>::new()); 
+        let mut blob_writer = DataBlobWriter::new_compressed(tmp)?;
+        blob_writer.write_all(&test_data)?;
+
+        let raw_data = blob_writer.finish()?.into_inner();
+
+        println!("COMPRESSED: {:?}", raw_data);
+        verify_test_blob(raw_data)?;
+    }
+
+    {
+        let tmp = Cursor::new(Vec::<u8>::new()); 
+        let mut blob_writer = DataBlobWriter::new_signed(tmp, &crypt_config)?;
+        blob_writer.write_all(&test_data)?;
+
+        let raw_data = blob_writer.finish()?.into_inner();
+
+        println!("SIGNED: {:?}", raw_data);
+        verify_test_blob(raw_data)?;
+    }
+
+    {
+        let tmp = Cursor::new(Vec::<u8>::new()); 
+        let mut blob_writer = DataBlobWriter::new_signed_compressed(tmp, &crypt_config)?;
+        blob_writer.write_all(&test_data)?;
+
+        let raw_data = blob_writer.finish()?.into_inner();
+
+        println!("SIGNED COMPR: {:?}", raw_data);
+        verify_test_blob(raw_data)?;
+    }
+
+    {
+        let tmp = Cursor::new(Vec::<u8>::new()); 
+        let mut blob_writer = DataBlobWriter::new_encrypted(tmp, &crypt_config)?;
+        blob_writer.write_all(&test_data)?;
+
+        let raw_data = blob_writer.finish()?.into_inner();
+
+        println!("ENCRYPTED: {:?}", raw_data);
+        verify_test_blob(raw_data)?;
+    }
+
+    {
+        let tmp = Cursor::new(Vec::<u8>::new()); 
+        let mut blob_writer = DataBlobWriter::new_encrypted_compressed(tmp, &crypt_config)?;
+        blob_writer.write_all(&test_data)?;
+
+        let raw_data = blob_writer.finish()?.into_inner();
+
+        println!("ENCRYPTED COMPR: {:?}", raw_data);
+        verify_test_blob(raw_data)?;
+    }
+
+    Ok(())
+}