5
0
mirror of git://git.proxmox.com/git/proxmox-backup.git synced 2025-01-05 09:17:59 +03: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:
Dominik Csapak 2024-08-05 11:24:11 +02:00 committed by Thomas Lamprecht
parent b43845aa07
commit 69b8b4b02f

View File

@ -562,3 +562,82 @@ impl<'a, 'b> DataChunkBuilder<'a, 'b> {
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);
}
}