mirror of
https://git.proxmox.com/git/proxmox-backup
synced 2025-08-07 23:40:04 +00:00
datastore: test DataBlob encode/decode roundtrip
so that we can be sure we can decode an encoded blob again Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
b43845aa07
commit
69b8b4b02f
@ -562,3 +562,82 @@ impl<'a, 'b> DataChunkBuilder<'a, 'b> {
|
|||||||
chunk_builder.build()
|
chunk_builder.build()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use pbs_tools::crypt_config::CryptConfig;
|
||||||
|
|
||||||
|
use super::DataChunkBuilder;
|
||||||
|
|
||||||
|
const TEST_DATA_LEN: usize = 50;
|
||||||
|
|
||||||
|
fn build_test_data() -> Vec<u8> {
|
||||||
|
let mut data = Vec::with_capacity(TEST_DATA_LEN);
|
||||||
|
for i in 0..TEST_DATA_LEN / 10 {
|
||||||
|
for _ in 0..10 {
|
||||||
|
data.push(i as u8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn unencrypted_uncompressed() {
|
||||||
|
let data = build_test_data();
|
||||||
|
let (chunk, digest) = DataChunkBuilder::new(&data)
|
||||||
|
.compress(false)
|
||||||
|
.build()
|
||||||
|
.expect("could not create unencrypted, uncompressed chunk");
|
||||||
|
|
||||||
|
let data_decoded = chunk
|
||||||
|
.decode(None, Some(&digest))
|
||||||
|
.expect("cannot decode unencrypted, uncompressed chunk");
|
||||||
|
assert_eq!(data, data_decoded);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn unencrypted_compressed() {
|
||||||
|
let data = build_test_data();
|
||||||
|
let (chunk, digest) = DataChunkBuilder::new(&data)
|
||||||
|
.compress(true)
|
||||||
|
.build()
|
||||||
|
.expect("could not create unencrypted, compressed chunk");
|
||||||
|
|
||||||
|
let data_decoded = chunk
|
||||||
|
.decode(None, Some(&digest))
|
||||||
|
.expect("cannot decode unencrypted, compressed chunk");
|
||||||
|
assert_eq!(data, data_decoded);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encrypted_uncompressed() {
|
||||||
|
let data = build_test_data();
|
||||||
|
let crypt_config = CryptConfig::new([9; 32]).expect("could not create crypt config");
|
||||||
|
let (chunk, digest) = DataChunkBuilder::new(&data)
|
||||||
|
.compress(false)
|
||||||
|
.crypt_config(&crypt_config)
|
||||||
|
.build()
|
||||||
|
.expect("could not create encrypted, uncompressed chunk");
|
||||||
|
|
||||||
|
let data_decoded = chunk
|
||||||
|
.decode(Some(&crypt_config), Some(&digest))
|
||||||
|
.expect("cannot decode encrypted, uncompressed chunk");
|
||||||
|
assert_eq!(data, data_decoded);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn encrypted_compressed() {
|
||||||
|
let data = build_test_data();
|
||||||
|
let crypt_config = CryptConfig::new([9; 32]).expect("could not create crypt config");
|
||||||
|
let (chunk, digest) = DataChunkBuilder::new(&data)
|
||||||
|
.compress(true)
|
||||||
|
.crypt_config(&crypt_config)
|
||||||
|
.build()
|
||||||
|
.expect("could not create encrypted, compressed chunk");
|
||||||
|
|
||||||
|
let data_decoded = chunk
|
||||||
|
.decode(Some(&crypt_config), Some(&digest))
|
||||||
|
.expect("cannot decode encrypted, compressed chunk");
|
||||||
|
assert_eq!(data, data_decoded);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user